我的《程序人生》的一点看法
看了第一期杂志中的《程序人生》, 颇有感触, 也谈谈自己这几年程序人生的看法. 另外想说明一点, 技术对于从事软件行业的人而言,绝对是至关重要的, 无论对于PM还是开发人员. 当然这里的技术并非指如何编写一个控件, 如何实现一个算法.
大凡开发了几年程序的人,特别是不同类型或系统的人,对于程序语言肯定有不少经验,在解决事情时肯定也有一些心得或体会.从软件项目本身出发,个人认为如果没有技术上的重视,一个项目要做好是不容易的,在国内做项目关系当然是第一位的,从技术人员的角度出发,自然是希望自己做的东西很牛,但并不一定要使用非常独特的技术,也并非要为了某个问题寻找一个最优的解决方案.
假如一个公司或一个项目组成员真的不重视技术的发展中国家,仍然停留在以前的PB/VB/PHP中, 当然对于不同的项目或行业而言,这是有可能的, 不过从大环境来看, 如果真是这样, 那真应该为这家公司和那些技术人员的前途感到担心. 前不久在CSDN上说有个35岁的同志只会PB,虽然在公司干了N年, 结果还是被开掉的事, 事情的真实性不得而知,不过对于从事软件行业的兄弟们来说, 如果你没有把握或了解新技术的发展, 那么估计得换换岗位才能胜任了. 以前写ASP的时候采用JavaScript验证, 需要Copy/Paste代码, 而且出错了不容易调试, 现在asp.net中有自己的validate控件, 绑定后设置相应的参数即可, 无论从开发效率还是维护性方面都提高了. 但前提是必须掌握这个平台技术.
一个新上的项目采用什么平台,什么技术, 具体的公司肯定有自己的政策, 项目组内也会根据成员的能力进行评估. 但这些选择都是基于技术的, 与客户关系和项目管理的水平没有直接关系. 众所周知,WEB界面不如WINFORM界面操作复杂, 一个WINFORM的界面可能在WEB上实现时需要用几个单独的页面通过参数传递来实现. 如果从技术上说, 可能选择B/S也可能选择C/S, 出于一大堆理由, 在基于internet环境有很大用户的情况下,当然最重要的是程序的升级及维护方面, 现在尽量会选择B/S结构, 这会造成一种看法,就是现在使用C/S结构已经无路可走, 似乎所有的人都要转移到B/S结构上来. 只是,MS现在又推出了smartclient, 列出了使用SC的一大堆好处, 最重要的当然是其界面操作性和可以离线使用. 如果项目组内或公司内缺乏掌握这种技术或有这种眼光的人, 那么选择的开发平台技术将对项目造成很大的影响. MS去年又推出了visual tools for office, 对于普通用户而言, 可能使用WORD或EXCEL的时候更多, 也更得心应手, 如果用WEB或WINFORM的形式开发应用, 估计效果不是很好. 并非是在此给MS做广告, 想说明一点, 如果没有技术上的广泛了解, 那么在选择的时候肯定范围就比较窄, 掌握一门技术并非是要深入到细节, 关键是要有宏观判断的能力, 深入细节是在开发阶段每个开发人员需要掌握的.
为什么国内的程序员过了30就不好做了? 而国外40多了都有人还在从事软件开发等技术活动. 在codeproject上看见一位40多的同志还在写unittest的文章, 很是羡慕. 一个人能凭自己的兴趣工作也是一件好事. 国内的环境不同,如果你总是做技术, 看见许多新来的人爬得比你高, 薪水也比你多, 自然会产生不平衡. 大家的官位意识太重, 技术上当然就得不到发展, 操作系统, 数据库没有一个自己的, 为什么? 因为等你做到一定程度之后, 你必须得换个岗位, 否则日子不好过. 这是国内软件行业的现状, 会写代码的人到处都是, 每年都有上百万的毕业人员, 大家都在写代码, 但能有多少人坚持了五年,十年的. 项目经理不懂技术还可以依赖技术负责人, 如果连技术负责人也不行, 项目成员始终保持在一种初级水平, 那这个项目的质量就有问题了. 上层领导关心的是项目的验收, 而技术人员靠能力和技术吃饭, 只能脚踏实地做事, 把技术钻研透彻, 才可能保住自己的饭碗, 拿更高的薪水.
每个人都有自己的发展方向和目标, 但并非每个人都适合做PM. 如果做技术,你就必须把握新技术的动向, 并一定要精通, 但这些新的技术可以开阔视野, 在思考问题的时候可以拓宽思路. 也许这里的"技术"用"思想"一词更准确些, 要在新的技术中磨练自己, 提升自己的思想, 将各方面的知识融会贯通. 孔子说"学而不思则殆, 思而不学则为罔", 如果不学新的技术, 没有去实践, 只是在那里想什么是设计模式, 估计要升华自己的思想还是有困难的.
如果不是想在技术上有所突破, 只是想做个"人上人"的角色, 那还是趁早学点PMP之类的东西.