程序员如何把控自己的职业
时代的趋势和认识自己
- 自动化加规模化,从而降低成本,提升效率。
- 培养兴趣,再难再累不会放弃,要有时间观念,做计划,懂统筹、多总结、举一反三,自己找答案,总结一些套路,勤奋。
需要什么样的人
- 技工:码农,不是真正的工程师,只是电脑操作员。
- 特种工:懂原理,有解决问题的能力、套路和方法。
- 工程师:使用技术把活儿做好,做事又稳又快,可以做出很多称手的工具和方法论。
- 设计师和架构:主要开发工具、框架、模式,提升软件开发和维护效率,提升用户体验,提升稳定性、性能、代码重用等,总的就是降本增效。
- 经理:组织团队、完成项目、创造利润,粘合剂。
需要的能力
0 – 对于相关的技术领域还不熟悉
1 – 可以读懂这个领域的基础知识
2 – 可以实现一些小的改动,清楚基本的原理,并能够在简单的指导下自己找到更多的细节。
3 – 基本精通这个技术领域,完全不需要别人的帮助
4 – 对这个技术领域非常的熟悉和舒适,可以应对和完成所有的日常工作。
对于软件领域 – 有能力开发中等规模的程序,能够熟练和掌握并使用所有的语言特性,而不是需要翻书,并且能够找到所有的冷知识。
对于系统领域 – 掌握网络和系统管理的很多基础知识,并能够掌握一些内核知识以运维一个小型的网络系统,包括恢复、调试和能解决一些不常见的故障。
5 – 对于该技术领域有非常底层的了解和深入的技能。
6 – 能够从零开发大规模的程序和系统,掌握底层和内在原理,能够设计和部署大规模的分布式系统架构
7 – 理解并能利用高级技术,以及相关的内在原理,并可以从根本上自动化大量的系统管理和运维工作。
8 – 对于一些边角和晦涩的技术、协议和系统工作原理有很深入的理解和经验。能够设计,部署并负责非常关键以及规模很大的基础设施,并能够构建相应的自动化设施
9 – 能够在该技术领域出一本经典的书。并和标准委员会的人一起工作制定相关的技术标准和方法。
10 – 在该领域写过一本书,被业内尊为专家,并是该技术的发明人。
– TCP/IP Networking (OSI stack, DNS etc)
– Unix/Linux internals
– Unix/Linux Systems administration
– Algorithms and Data Structures
– C/C++
– Python
– Java
– Perl
– Go
– Shell Scripting (sh, Bash, ksh, csh)
– SQL and/or Database Admin
– Scripting language of your choice (not already mentioned) _____________
– People Management
– Project Management
怎么获得这些能力
- 打好基础:程序语言、系统原理、中间件、理论知识
- 学习效率:与人讨论、自己动手实践、教授别人,是为主动学习。(开个博客吧)
- 挑选一手知识和信息源。
- 注意原理和基础。
- 使用知识图谱。
- 学会举一反三。
- 总结和归纳。
- 实践和坚持。