在互联网公司,后台的可扩展性,高可用性,灵活性,安全性是公司的一个重要成功因素。对于后台程序员的综合素质要求自然就要比客户端开发人员更高。
基本能力
- 代码书写规范,有代码洁癖[1]。
- 永远相信是人写的代码就会有bug,测试充分。
- 对于自身的代码要求高,重构的意愿强烈。
- 至少对一种程序语言的精通。
- 这里的精通并不是用了半年就可以在简历上书写对某某语言的"精通",而是彻底了解语言的所有特性,善于利用程序语言带来的便利,规避程序语言的不足。
- 对基于语言特性的设计模式顺手拈来,比如 Java的设计模式[2]。
- 善用变量名和过程名表示注释,名词前后保持一致,不会刚用
people
表示用户,之后又用user
表示。 - 至少掌握一门外语,阅读能力过关,阅读原版文档和帮助文件没有障碍。
- 熟悉计算机组成原理,缓存,内存,硬盘,网络的访问延迟数量级熟知在心。
- 熟悉操作系统原理,对于并发,多线程的了解,并不仅限于程序语言的实现层面
- 灵活使用至少1种脚本语言,比如shell,python
- 能承受压力下工作,对于半夜解决问题和连续加班无怨言。
进阶能力
- 对于书写的代码消耗空间和时间有精准的认识和苛求
- 实现问题所写的代码负载能力是当前系统规模的10倍以上,而不是只求简单解决问题
- 对当前系统要求高,不断寻找当前系统中的弊病并能动手解决
- 可以迅速找到次优解决方案和最佳解决方案解决问题,能根据不同的场景进行灵活选择
- 求知旺盛,不断挑战自己的技能实现,以顶级程序员的能力要求自己
- 对于安全性嗅觉敏锐
- 善于总结,经常维护自己的技术博客
- 数学能力强,喜欢研究算法[3]
高级能力
- 疯狂的喜爱编程而不是视其为谋生手段
- 在多个开源社区贡献代码
- 白帽子黑客,擅长攻击和防范
- 经常有大神般的突出行为,比如可用1天的代码实现其它人1周的coding工作量
总结
认真你就赢了