程序员的使命、价值和工作思路

Posted on Fri 14 May 2010 in 我思

最近在和一些同事聊天,有些经验体会由于没有很好的抽取整理,表达起来模糊不清,不成体系。昨天早上看到新阳撰写的两篇博客,发现他把我想表达的意思说得非常清晰明了。接合之前的一些资料,于是有了这篇文字。和广大程序员分享。

1. 程序员的使命

  • 实现
    • 实现产品
    • 给产品的实现更多的可能性
  • 用户体验
    • 提高可用性
    • 提高性能
  • 成本
    • 降低固定资产投资/减少运营费用
    • 提高开发效率

2. 程序员的价值

  1. 把控需求
  2. 应用新技术

把控需求这块是重中之重,需求没做好,会降低系统的稳定性、可维护性、开发速度、处理业务的性能,更会增加改进的难度。 把控需求的工作,体现在这么几方面:

  1. 发 现需求。从职能划分上看,这个职责应该是产品经理的职责,他们机敏的大脑每秒钟都会迸发出n多的点子,经过分析筛选和市场试验,他们把其中最有可能成功的 拿出来交给程序员。但还有很多程序员,他们直接面对业务人员,这时候提出来的需求很多是需要甄别的,需要排除自身存在矛盾的需求、成本无法接受的需求,并 且说服业务人员接受。这项工作很艰巨,但也很有成就感,因为其中的技术含量也很高。如果某个程序员觉得自己很擅长于做这种工作,请告诉我,我推荐他来我们 这里当产品经理。在和业务人员一起发现需求时,最重要的一点是现搞清楚业务人员到底要做什么。
  2. 把 业务规则转化成系统逻辑。有的工程师面对的是技术出身的产品经理,他拿到的是已经转化好的程序可以实现的系统逻辑,这样的程序员有可能是很幸福的,也有可 能很不幸,主要看他的思路是否和这个帮他做了转化的人完全一致。从业务鬼子到系统逻辑,中间要做很多权衡和判断,资深的程序员往往会给出实现最简单的系统 逻辑,最终形成使用系统逻辑描述的需求。

应用新技术,体现在这么几个方面:

  1. 好的技术会有好的用户体验: 让最终用户使用得更方便和舒服;系统的性能更高
  2. 好的开发技术能降低成本:体现在提高开发速度,能降低开发代价,提高系统的可维护性

3. 程序员的工作思路

  1. 把重复的工作交给机器
  2. 说服业务人员他现在所做的事情机器无法帮忙
  3. 创造让他人工作的系统

弄清楚自己的价值所在后,就要搞清楚工作思路了。

把重复的工作交给机器,能够满足我们利用技术,提高生产力的目标;

虽然我们都很乐观,但依然有很多事情没有办法交给机器去做,这个时候沟通就很重要了。其实也不难,有些时候只要把道理讲清楚了,业务人员也是能理解的;

最棒的点子就是创造让他人工作的系统了,是把重复的工作交给机器的升华。系统是我们智力的延伸,能够在已经约定好的业务逻辑范围内,不用开发人员参与,就把一个工作给做好了。这是我们价值的综合体现。我们可以继续探讨一些系统演进的动力:

  • 来源
    • 流量的增长
    • 产品需求的复杂化
  • 发现的途径
    • 监控
    • 变更和发布记录
    • 实现当中发现的问题
    • 项目管理中发现的开发效率问题

4. 参考资料