`
tomcat_oracle
  • 浏览: 311498 次
社区版块
存档分类
最新评论

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

    博客分类:
  • Java
阅读更多

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
14
分享到:
评论
3 楼 mahai5058575 2015-01-18  
程序员应先学好数学,特别是数数
2 楼 bonait 2015-01-17  
同意,www.zipin168.com
1 楼 511039003 2015-01-17  

相关推荐

    修炼一名程序员的职业水准

    假设你是一名软件专业毕业的本科学子,如何在工作中修炼成为一名有较高职业水准的程序员呢,本文试图总结作者从事15年软件开发工作的感想,希望对有志成为职业程序员的人有所帮助,并借此机会感谢原昆明工学院计算机...

    python安装步骤详解.zip

    Python是一种高级、解释型的编程语言,由荷兰程序员Guido van Rossum于1991年推出。它具有简洁、易读的语法,适用于各种应用领域,如Web开发、数据分析、人工智能等。 Python的设计哲学强调代码可读性和简洁性,...

    程序员考试刷题-coursera_compilers:coursera_compilers

    程序员考试刷题编译器 由和 本课程将讨论当今在编程语言编译器实现中使用的主要思想。 您将学习如何将用为人类设计的高级语言编写的程序系统地翻译成更适合机器的用低级汇编编写的程序! 关于课程 本课程将讨论当今...

    xml与反射.txt

    一条出路,那就是努力努力再努力,成为高级程序员,专门开发傻瓜软件,让其他程序员 到一边凉快去~ 3 使用过哪些xml解析 XML是一种通用的数据交换格式,它的平台无关性、语言无关性、系统无关性、给数据集成与交互...

    python编程技术讲解(1).docx

    作为一种高级编程语言,Python在科技领域、互联网和AI领域有着非常广泛的应用,已经成为程序员必备技能之一。那么,如何学习Python编程技术呢?下面将分步骤介绍: 1. 准备工作 在开始学习Python编程技术之前,我们...

    .NET Reflector6.5.0.135(2010.11.04前最新反编译工具,源码查看)

     Reflector的出现使.NET程序员眼前豁然开朗,因为这个免费工具可以将.NET程序集中的中间语言反编译成C#或者Visual Basic代码。除了能将IL转换为C#或Visual Basic以外,Reflector还能够提供程序集中类及其成员的概要...

    c#学习笔记.txt

    若要在一个用 @ 引起来的字符串中包括一个双引号,请使用两对双引号:@ 符号的另一种用法是使用碰巧成为 C# 关键字的被引用的 (/reference) 标识符。 8, 修饰符 修饰符作用 访问修饰符 public private internal ...

    C#微软培训资料

    <<page 1>> page begin==================== 目 目目 目 录 录录 ... 2000 年 6 月 22 日 不论对 Microsoft 还是对整个 IT 业界都将成为值得纪念的一天 这一天 微软公司正式推出了其下一代...

    leetcode2-campus-interview-guide:校园面试的60天学习挑战

    成为一名优秀的程序员必须遵循哪些步骤? 第一天 建议 Java 入门 - 第 2 天:选择您想学习的语言的时间 Java 入门 - 第 1 步:Java 简介 - 观看课程的“简介”部分 第 2 步:在您的机器上安装 JDK 和设置 - 按照本...

    SDC-BIDS-dMRI:dMRI简介

    它是一个免费的开放源代码软件,相对容易被新程序员使用。 此外,使用Jupyter Python包,可以保留交互式代码分析日志-这就是我们将在研讨会中使用的。 使用Jupyter笔记本可以使您记录分析中的所有步骤,从而提高...

    编程高手箴言(中文完整版)(13M)

    1.2.2 初级程序员和高级程序员的区别 7 1.2.3 程序员是吃青春饭的吗 9 1.3 正确的入门方法 11 1.3.1 规范的格式是入门的基础 13 1.3.2 调试的重要性 17 1.4 开放性思维 18 1.4.1 动态库的重要性 19 1.4.2 程序设计...

    软件工程知识点

    在软件项目进行过程中,需求分析是从软件定义到软件开发的最关键步骤,其结论不仅是今后软件开发的基本依据,同时也是今后用户对软件产品进行验收的基本依据。 软件开发期 在对软件规格完成定义以后,接着可以按照...

    计算机程序的正确定义

     怎样成为一名程序员  第一阶段:掌握一种编程语言  学习内容:学习任意一种主流的编程语言。例如C++语言。  学习目标:熟练掌握一种语言的语法和基本的编程技巧。  学习时间:3个月左右  注意事项:编程...

    JAVA上百实例源码以及开源项目源代码

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...

    JAVA上百实例源码以及开源项目

    笔者当初为了学习JAVA,收集了很多经典源码,源码难易程度分为初级、中级、高级等,详情看源码列表,需要的可以直接下载! 这些源码反映了那时那景笔者对未来的盲目,对代码的热情、执着,对IT的憧憬、向往!此时此...

    Cisco IPv6网络实现技术

    《Cisco IPv6网络实现技术(修订版)》介绍了CiscoIPv6的实现技术,以及在Cisco路由器上设计、配置、部署和...这部分还提供了一些帮助ISP了解在IPv6 Internet上成为IPv6提供商的步骤和规则。第五部分包括附录和术语表。

    Visual C++ 2005入门经典--源代码及课后练习答案

    此外,本书各章后面的习题将有助于读者温故而知新,并尽快成为C++高效程序员。...   作译者  Ivor Horton是世界著名的计算机图书作家,主要从事与编程相关的顾问及撰写工作,曾帮助无数程序员步入编程的殿堂。他...

    [ASP.NET.4揭秘(卷2)].(.ASP.NET.4.Unleashed).谭振林等

    全书分为两卷,本卷主要介绍高级的ASP.NET4知识,内容包括安全、创建ASP.NET应用程序、创建自定义控件和客户端AJAX等。《ASP.NET 4揭秘(卷2)》适合各层次ASP.NET开发人员阅读。 编辑推荐 《ASP.NET 4揭秘(卷2)》:...

Global site tag (gtag.js) - Google Analytics