关于技术的反思
自以为搞技术多年,究竟什么才是技术?
掌握一种或者多种编程语言?
熟练Linux各类神操作?
深入研究某几种开源软件源码?
或者是根据业务诉求进行组件拼装,定义各种规范协议,美其名曰架构设计?
这些东西其实如果你会,别人迟早都可以做,只是时间问题,这还叫技术吗?
什么才是真正的技术呢?
我觉得至少有两样东西算技术。
其一是算法
要想在软件开发中巧妙运用算法绝对是需要动脑子的。
学习和研究算法本身就需要脑子的,靠搜索引擎复制粘跌是没多大用的。
有效运用算法更是需要动脑子的。
我看见很多搞Java或者其他语言的人,大部分工作都不会涉及到算法,谁都可以做,只需要通过搜索引擎搜索资料,短暂学习就能上手。
这算技术吗,我曾经做过很多这样的事情,这类工作是有价值的,但不是稀缺的,也不是难以模仿的。
当IT行业的从业者年纪逐渐增大时,还干这种搜索简单资料然后学习上手、年轻从业者也能干的活,如何体现你们竞争力和价值?
其二是设计
成功的软件架构设计也是技术。
我的经验,大公司的高级别的员工在大平台和人力资源充足的情况进行架构设计,往往能成功;同样的人换到小公司做架构设计,往往各种条件限制,落地都困难,更别说上线。这两种情形都不算成功的架构
成功的架构必然是在人力资源适当而不是过度的情况下,能满足业务需求,并落地上线的架构。真正的架构,技术含量在于:
1、需要综合考量各种因素,既要能满足业务需求,也要有一定灵活性和扩展性,有的时候还要考虑性能,这三点要求设计架构的人技术不仅要广,还要深,思维严谨缜密。
2、人手是否合适够用也是必须要考虑到的重要因素。凡是涉及到需要进行架构设计的系统基本不可能一个人完成,除非是维护性的重构。那么就必须要考量人力资源,当前是否有这样的人,如果没有,能否及时招聘到。这往往涉及到工资成本和时间成本的统筹。
上下求索
国外的程序员为什么能干到老,根本原因并不是因为他们国家的制度有多优越,而在于他们做的事情,从一开始就是技术性的工作。
去看看TCP/IP的发展史,去看看JDK的源码,去研究各类优秀的开源软件吧,哪样是国内的所谓程序员最初设计发明主导出来的?
有人会说中国的IT从业者加班太多,房贷什么的经济压力大,没有时间研究,或者中国教育落后之类的种种原因。姑且认为这些因素都合理又有什么用呢?
后果还是要自己承担。后过就是越老越没价值,严重吃青春饭。承受这些后果的人并不是开发商或者政府,也不是教育机构,而是广大IT从业者自己!