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


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年时间才能成为一名可靠的高级开发人员。你付出的各种投资最后必将给你带来巨大的回报。软件工程师的钱途很美好,其就业市场的需求一直居高不下,薪资水平也根据经验程度在提高。这是一个快速增长且相对较新的领域。软件工程师的每一天都在面临挑战:挑战改变人们的生活。来吧,各位软件工程师,首先挑战成为一名高级软件工程师吧!

成为优秀高级程序员的10个要点相关推荐

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

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

  2. 成为优秀Java程序员的10大技巧

    来自:http://geek.csdn.net/news/detail/114500 Java程序员有许多应遵循的守则或最佳实践方式.本文概述了每个开发者最应该遵循的10条守则或戒律,如果不遵循它们, ...

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

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

  4. 如何从初级程序员变成高级程序员?赶紧看一看

    高级程序员是一名犯过其领域内所有可能犯到的错误的专家. 如果按照工作经验对软件开发人员进行分类,可能是这样的: 初级:2-3 年工作经验 高级:10 年以上工作经验 中级:介于初级和高级之间 这种按工 ...

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

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

  6. IT行业培训必读 优秀程序员的10个习惯

    在这个世界上,有数百万的人热衷于软件开发,他们有很多名字,如:软件工程师(Software Engineer),程序员(Programmer),编码人(Coder),开发人员(Developer). ...

  7. 怎样做一个优秀的程序员?这10个问题ChatGPT这样说 ……

    本文目录 1 怎样做一个优秀的程序员? 2 怎样成为优秀的架构师? 3 怎样写容易阅读的代码? 4 怎样做项目管理? 5 怎样学习计算机程序设计? 6 怎样提升个人影响力? 7 怎样提升认知? 8 程 ...

  8. 寻找优秀的程序员之实战指南-2

    寻找优秀的程序员之实战指南 --选自<软件随想录:程序员部落酋长Joel谈软件> [好消息]本书今天(12.10)互动有货,感兴趣的朋友可以 逛逛去 [续]http://blog.csdn ...

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

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

最新文章

  1. [Android动画] 帧动画-获取帧数( getNumberOfFrames)七
  2. python使用imbalanced-learn的OneSidedSelection方法进行下采样处理数据不平衡问题
  3. windows下安装composer方法
  4. MyBatis多数据源配置(读写分离)
  5. 7-26 Windows消息队列(25 分)
  6. 每天进步一点点《ML - 逻辑回归》
  7. VC2010 MFC文档类菜单快捷键无法加载问题
  8. 使用百度API实现语音识别——in python
  9. oracle 用多个常量表示某个字段的值
  10. git上传本地文件方法
  11. 五边形组合包络图matlab,华中赛基于遗传算法的钢构件排料问题.docx
  12. mkfs.ext3 快速格式化_U盘数据快速恢复
  13. Centos 下安装 文泉驿 字体 Odoo
  14. 2021年西式面点师(初级)考试平台及西式面点师(初级)模拟考试
  15. axure强制签入签出
  16. 412.FizzBuzz
  17. 安装python包的时候文件夹权限报错:InvalidArchiveError(“Error with archive D:\\anaconda\\pkgs\\cudnn-8.4.1.50-h)
  18. 大一的第三次作业,/(ㄒoㄒ)/~~
  19. 主编编辑器如何插入动图?
  20. 线性分类器良恶性乳腺癌肿瘤预测

热门文章

  1. python圆柱体,用PYTHON将圆柱体分散到3D XYZ点数据
  2. oracle没有groupby,oraclegroupby之后还可以groupby么
  3. CMake的几种Include
  4. 天刀各大区服务器位置,数据帝玩家统计 天刀全区活跃地图展示
  5. 基于MATLAB的面对对象编程(3)——事件和响应
  6. 12. Leetcode 350. 两个数组的交集 II (数组-分离双指针)
  7. 定位系列论文阅读-RoNIN(二)-Robust Neural Inertial Navigation in the Wild: Benchmark, Evaluations
  8. NTU课程:MAS714(4):贪心
  9. leetcode 目录
  10. tableau必知必会之拖拽功能失效是怎么回事