不少的新的语言与技术来来去去,作者不是要你别去学习新事物,而是不要因为有太多的新事物而恐慌或是自我放弃。 持续钻研你目前在学习的,并且可以每年挑一些你有兴趣的项目深入了解。
[反观我自己]:各种后端与前端语言来来去去,我把时间花在学习 Python(会持续), Ruby,Scala(会持续)与 Golang(会持续)。 透过使用 Golang 可以有更多的时间去了解系统架构与直接面对问题,让写程序变得更有趣。
为了维持原文的意思,我还是使用星系这个字。 这边指的是你学习跟从事的技术要慎选,举例而言,微软星系(泛指: .Net、C# ....)或是 Apple 星系(Objective C++、Swift ... )。 慎选你喜欢的星系,因为那会影响你未来的发展。
[反观我自己]:过去十年主要针对微软星系,目前主要就是后端的 Ubuntu 星系 ,各种后端程序语言都是我目前主要的重点,当然还有 Docker 相关技术。
作者认为如果你喜欢一种程序语言、一种架构,你就需要好好的了解它的由来与故事。
[反观我自己]:比如说我喜欢 Golang ,我就应该要了解以下的一些问题:
Golang 是谁发明的?
Ans:由 Google 内部的三位大神 Robert Griesemer,Ken Thompson(C 语言的共同发明者)与 Rob Pike(UTF-8 的共同发明者),在 2007 年于 Google 内部共同起草发明。
他主要解决什么问题? 为何以前做不到?
新增函式库不是一个正确的方向。
需要从新思考整个架构来开发新的程序语言。
Go fast!
Make programming fun again.
世界在变,但是系统语言却已经十年没变。
系统语言往往编译过久。
Ans:根据第一份Golang Talk
原因为:
为何以前做不到:(在旧的程序语言上做不到)
目前这个技术的最新状况如何?
Ans:Golang 目前是 1.6.2 (2016/05/03) ,并且支持 HTTP2 并且可以透过 gomobile 在手机上也可以使用相关套件。
不论你喜欢哪些新的技术或是新的程序语言,你都应该持续的学习,里面并且建议:
每年学习一个新的程序语言。
每年读六本书。 (作者推荐 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。
这边指的不是一定要开堂授课,你可以写一篇部落格来讲解你学习的新事物,因为教导是最好的学习方式。
[反观我自己]:还好部落格从来没停过,个人也认为写部落格的过程可以让我不断地检视我了解的部分,并且弄懂所有的细节(希望! ),不过还是希望能够多多指导其他人(比如说 meetup 或是 talk)。
不要去期望软件公司会给你任何职涯的规划,相反的不少公司会将你认为是另外一种的劳工,只会将你放在你擅长的位子,所以也有软件公司变成血汗工厂的相关文章。 作者同时也认为开放性座位对于需要高度脑力工作的软件工作者是一种最不好的设计(使用 “cancer” 这个词)。 而对于工作上的指派,作者也建议大家应该要好好了解每个任务的内容. 有任何疑问应该要提出来讨论,对于不了解的事物盲从是最不好的,应该不惜抗拒权威或是离职才是正确的选择,不要让这样的工作风气扼杀了你的热情。
Myth: Open offices result in massive collaboration.
Reality: 2 people loudly collaborate; 30 must wear headphones to get any work done.
— Jochen Wolters (@jochenWolters) 2016 年 4 月 7 日
[反观我自己]:我一向对于任何”不合理”的任务指派都会有意见,甚至不断地提出抗议。 (当然结果可能都不好! )但是如果因为这样就不提出,那么我们还剩下什么呢?
这篇是要大家充分的了解自己的市场行情(也就是薪水),根据这篇文章通常一个软件工程师应该要能创造出他自己薪水等级的十倍价值。 事实上可能远远不止如此,所以作者建议我们要勇敢地去争取更多的薪水,甚至你可以公开你的薪水等级,让更多人知道你是否被低估(或是高估)任何(自认为)有你相同能力的人,都应该拿到一样的待遇。
[反观我自己]:这件事情还真是难做到,在一间公司待久之后,最容易降低的就是薪水提升的幅度。 这件事情还得努力学习,让自己的市场价值更高. 同时我们也要不断检视,我们自己能不能创造出自己薪水的十倍价值。
这边我的解读可能跟作者原先的不同。 他有提到肤色与种族的优势,但是我想到的却是你的职位,你可能会听到许多来自于部下或是后辈的建议(或是批评)。 不要快速地想要反驳或是抵制,充分的了解过后,或许可以坦诚自己的见解或许是有盲点的,必要时甚至可以道歉并且快速修正。 如同许多书上有提到的:「你雇用一个员工,一定是要比你还强的,这样你才能将事情交给他办,你自己做更需要更大视野的任务。 」
[反觀我自己]: 參加社群後,最容易有這種感覺:太多令人欽佩的後輩了,每個人都有著淵博而清楚的知識。我們不需要否認,更不需要去挑惕或是批評,我們要謙虛的接受並且吸收,成為我們自己的養分。
作者認為 LLVM 會是下一個重要的資訊業的星系(Galaxy),目前已經有許多的程式語言支援 LLVM 了。所以作者建議我們可以花一些時間去了解,或許去學習相關的程式語言。
[反觀我自己]: 雖然 Python 與 Swift 都有學習,但是還不是我最上手的程式語言之一。這一個部分我會好好謹記於心,好好學習。
作者在 2000 年就覺得 .NET 會引領接下來的幾年,在 2007 年 iPhone 的發表會 就了解他的相關技術會是緊接著幾年的發展趨勢。
當然,這是作者的直覺。但是,你也應該充分地相信你的直覺,並且努力的去追求與學習。
[反觀我自己]: 我在 2014 年開始學習許多不同的程式語言, Python, Ruby, Objective C, Java, Swift, Scala 與 Rust。最後學習到 Golang,我直覺認為 Golang 會是 Server-side(或是說 Service-side)最重要的程式語言之一,所以我會努力學習。
这边很推崇好的 API 设计是很重要的,不仅仅影响 server 与 client 的沟通,更会影响到好的软件质量。 也提出chunky is better than chatty(简单的说:就是不要将 API 拆的太精简,使得 API call 需要往来相当的多次。 )
同时作者也建议不要太依赖 REST ,不仿看看socket.io, ZeroMQ, RabbitMQ, 或是 Erlang。 并且也应该开始架设自己的机器人。
[反观我自己]:没有想过,原来 chunky 的设计准则在某些状况下竟然比 chatty 更好,这得好好学习。 我有架设自己的机器人来帮助我处理一些日常服务器维护的琐碎事项。
永远要秉持着 KISS 原则(“Keep it short and simple”)来处理任何事情. 面对困难或是负责的事情,有着不少工具可以帮助你将设计简单化。
[反观我自己]:我一直认为能够越有能力的人,越能够将复杂的事情简单的讲解,或是写成一段简单的程序代码来实现,这个能力是我们都要不断学习的。
「年龄永远不会是一个问题,只要你的心不断催促你持续写程序,持续制造新的东西,你永远都会是年轻的。 」
这是作者给我们的结论,他也希望我们能够保持一颗年轻的心,不断学习。 2016 是一个崭新的一年,有着许多新奇的事件发生:微软拥抱 Ubuntu,并且让 SQL Server 在 Linux 上执行,人工智能(AlphaGo)的大反攻。 我们不会知道有什么将发生,但是他希望我们都记住这些精神,并且微笑向前。