通过对数十位优秀程序员同事的了解,我发现优秀的程序员往往具有以下5个技术特征。
1、必精一门语言
无论你是从事 Java、Python、Golang、C++,Java等等任何一种语言开发,你都得对自己所在的语言体系拥有超过百万行的代码累积,同时又兼会其他语言至少 1-2 门,不过这只是优秀程序员的基本要求,你还有必要熟悉多个专业语言的大型开源系统,能够对开源系统进行代码修改和修正,保证自己在社区的活跃度,高薪程序员对于设计模式非常了解,并且能在日常的开发工作中熟练应用。
2、精通 Mysql
Mysql 作为最常用的持久化数据库系统,在 OLTP 领域可以说是一骑绝尘,高薪优秀的程序员往往都不只会写个 SQL,还掌握了诸如 Mysql 集群搭建维护、主从同步机制、存储引擎特性、Mysql 存储过程及事务使用,及隔离级别等等内容。
除此之外,非常了解数据库的 ACID 理论能够处理复杂业务下的建模问题,同时在高并发和高吞吐下的数据库设计与优化问题,没这两把刷子可是不行的。
3、精通 Redis 缓存及消息队列
高级别的程序员对 Redis 使用场景,甚至 Redis 的锁机制,错误恢复等,都很了解。可以轻松应对千万级高并发请求。
4、大多数精通算法,至少了解基础算法
很多拥有高薪的程序员,能够准确挑选合适的算法,应对复杂的业务逻辑。对于算法时间和空间的复杂度都有清晰的思维。多数都有刷 LeetCode 的习惯,面试之前会留够时间刷算法题。
5、多数懂数据分析工具和开源系统
年薪百万的程序员几乎都对云计算与大数据的深刻认识,了解大数据系统,并且熟知云计算中 流量负载均衡,弹性扩容。他们中多数都已驱动类似 Hadoop、Spark、Flink 这种开源系统进行规模较大的数据处理工作。并且熟练使用Nginx作为高性能负载均衡和流量调度机。
除开以上的五种技能,多数程序员还拥有比较强的自学能力,能进行阶段性的自我提升。如果你也是一名开发人员,你觉得自己的薪资处在什么水平呢?