大程序员指南--由内至外篇

如何成为大程序员在代码的世界挥洒自如,随意进退?不是仅仅需要编码能力,需要各种能力组合的综合知识体系,好比三围协调的一个人绝对比一个畸形身材的人形体更好看。自我的内部能力到位才能做到由内至外,下面聊聊如何提高自我素质和技术技能。

首先了解和使用UNIX/Linux操作系统。作为最安全高效的系统(没有之一),绝大多数的应用服务都运行在Linux服务器上。了解你的应用程序运行的操作系统能够帮助你更好的开发,就好像两个歌手都唱的好,可是一个能在Live表演,一个只能在KTV表演,你觉得哪个更行?不过如果你是.NET的开发者或者少数派系统base的开发语言使用者可能有些特殊,尽量了解.NET Framework 或者你工作的操作系统吧。虽然.NET 也有在Linux上的虚拟机但是感觉怪怪的,毕竟没有在windows上直接运行自然高效,再加上2003的安全确实是很大的隐患,这也是我使用.NET 系工作过很长一段时间后没有选择一直使用它的原因。(完全没有引起最强语言之争得意思,.NET的使用者也会有很多优势)

学会使用两种或以上不同风格的开发语言。掌握两个或以上的开发语言能帮助你开阔更广阔的视野,习惯于一种语言编程会产生一种语言习惯可能会限制一个人的潜力,使用不同风格的语言能够帮助摆脱基于一种语言开发的固定的思维模式,这对于接受新事物的能力也是一种挑战。

学会使用数据库。基本上需要用到持久化的应用都是需要数据库的,如果工作到死都不会用到数据库那只有可能是美工,连前端工程师都能用node.js操作数据库了,所以是硬技能,特别是架构师如果让架构瓶颈产生在数据服务层可以快速帮助你搞垮一片可爱的同事。所以要了解你使用的数据库特性并更好的发挥优势,针对业务做好数据结构设计和优化的工作可以为架构的伸缩扩展带来无数的便利,也会省去无数的麻烦。真正的了解你使用的数据库需要了解到最底层的工作原理。各种关系型数据库以及Nosql数据库太多了且差异很大,因此就不展开了,有机会会分享相关的知识。

学会使用多进程/多线程开发。随着多核处理器的发展,并行编程和并发编程是扩展单个物理服务器的有效手段,但是必须要掌握足够的控制能力否则把串行的程序改成并行可能使你的程序运行更慢,所以必须了解多线程/多进程开发的关键思想才能更好的发挥单台物理机的硬件优势。不过随着分布式架构的流行对单机性能的过度深度挖掘可能对一般的工作没有那么必要,但是当你把十几台集群的服务器性能都通过简单的多进程/多线程处理能提高一个可观的百分数就真的有必要了。

分析与应急处理能力。能快速分析,定位问题发生的地方,当运行的系统故障时可以及时救场并解决问题。这可能需要比较强的逻辑分析能力,对业务的熟悉,debug定位的能力,以及长期的经验互相补充。使用好开发工具。高效的利用IDE,各种辅助工具可以帮助解决各个层面的的阻碍。代码控制的工具,开发环境搭建的工具,项目管理的软件,debug工具,抓包监控的工具,等等等。可以提高效率省去很多不必要的时间花费。

沟通与交流的技巧。学会和机器外的其他人有好的沟通,保证沟通的信息传递完整没有偏差,以及沟通的效率。工作中与产品经理,需求方,其他程序员的沟通是很重要的,遗漏掉的重要信息会造成不必要的盲目工作。所以学会沟通是很重要的,这也是快速从外至内获取知识和技能的重要方式之一。

保持英语阅读,思考和实践。不断的阅读,思考和实践是把知识编程自己的好方法。学会阅读各种技术文档是跟随开源大流的最直接高效的办法,能够帮助深入理解各种技术以及框架的核心与原理,当这些内容都已经汉化中文了说明你已经走在末端。当然一味追求新技术是不可取的,所以需要不断思考,清楚各种技术的本质与核心,这样才能真正的从内至外的变的高大上。有了完善的知识体系最后还是需要工作以及实际的实践才能知道实际情况是与设想有偏差的,当你的设想与实现的偏差越来越小的时候也就是的你对技术的控制力越来越强的时候。

以上的建议其实并不全面,不可能包罗万象,最后如果你真的想成为一个大程序员至少先写十万行代码,那么就会知道自己还缺些什么了。


本作品采用知识共享署名 4.0 国际许可协议进行许可,欢迎转载内容并请注明出处
《大程序员指南--由内至外篇》 http://io97.com/2014/07/22/10003.html