每位开发者都该看:如何在四十岁后还能继续从事软件开发?

这是一个 42 岁的开发者所写经验分享文章.而且列出一些他 18 年多身为软件开发者的经验谈.许多部分看完后都会但愿本身当时就可以了解,因此很推荐不管是新手或是老手都要好好阅读这一篇文章。前端

故事很长,一切从 1997 年开始讲起.那是一个使人怀念的年代(FF7 发售,微软入股苹果,铁达尼号电影上映),那是做者第一年身为软件开发者的年份。当时他的第一份工做是从事 ASP 而且在微软的平台上面使用 EditPlus。十八年过去,做者一共作过六份工做,其中被炒鱿鱼两次,出过两本书,从事过很多演讲。他整理了他的一些心得,但愿年轻的开发者(或是有志将软件开发做为终生志业的人)一些建议,条列以下:编程

  1. Forget The Hype (忘记各类程序语言与架构的炒做与热潮)后端

很多的新的语言与技术来来去去,做者不是要你别去学习新事物,而是不要由于有太多的新事物而恐慌或是自我放弃。持续鑽研你目前在学习的,而且能够每一年挑一些你有兴趣的项目深刻了解。性能优化

[反观我本身]:各类后端与前端语言来来去去,我把时间花在学习 Python(会持续), Ruby,Scala(会持续)与 Golang(会持续)。透过使用 Golang 能够有更多的时间去了解系统架构与直接面对问题,让写代码变得更有趣。架构

  2. Choose Your Galaxy Wisely(慎选你的星系)并发

为了维持原文的意思,我仍是使用星系这个字。这边指的是你学习跟从事的技术要慎选,举例而言,微软星系(泛指: .Net、C# ….)或是 Apple 星系(Objective C++、Swift …)。慎选你喜欢的星系,由于那会影响你将来的发展。socket

[反观我本身]:过去十年主要针对微软星系,目前主要就是后端的 Ubuntu 星系 ,各类后端程序语言都是我目前主要的重点,固然还有 Docker 相关技术。分布式

  3. Learn About Software History(了解各类软件的历史)ide

做者认为若是你喜欢一种程序语言、一种架构,你就须要好好的了解它的由来与故事。微服务

[反观我本身]:好比说我喜欢 Golang ,我就应该要了解如下的一些问题:

  • Golang 是谁发明的?

Ans:由 Google 内部的三位大神 Robert Griesemer,Ken Thompson(C 语言的共同发明者)与 Rob Pike(UTF-8 的共同发明者),在 2007 年于 Google 内部共同起草发明。

  • 他主要解决什么问题?为什么之前作不到?

Ans:根据第一份 Golang Talk

缘由为:

  1. Go fast!
  2. Make programming fun again.
  3. 世界在变,可是系统语言却已经十年没变。
  4. 系统语言每每编译太久。
  • 为什么之前作不到:(在旧的程序语言上作不到)

新增函式库不是一个正确的方向。

须要重新思考整个架构来开发新的程序语言。

  • 目前这个技术的最新情况如何?

Ans:Golang 目前是 1.6.2 (2016/05/03) ,而且支援 HTTP2 而且能够透过 gomobile 在手机上也可使用相关套件。

  4. Keep on Learning (持续学习!)

不论你喜欢哪些新的技术或是新的程序语言,你都应该持续的学习,裡面而且建议:

每一年学习一个新的程序语言。

每一年读六本书。(做者推荐 Peopleware、The Psychology of Software Programming、Facts and Fallacies of Software Engineering、Agile!: The Good, the Hype and the Ugly、Rework 跟 Geekonomics,都是好书。)

[反观我本身]:

程序语言部分: 2014 (Ruby, Scala) 2015 (Go, Swift) 2016 尚未决定.

读书部分:每一年读没有超过六本书,可是读过很多论文而且有上过一些 MOOCs。

  5. Teach(指导其余人)

这边指的不是必定要开堂授课,你能够写一篇部落格来说解你学习的新事物,由于教导是最好的学习方式。

[反观我本身]:还好部落格历来没停过,我的也认为写部落格的过程可让我不断地检视我了解的部分,而且弄懂全部的细节(但愿!),不过仍是但愿可以多多指导其余人(好比说 meetup 或是 talk)。

  6. Workplaces Suck(工做场所糟糕透了)

不要去指望软件公司会给你任何职涯的规划,相反的很多公司会将你认为是另一种的劳工,只会将你放在你擅长的位子,因此也有软件公司变成血汗工厂的相关文章。做者同时也认为开放性座位对于须要高度脑力工做的软件工做者是一种最很差的设计(使用 “cancer” 这个词)。而对于工做上的指派,做者也建议你们应该要好好了解每一个任务的内容.有任何疑问应该要提出来讨论,对于不了解的事物盲从是最很差的,应该不惜抗拒权威或是离职才是正确的选择,不要让这样的工做风气扼杀了你的热情。

[反观我本身]:我一贯对于任何”不合理”的任务指派都会有意见,甚至不断地提出抗议。(固然结果可能都很差!)可是若是由于这样就不提出,那么咱们还剩下什么呢?

  7. Know Your Worth(了解自个人市场价值)

这篇是要你们充分的了解本身的市场行情(也就是薪水),根据这篇文章一般一个软件工程师应该要能创造出他本身薪水等级的十倍价值。事实上可能远远不止如此,因此做者建议咱们要勇敢地去争取更多的薪水,甚至你能够公开你的薪水等级,让更多人知道你是否被低估(或是高估)任何(自认为)有你相同能力的人,都应该拿到同样的待遇。

[反观我本身]:这件事情还真是难作到,在一间公司待久以后,最容易下降的就是薪水提高的幅度。这件事情还得努力学习,让本身的市场价值更高.同时咱们也要不断检视,咱们本身能不能创造出本身薪水的十倍价值。

  8. Send The Elevator Down (虚心地接受任何意见)

这边个人解读可能跟做者原先的不一样。他有提到肤色与种族的优点,可是我想到的倒是你的职位,你可能会听到许多来自于部下或是后辈的建议(或是批评)。不要快速地想要反驳或是抵制,充分的了解事后,或许能够坦诚本身的看法或许是有盲点的,必要时甚至能够道歉而且快速修正。如同许多书上有提到的:「你雇用一个员工,必定是要比你还强的,这样你才能将事情交给他办,你本身作更须要更大视野的任务。」

[反观我本身]:参加社群后,最容易有这种感受:太多使人钦佩的后辈了,每一个人都有着渊博而清楚的知识。咱们不须要否定,更不须要去挑惕或是批评,咱们要谦虚的接受而且吸取,成为咱们本身的营养。

  9. LLVM(一个自由软件专案,是一种编译器的基础建设,以 C++ 写成)

做者认为 LLVM 会是下一个重要的资讯业的星系(Galaxy) ,目前已经有许多的程序语言支援 LLVM 了。因此做者建议咱们能够花一些时间去了解,或许去学习相关的程序语言。

[反观我本身]:虽然 Python 与 Swift 都有学习,可是还不是我最上手的程序语言之一。这一个部分我会好好谨记于心,好好学习。

  10. Follow Your Gut(相信你的直觉)

做者在 2000 年就以为 .NET 会引领接下来的几年,在 2007 年 iPhone 的发表会就了解他的相关技术会是紧接着几年的发展趋势。

固然,这是做者的直觉。可是,你也应该充分地相信你的直觉,而且努力的去追求与学习。

[反观我本身]:我在 2014 年开始学习许多不一样的程序语言, Python, Ruby, Objective C, Java, Swift, Scala 与 Rust。最后学习到 Golang,我直觉认为 Golang 会是 Server-side (或是说 Service-side)最重要的程序语言之一,因此我会努力学习。

 11. APIs Are King(API 是王道)

这边很推崇好的 API 设计是很重要的,不只仅影响 server 与 client 的沟通,更会影响到好的软件品质。也提出 chunky is better than chatty (简单的说:就是不要将 API 拆的太精简,使得 API call 须要往来至关的屡次。)

同时做者也建议不要太依赖 REST ,不彷看看 socket.io, ZeroMQ, RabbitMQ, 或是 Erlang。而且也应该开始架设本身的机器人。

[反观我本身]:没有想过,原来 chunky 的设计准则在某些情况下居然比 chatty 更好,这得好好学习。我有架设本身的机器人来帮助我处理一些平常伺服器维护的琐碎事项。

 12. Fight Complexity(将复杂的事情简单化)

永远要秉持着 KISS 原则(“Keep it short and simple”)来处理任何事情. 面对困难或是负责的事情,有着很多工具能够帮助你将设计简单化。

[反观我本身]:我一直认为可以越有能力的人,越可以将复杂的事情简单的讲解,或是写成一段简单的程式码来实现,这个能力是咱们都要不断学习的。

 Conclusion(结论)

「年龄永远不会是一个问题,只要你的心不断催促你持续写代码,持续制造新的东西,你永远都会是年轻的。」

这是做者给咱们的结论,他也但愿咱们可以保持一颗年轻的心,不断学习。 

在这里也给你们推荐一个学习交流群:650385180,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化、并发编程这些成为架构师必备的知识体系。还能领取免费的学习资源,如下的课程体系图也是在群里获取。

 

舒适提示

若是你喜欢本文,请分享到朋友圈,想要得到更多信息,请关注我。

有什么想法能够评论留言。

相关文章
相关标签/搜索