今天,大辉请了《程序员的职业素养》的译者之一余晟给我们进行了一次分享。

原本大辉在邮件中说邀请余晟分享正则表达式相关的内容,但是因时间仓促,而且正则也没太多好分享的。于是,余晟就结合其大学和工作上的经历给我们分享了程序员的职业素养这一话题。

余晟分享了“面向接口编程”、“学生式编程”,程序员个人努力,探究事物本质的习惯、基础学科的重要性、中美软件开发管理的差异、盛大创新院的经历、降级论等,最后总结了程序员职业素养的3个方面。

面向接口编程

某些程序员遇到有挑战性的问题,交给“高手”实现,自己仅仅是使用封装好的功能,不愿意去深究本质。

学生式编程

只考虑理想情况,对于异常情况没有进行处理,导致程序遇到异常时就罢工。

程序员的个人努力与探究事物本质的习惯

余晟第一份工作两个月就成长为Team Leader与其努力和探究事物本质的习惯是分不开的。

中美软件开发管理的差异

余晟认为中美程序员的个人实力上没有什么差距,但美国程序员开发出了很多优秀的产品,在开源领域独领风骚,而中国程序员却没有太多的表现的主要原因是国人在软件开发管理方面做的不够好,规范的流程让一群普通人能够创建较为成功的项目。

他以一个在雅虎和百度工作过的朋友的经历作为说明:雅虎的项目具有完善的流程规范,一个项目讨论过程中形成的文档,聚合导出后会发现其如论文一样规整;百度,最终则会获得各种文件格式和各种书写风格的文件。

还举了波音飞机的流水线转配,工人使用木锤安装机翼上的某个零件,这样细致规范的工作打造了复杂先进的飞机。

(这个观点我持怀疑态度。虽然规范很重要,但顶尖程序员创造更多的价值。另外欧美在开源领域做的比较好是一部分也是由于国情的原因:语言、理想主义 vs. 现实主义。相信国人在开源领域也会越做越好的。)

盛大创新院的经历

其在盛大创新院时基于Lucene开发的搜索引擎,根据业务场景,实现自定义分词系统,最终因感觉代码不规范,不好意思贡献给社区,产品也没有得到太多的使用。

(我认为这种做法是不可取的,直接贡献出去不久可以了。惭愧的是到目前我只是说说,还没有贡献过,接下来我会尝试贡献一些Drupal的代码,为Drupal社区的发展贡献自己的一些力量。)

降级论

互联网与传统行业结合能够创造更大的价值。

程序员职业素养的3个方面

  1. 扎实的基础,探究事物本质的习惯

基础是自我提升的保证。

  1. 提升自己的开发效率,自动化

程序员应该善于给自己开发各种实用的小工具来提升自己的开发效率。另外,不仅仅给自己用,还应该尝试给其他人开发工具,自用和给他人用所面临的问题会有很大的差异。

  1. 产品意识

程序员的苦逼有一部分原始是自己造成的。程序员应当具备产品意识,开发处更人性化更好的产品,减少使用者的困惑。虽然这些东西看似属于产品经理的职责,但产品经理并不能够面面俱到,另外好的产品经理属于少数。举例:1)其公司某仓库的手持扫描仪因为网络没有连接,却给出“无法解析域名”的提示,导致使用者的困惑;2)某程序修改配置后,需要重新加载配置才能够生效,按钮的文字使用“生效”而不是“加载配置”让使用者能够更加容易理解。