程序员的使命、价值和工作思路
Posted on Fri 14 May 2010 in 我思
最近在和一些同事聊天,有些经验体会由于没有很好的抽取整理,表达起来模糊不清,不成体系。昨天早上看到新阳撰写的两篇博客,发现他把我想表达的意思说得非常清晰明了。接合之前的一些资料,于是有了这篇文字。和广大程序员分享。
1. 程序员的使命
- 实现
- 实现产品
- 给产品的实现更多的可能性
- 用户体验
- 提高可用性
- 提高性能
- 成本
- 降低固定资产投资/减少运营费用
- 提高开发效率
2. 程序员的价值
- 把控需求
- 应用新技术
把控需求这块是重中之重,需求没做好,会降低系统的稳定性、可维护性、开发速度、处理业务的性能,更会增加改进的难度。 把控需求的工作,体现在这么几方面:
- 发 现需求。从职能划分上看,这个职责应该是产品经理的职责,他们机敏的大脑每秒钟都会迸发出n多的点子,经过分析筛选和市场试验,他们把其中最有可能成功的 拿出来交给程序员。但还有很多程序员,他们直接面对业务人员,这时候提出来的需求很多是需要甄别的,需要排除自身存在矛盾的需求、成本无法接受的需求,并 且说服业务人员接受。这项工作很艰巨,但也很有成就感,因为其中的技术含量也很高。如果某个程序员觉得自己很擅长于做这种工作,请告诉我,我推荐他来我们 这里当产品经理。在和业务人员一起发现需求时,最重要的一点是现搞清楚业务人员到底要做什么。
- 把 业务规则转化成系统逻辑。有的工程师面对的是技术出身的产品经理,他拿到的是已经转化好的程序可以实现的系统逻辑,这样的程序员有可能是很幸福的,也有可 能很不幸,主要看他的思路是否和这个帮他做了转化的人完全一致。从业务鬼子到系统逻辑,中间要做很多权衡和判断,资深的程序员往往会给出实现最简单的系统 逻辑,最终形成使用系统逻辑描述的需求。
应用新技术,体现在这么几个方面:
- 好的技术会有好的用户体验: 让最终用户使用得更方便和舒服;系统的性能更高
- 好的开发技术能降低成本:体现在提高开发速度,能降低开发代价,提高系统的可维护性
3. 程序员的工作思路
- 把重复的工作交给机器
- 说服业务人员他现在所做的事情机器无法帮忙
- 创造让他人工作的系统
弄清楚自己的价值所在后,就要搞清楚工作思路了。
把重复的工作交给机器,能够满足我们利用技术,提高生产力的目标;
虽然我们都很乐观,但依然有很多事情没有办法交给机器去做,这个时候沟通就很重要了。其实也不难,有些时候只要把道理讲清楚了,业务人员也是能理解的;
最棒的点子就是创造让他人工作的系统了,是把重复的工作交给机器的升华。系统是我们智力的延伸,能够在已经约定好的业务逻辑范围内,不用开发人员参与,就把一个工作给做好了。这是我们价值的综合体现。我们可以继续探讨一些系统演进的动力:
- 来源
- 流量的增长
- 产品需求的复杂化
- 发现的途径
- 监控
- 变更和发布记录
- 实现当中发现的问题
- 项目管理中发现的开发效率问题
4. 参考资料
- 有关程序员的使命,参考吴永强撰写的监控和虚拟化技术在“去哪儿”中的应用
- 有关程序员的价值,参考新阳撰写的软件开发很不同了
- 有关程序员的工作思路,参考新阳撰写的程序员应有的工作思路