论Java的架构兼谈技术的学习, 与大家共勉
今天有空, 本来想总结一下这三年的程序员生涯, 又觉得写不出什么, 就写了一点下面的东西, 与同学Info的同学分享分享
1 使用Java技术重点在架构
因为SUN公司把很多底层技术已经封装好了, 而且还不断出现各种FrameWork(很多是开源免费的, 如Apache基金下面的项目), 帮助我们建立复杂的商业应用, 而我们自己可以省去很多工作量.
2 技术是架构的基础, 只有在掌握技术才能有所架构, 否则只是空谈架构, 即使架构出来的东西也不能用
SUN封装了底层接口和出现很多优秀的FrameWork并不意味着我们不需要去钻研技术, 现在国内软件业有这样一种风气, 所谓技术无用论, 偶所在的现在和以前的公司也有这种情况. 软件公司一些人(包括一些领导)在做了两三年技术后, 觉得技术其实没什么, 就是那么点东西. 对于这点, 偶实在不敢苟同. 业务知识跟技术应该两手抓, 两手都要硬, 就我看来, 技术应该比业务重要, 但不能忽略业务知识, 空有技术也没有用处.
时刻记住技术是根本, 有了技术, 加上业务, 才构成我们的应用. 技术就像人的骨架, 而业务逻辑是人的器官, 没有骨架, 没有这个人, 没有器官, 这个人无法思考, 无法行动. 对于公司, 应该试技术为生命才对, 应该是技术推动业务, 同时业务反作用于技术, 促进技术的发展. 一个精通技术的人跟一个了解技术的人效率差别可能几十倍甚至上百倍, 比如前者做一个程序1天完成, 后者可能20天, 在完成这个程序的过程中, 可能不断有新的问题出现, 需要去解决, 而一个新的问题可能又签出另外的问题. 另外, 前者可能胜任架构一个应用, 并解决可能出现的问题, 而后者开始只能完成部分代码, 所谓coding. 这里无意贬低技术初学者, 只是觉得我们既然选择技术, 就不要浮躁, 而应该踏踏实实去做好, 不断学习才能不断成长, 不要以为自己好像学的差不多了.
同样在我们做人的态度上面, 其实每个人都好比那口井里面的青蛙, 我们所了解的就好比那只青蛙所见的天空, 所以我们都应该持以谦虚的态度, 虚心接受他人指责建议, 不要轻易指责他人, 多看看自己不足, 多了解他人世界, 多看书, 多见闻, 开阔我们的眼界心胸, 这样才能看得更宽看得更远.
回过头来再谈技术, 如果你专攻Java, 首先得好好研究Java相关的技术, 每一门语言对我们普通人来说都是博大精深, 不要轻易说自己掌握了. 其他语言的只是也对Java技术有所帮助, 所以如果你所用技术是Java, 也可以了解学习其他技术, c/cpp/. 所谓公司要有多个盈利点, 人的竞争力也一样, 但是不能铺的太广太开, 毕竟人的精力有限, 如果什么都知道个大概, 而样样不精也不足取. 这方面建议某一门技术比较精通后, 再触及其他, 在计算机领域, 技术上升到一个高度, 都有相通之处, 当你精通一门之后, 再去学习研究另一门, 会发现会容易得多, 而且深入得多.
同时这里想说的时, 作为技术人员, 有条件的话一定要多见多做一些不同的项目, 前提当然是每个项目要做好, 这样对我们的提高才是最大的. 这是我这三年工作的深切体会.
3 业务知识也是架构的基础之一, 而业务知识是依靠项目/经验/学习积累的.
业务知识是软件应用如何发挥作用的关键, 架构要真正能起作用, 没有业务知识作用是无法做到, 没有业务知识的支持, 架构只是空架子.
业务知识的获取也是一个长期的过程, 书本是一方面, 而对技术人员(而不是业务人员)来说, 项目经验才是真正的获取途径, 项目经验是如何将他人(包括书本)的知识吸收成真正的自己的知识的一个过程, 所以在做项目的过程中, 不要轻视技术的同时, 一定不能轻视业务, 认认真真才是我们应该有的态度.
4 架构是不断发展的
和任何事物一样, 架构也是不断发展的, 从现在的Java方面的FrameWork发展也可以看出, 发展的速度往往很惊人, 这就要求我们要保持对新事物的热情, 关注新技术, 总结, 并用于我们的工作.
5 架构的多样性和技术的基础性
目前架构多种多样, 新的架构不断出现, 但是架构所建立的基础技术是一致的, 所以在学习架构的时候必须抓住要点, 从基础做起, 而不是好高骛远, 学架构就马上是架构, 这种方式导致的结果最终可能是只懂皮毛, 所谓知其然不知其所以然.
6 软件工程有助于架构发展
架构好比造房子时设计图纸, 选材料. 而软件工程好比造房子这个过程使用的方法, 如果方法得当, 工期缩短, 造价降低, 而且质量保证, 还有好处是每次的方法总结有助于下一次造房子, 同时总结出来的经验能促进图纸的质量和房屋设计. |