收藏自成为优秀高级程序员的10个要点git
软件工程师的职业生涯要历经如下几个阶段:初级、中级,最后才是高级。这篇文章主要是讲如何经过10个步骤助你成为一名高级软件工程师。程序员
获得更多的报酬!由于你的薪水会随着你水平的提升而增长web
提高你的职业生涯。成为了高级软件工程师以后,就能够朝着架构师、团队负责人、CTO等职位前进shell
历经更大的挑战。随着你的成长,各类影响力也会提升。编程
软件工程是很难的。这一行业在不断变化中,因此你必须紧跟它的步伐。你必须不断地投入时间和精力,由于你须要学习的东西老是比你能吸取的多。不少新手工程师甚至都未曾意识到他们若是想要攀登行业的高峰,要学习的东西、要付出的努力得有多少。不过,不用担忧,下面我将指出一条“明路”有助于你成为一名高级软件工程师。架构
作一件事,就要把它作好。——Doug McIlroy《Unix Philosophy》框架
关于这一点,我真的是强调得不能再强调了。选择好你将与之并肩做战的专业和技术堆栈很是重要。坚持不懈,不要分心。至于应该怎么作请看下面:编程语言
坚持下去,直到掌握这门技术。编辑器
个人意思并非说除了你的主要专业之外,你就没必要熟悉其余的了。那种数一数二的软件工程师一般对其余的编程语言和技术都很是了解,固然首先他们对他们本身的主要专业了解得很是剔透。当你肯定好主要专业以后,接下来要作的就是学习,阅读全部相关的书籍、练习各类必要的技能,这可能须要不少年的时间。可是千万不要气馁,一步一个脚印,一个一个攻克难关,量变才能达到质变。关于技术,个人推荐是:Ruby on Rails之于web开发,iOS之于移动开发。这是我是以一个过来人的身份告诉你的宝贵经验。不过我仍是想补充一句,可能每一个人的口味不一样,个人经验也许并不适合你,你彻底能够选择其余的技术,不过这样的话,你要阅读的书籍可能就和个人推荐不同了。ide
《The Pragmatic Programmer 》对于咱们掌握软件是一个很好的起点。该书总结了高水平的实践探索。这与咱们使用的是什么语言/技术无关。不管你选择的是哪一种技术堆栈,其主要原理都是同样的。
你之后天天须要面对哪一种编程语言取决于你今天选择的技术。可是编程语言总有主次之分。例如,Ruby on Rails开发人员主要使用Ruby,AngularJS开发人员大多数时间用的是JavaScript。肯定编程语言、掌握编程语言对你的职业生涯发展相当重要。由于之后你天天都会使用它!推荐你先阅读有关书籍。
《The Swift Programming Language》之于Ruby开发人员,以及《Programming Ruby 》之于iOS开发人员。
选一个,而后好好学习:
再选一个,而后坚持不懈地掌握这个工具。若是你选择的是VIM,那就要成为它的主人,让它往东就往东。
我建议使用Git。下面是我喜欢的资源:Pro git——免费的在线电子书,详细讲解了git的各个方面。
将TDD添加到你的技术堆栈中。养成天天TDD的习惯。高质量的代码源于良好的测试。
对于Ruby on Rails开发人员——《Rails Test Prescriptions》
对于iOS开发人员——《Test Driven iOS Development》
随着你不断添加更多的功能,代码库也会愈来愈复杂。为了保持代码库的可管理化,你须要重构。若是你不重构的话,你很快就会进入两难境地——即便是作很小的改动都很困难、bug无法避免、没有人愿意处理这个凌乱的代码库。重构能让你的工做更加轻松。事不宜迟,赶快养成重构的习惯吧。下面这本好书能教你该怎么作:《Refactoring: Improving the Design of Existing Code》by Martin Fowler
根据你上面选择的堆栈,再学习相关的架构。我推荐Martin Fowler写的《Patterns of Enterprise Application Architecture》一书。
刚开始接触命令行的第一感受就是望而生畏。可是,一旦你学会如何使用,这将大大提升你执行一些基本任务的效率。而这自己就能让你成为一名更好的开发人员,由于你能在更短的时间里实现目标。而后你就能进入下一个水平。使用shell自动执行常见任务,创建本身的dotfiles。若是你使用的mac或者Linux发行版,那么学会shell。下面这本书由Mark Bates所写的书挺不错:《Conquering the Command Line》
只有不断地练习学到的知识,你才能真正掌握它。
众所周知,成为一名高级软件工程师是很是难的。这须要大量的时间和精力。不一样的人他们的学习速度也不尽相同,可是平均来讲,大约须要10年时间才能成为一名可靠的高级开发人员。你付出的各类投资最后必将给你带来巨大的回报。软件工程师的钱途很美好,其就业市场的需求一直居高不下,薪资水平也根据经验程度在提升。这是一个快速增加且相对较新的领域。软件工程师的每一天都在面临挑战:挑战改变人们的生活。来吧,各位软件工程师,首先挑战成为一名高级软件工程师吧!