What

软件工程师的职业生涯要历经以下几个阶段:初级、中级,最后才是高级。这篇文章主要是讲如何通过 10 个步骤助你成为一名高级软件工程师。

Why

  • 得到更多的报酬!因为你的薪水会随着你水平的提高而增加

  • 提升你的职业生涯。成为了高级软件工程师之后,就可以朝着架构师、团队负责人、CTO 等职位前进

  • 历经更大的挑战。随着你的成长,各种影响力也会提高。

How

软件工程是很难的。这一行业在不断变化中,所以你必须紧跟它的步伐。你必须不断地投入时间和精力,因为你需要学习的东西总是比你能吸收的多。很多新 手工程师甚至都不曾意识到他们如果想要攀登行业的高峰,要学习的东西、要付出的努力得有多少。不过,不用担心,下面我将指出一条“明路”有助于你成为一名 高级软件工程师。

步骤0:选择你的道路,坚持下去!

做一件事,就要把它做好。——Doug McIlroy《Unix Philosophy》

关于这一点,我真的是强调得不能再强调了。选择好你将与之并肩作战的专业和技术堆栈非常重要。坚持不懈,不要分心。至于应该怎么做请看下面:

  • 选择专业。也就是你想做的事情。例如:Web 开发、移动开发、DevOps 等。

  • 选择专业中的实用技术。例如:如果你选择了 Web 开发,那你就需要在 Ruby on Rails、Python、Django,JavaScript 和 MEAN 等之间做斟酌。如果你选择的是移动开发,则需要在 iOS 和 Android 等之间做出选择。

  • 坚持下去,直到掌握这门技术。

我的意思并不是说除了你的主要专业以外,你就不必熟悉其他的了。那种首屈一指的软件工程师通常对其他的编程语言和技术都非常了解,当然首先他们对他 们自己的主要专业了解得非常剔透。当你确定好主要专业之后,接下来要做的就是学习,阅读所有相关的书籍、练习各种必要的技能,这可能需要很多年的时间。但 是千万不要气馁,一步一个脚印,一个一个攻克难关,量变才能达到质变。关于技术,我的推荐是:Ruby on Rails 之于 web 开发,iOS 之于移动开发。这是我是以一个过来人的身份告诉你的宝贵经验。不过我还是想补充一句,可能每个人的口味不同,我的经验也许并不适合你,你完全可以选择其他 的技术,不过这样的话,你要阅读的书籍可能就和我的推荐不一样了。

步骤1:奠定基础

《The Pragmatic Programmer 》对于我们掌握软件是一个很好的起点。该书总结了高水平的实践探索。这与我们使用的是什么语言/技术无关。无论你选择的是哪种技术堆栈,其主要原理都是一样的。

步骤2:掌握你的编程语言

你以后每天需要面对哪种编程语言取决于你今天选择的技术。但是编程语言总有主次之分。例如,Ruby on Rails 开发人员主要使用 Ruby,AngularJS 开发人员大多数时间用的是 JavaScript。确定编程语言、掌握编程语言对你的职业生涯发展至关重要。因为以后你每天都会使用它!推荐你先阅读有关书籍。

《The Swift Programming Language》之于 Ruby 开发人员,以及《Programming Ruby 》之于 iOS 开发人员。

步骤3:学习框架

选一个,然后好好学习:

对于 Rails 开发人员——《Rails Tutorial 》by Michael Hartl

对于 iOS 开发人员——《iOS programming: The Big Nerd Ranch Guide》

步骤4:掌握文本编辑器/ IDE

再选一个,然后坚持不懈地掌握这个工具。如果你选择的是 VIM,那就要成为它的主人,让它往东就往东。

步骤5:使用版本控制系统

我建议使用 Git。下面是我喜欢的资源:Pro git——免费的在线电子书,详细讲解了 git 的各个方面。

步骤6:做好测试驱动开发

将 TDD 添加到你的技术堆栈中。养成每天 TDD 的习惯。高质量的代码源于良好的测试。

对于 Ruby on Rails 开发人员——《Rails Test Prescriptions》

对于 iOS 开发人员——《Test Driven iOS Development》

步骤7:将重构养成习惯

随着你不断添加更多的功能,代码库也会越来越复杂。为了保持代码库的可管理化,你需要重构。如果你不重构的话,你很快就会进入两难境地——即使是做 很小的改动都很困难、bug 没法避免、没有人愿意处理这个凌乱的代码库。重构能让你的工作更加轻松。事不宜迟,赶快养成重构的习惯吧。下面这本好书能教你该怎么做: 《Refactoring: Improving the Design of Existing Code》by Martin Fowler

步骤8:学习软件架构

根据你上面选择的堆栈,再学习相关的架构。我推荐 Martin Fowler 写的《Patterns of Enterprise Application Architecture》一书。

步骤9:展示命令行的力量

刚开始接触命令行的第一感觉就是望而生畏。但是,一旦你学会如何使用,这将大大提高你执行一些基本任务的效率。而这本身就能让你成为一名更好的开发 人员,因为你能在更短的时间里实现目标。然后你就能进入下一个水平。使用 shell 自动执行常见任务,建立自己的 dotfiles。如果你使用的 mac 或者 Linux 发行版,那么学会 shell。下面这本书由 Mark Bates 所写的书挺不错:《Conquering the Command Line》

步骤 10:code code code!

只有不断地练习学到的知识,你才能真正掌握它。

总结

众所周知,成为一名高级软件工程师是非常难的。这需要大量的时间和精力。不同的人他们的学习速度也不尽相同,但是平均来说,大约需要 10 年时间才能成为一名可靠的高级开发人员。你付出的各种投资最后必将给你带来巨大的回报。软件工程师的钱途很美好,其就业市场的需求一直居高不下,薪资水平 也根据经验程度在提高。这是一个快速增长且相对较新的领域。软件工程师的每一天都在面临挑战:挑战改变人们的生活。来吧,各位软件工程师,首先挑战成为一 名高级软件工程师吧!

作者:程序员人生

来源:51CTO

成为高级程序员的 10 个步骤相关推荐

  1. 成为高级程序员的10个步骤

    What 软件工程师的职业生涯要历经以下几个阶段:初级.中级,最后才是高级.这篇文章主要是讲如何通过 10 个步骤助你成为一名高级软件工程师. Why 得到更多的报酬!因为你的薪水会随着你水平的提高而 ...

  2. 成为优秀高级程序员的10个要点

     成为优秀高级程序员的10个要点 What 软件工程师的职业生涯要历经以下几个阶段:初级.中级,最后才是高级.这篇文章主要是讲如何通过10个步骤助你成为一名高级软件工程师. Why 得到更多的报酬 ...

  3. 成为优秀高级程序员的10个要点(转)

    英文原文:10 Steps to become a Senior Software Engineer What 软件工程师的职业生涯要历经以下几个阶段:初级.中级,最后才是高级.这篇文章主要是讲如何通 ...

  4. 高级程序员之抽象能力模型

    每一滴雨水里,都有海洋的气息:每一颗石子里,都有沙漠的影子.所以诗人才说:一支三叶草,再加上我的想象,便是一片广阔的草原.走在秋日的田野上,我想起一位诗人对老托尔斯泰的叩问:一切成熟了的都必须低垂着头 ...

  5. 10分钟学计算机,电脑运行越来越慢?程序员大牛10分钟教你学会电脑瘦身

    原标题:电脑运行越来越慢?程序员大牛10分钟教你学会电脑瘦身 你的电脑是不是越来越慢?这里让程序员大佬用10分钟时间教你学会给电脑软件瘦身,1分钟了解计算机硬件升级.分分钟让你成为别人眼中的计算机大牛 ...

  6. 为什么3年的Java高级程序员薪水仅仅8k-10k,而一个Linux底层C语言程序员两年经验就敢要1...

    为什么80%的码农都做不了架构师?>>>    为什么3年的Java高级程序员薪水仅仅8k-10k,而一个Linux底层C语言程序员两年经验就敢要10k的薪水?   由于目前国内嵌入 ...

  7. SqlServer注意事项总结,高级程序员必背。

    本篇文章主要介绍SqlServer使用时的注意事项. 想成为一个高级程序员,数据库的使用是必须要会的.而数据库的使用纯熟程度,也侧面反映了一个开发的水平. 下面介绍SqlServer在使用和设计的过程 ...

  8. 低级程序员和高级程序员的区别在哪?学会像高级程序员一样思考!

    低级程序员认为自己与高级程序员的区别:高级程序员任何功能都能编码实现, 编码速度快, 代码无 bug. 正如一惯的那样, 低级程序员之所以低级, 正是因为他们勉强能看到(或者根本看不到)事物的表象而看 ...

  9. [置顶] 完美程序员的10种品质

    完美程序员的10种品质 转载自:http://zhousir.net/ 谁是完美程序员?著名博客作家Alex Iskold在<明星软件工程师的10种特质>一文中给出这个问题的答案: 1. ...

  10. 高级程序员和低级程序员的区别

    低级程序员认为自己与高级程序员的区别, 主要是高级程序员任何功能都能编码实现, 编码速度快, 代码无 bug. 正如一惯的那样, 低级程序员之所以低级, 正是因为他们勉强能看到(或者根本看不到)事物的 ...

最新文章

  1. 前端技术周刊 2019-02-26:前端代码保护
  2. 组合数学题 Codeforces Round #108 (Div. 2) C. Pocket Book
  3. MySQL主从延时这么长,要怎么优化
  4. jsp笔记----97DatePicker日期插件简单使用
  5. JVM学习(2)——技术文章里常说的堆,栈,堆栈到底是什么,从os的角度总结
  6. jquery实现二级联动不与数据库交互
  7. 检查Python中是否存在文件
  8. 图解Kafka,一看就明白!
  9. 企业级软件协作,没有数据怎么人工智能?
  10. mac下使用自带的svn客户端上传、下载文件到服务端
  11. jmp指令流程图怎么写_西门子PLC指令
  12. 土壤类型、土壤质地、土壤养分空间分布
  13. 相机下载_SonyPMCARE, 反向工程索尼PlayMemories相机应用
  14. 利用数据库在java实现已读未读消息公告
  15. 抓包精灵NetCapture APP抓包教程《齐全》
  16. 基于ssm流浪猫狗|流浪狗宠物救助网站
  17. c语言九三字符串的字母个数,C语言判断闰年和平年
  18. javaee连接数据库出现错误
  19. 中兴MKT技术岗位介绍
  20. Hp 通过MP卡启动、关闭电源 Hp9000小型机的方式

热门文章

  1. 记住没:永远不要在 MySQL 中使用 UTF-8
  2. 互联网职场红利真的不多了~
  3. HTML判断JSON长度,javascript如何判断是否为json?
  4. linux文件监控和同步,(转)Linux下经过rsync与inotify(异步文件系统事件监控机制)实现文件实时同步...
  5. web和python哪个好_用python开发app和web哪个比较容易?
  6. java适配器模式 场景_详解Java适配器模式
  7. mysql里类似sequence_MySql中实现类似Oracle的Sequence方案
  8. pythonATM,购物车项目实战1,项目说明
  9. 帆软 FR.i18n 消息关键字或隐藏加载关键字
  10. react前端封装接口弹出错误_react+ts打包发布后报Minified React error ..这种错误