软件的本质是什么?是代码;代码是如何产生的? 是程序员写出来的,windows、office、photoshop、QQ、微信、英雄联盟,这些用户上亿世界知名的软件都是程序员在键盘上一个字母一个字母的敲出来的,是程序员创造了它们。
程序员好厉害,程序员好伟大, 程序员酷毙了, 没有程序员就没有科技发展迅速的今天
然而, 事实上并非如此。
在绝大多数公司,程序员在软件开发中所扮演的角色就是“实施”。就拿造房子来做个比喻,程序员就是负责把房子搭起来的底层民工, 团队负责人就是包工头, 至于房子造几层, 每层隔几间,窗户放在什么位置,楼梯放在什么位置,阳台在哪里,这些东西程序员都管不到,甚至很多程序员也不愿意管。程序员在整个软件开发中所处的位置就好比是民工按着设计图纸在造房子,当图纸上显示这个位置有个窗口, 于是民工就在图纸所示的位置上留一个空位作为窗户; 当图纸上说这块位置在贴上红色的磁砖,民工就在指定的位置砌上红色的磁砖。
一点都不跨张, 现在互联网行业如此繁荣,程序员多如牛毛, 虽不能说每个程序都是做着像工地上民工那样类似的活, 但是绝大多数程序员都是以类似的状态工作着, 因此, 程序员也被称之为“码农”。虽然很多程序员不愿意承认 , 认为写代码的工作比起在工地上干苦力要高端的多, 但是两者在各自领域中所处的位置意义却是相同的。
有的程序员总喜欢拿一些“高大尚”的技术自吹自擂,如高并发、大数据处理、高性能编程、多线程、网络安全、XXX编程语言等引以为傲的技术, 但事实上,会使用这些所谓的高端技术其实并不是一件很有技术含量的事情 。
会高并发, 那么你会自己开发一个像nginx这样的服务器吗?能自己实现mysql数据高并发事务模块吗?
会大数据处理,那么你能像 Jeff Dean那样发明MapReduce吗
会多线程, 那么你能自己实现操作系统的线程调度机制吗
退一步说, 不指望所有程序员都能有杰出的创造性成就, 但作为一个程序员,会使用编程语言实现各种需求, 那么他们能自己实现一门编程语言吗? 换句话说就是能自己写一个编译器吗?如果把制作编译器作用程序员入门的要求, 估计现在业内的程序员就要少百分之九十五以上。
既然做不了一个掌握真正技术含量的程序员(事实上也没有必要),那么不妨换个方向, 做一个真正的软件创建造者, 而不是被产品经理牵着鼻子走的苦力代码狗,不是一个总是听人家指挥的木头人。
程序员按着原型实现需求是一件很轻松很舒适的事情,这惯坏了很多程序员, 他们一切只按原型和需求做事, 当需求写的不明确时就会大声嚷嚷,各种抱怨各种吐槽,他们除了代码其它一概不管。 当软件开发完成以后, 这类程序员其实并不是软件的缔造者, 他们只是创造了软件的肉体而已。
作为一个程序员, 除了写代码以外, 应该将更多的精力投入到软件的功能设计中去, 解决真正的问题。 那些连代码都不会写的菜鸟,动动嘴巴就能让软件工程师干这干那,职业头衔还能带个“经理”,凭什么?程序员们不蒸馒头还要争口气呢
在多人合作开发一个软件的过程中, 程序员一定要有主人翁精神, 不做光写代码的事情,更重要的是参与塑造整个软件的灵魂。至于产品经理们,也可以让他们来写代码, 如果不愿意那就让他们去喝西北风好了