冏冏 https://www.facebook.com/yue526828
https://www.facebook.com/yue526828/posts/515822296569512
前天一份硅谷软件工程师的薪资统计被到处转贴,很多人表示入错行、生错国家。我刚好
约了以前的同事来聊天,她是一位年薪破百万的前端工程师。其他人们可能想知道的资讯
如下:
1. 资工系背景,学历优秀,刚出社会时因为没有掌握到写程式的诀窍,不太顺利,也进
过一些奇怪的公司,换了很多次工作。
2. 现在工作所用的程式语言是自学的,HTML、CSS 到 Javascript 都是毕业后自学。
3. 毕业后不知道该做什么,也没有特别喜欢写程式,是在前辈的引导下,发现自己可能
可以做前端设计。慢慢接触之后喜欢上这份工作。
4. 学生时花了 2-3 万元去上课学习设计课程,之后所有的程式语言都到网上找英文教程
自学。自认英文没有很好,实务上需要和外国人沟通时主要是抓关键字。
5. 认为前端技术不太需要数学很好,而是了解写程式的概念和逻辑。刚开始写可能会觉
得很辛苦,精通几种语言和 framework 之后应该会比较轻松。
6. 应征软件工程师职位最重要的是有作品集,没有作品,履历再漂亮也没用。公司其实
不太看你的学历,而是看你做出了什么东西。
7. 毕业 2 年后开始写部落格分享技术,每年在部落格做年度回顾,检视自己的计画完成
率。
8. 每天下班后会花几个小时写 side project,尝试和练习感兴趣的新技术,有时候也做
开源 app,把作品上传 Github。
9. 晚上 11:30 睡,早上 7:30 起床,起床后做半小时的禅定冥想。
10. 节假日的兴趣是一个人或跟朋友骑自行车踏青,限制自己每日最多摄取 1600 大卡,
搭配固定比例的营养素、有氧重训维持健康。
11. 会看一些健康运动主题类的 YouTube 频道,不认识任何的百万 YouTuber 名字,早
上会听健康主题的 podcast,有时开 Netflix 看影集和电影,把喜欢的作品写在部落格
。
12. 对钱没有特别感兴趣,但已经规划好了为自己负责,将来不依靠任何人,定期定额投
资 ETF。
13. 目前没有考虑创业,因为自认为不擅长对外沟通,还没找到能互补且信任的搭档。
14. 在 Linkedin 放了英文履历,有国外公司提供年薪 2 倍以上的 Remote 工作机会。
15. 据她所知台湾业界前端工程师也有 300-400 万年薪的,并不稀奇。
16. 非常热爱工作,愿望是 coding 到老死的一刻,在键盘前去世。
17. 给所有想入门前端工程技术的人的建议是:在 Google 打关键字 "Frontend
roadmap" 然后学吧。
https://www.facebook.com/yue526828/posts/517042269780848
非相关科系可不可以转职为前端工程师?
答案是肯定的,我们认识的许多大神都不是相关科系出身,前端技术领域比后端和硬件领
域进入的门槛低。因为技术更新得太快,好处是年轻的工程师学到一个最新的技术,搞不
好可以屌打吃 5 年老本的工程师;坏处是,这个领域非常竞争,没有持续精进自己的话
,很快就被淘汰。
我自己大学是学艺术设计的,学生时兴趣就是架设网站,在大三时买书自修学会
HTML+CSS 和一点点 PHP+MySQL,中断学习技术直到出社会 5 年后,做专案管理期间想
要更好的跟工程师沟通,所以又开始钻研后端技术。
生活没有很健康,8 点多下班回到家后,学习到半夜 2-3 点,第二天 9 点多起床上班,
但是因为年轻体力好,不觉得疲累。自己买 PHP 和 jQuery 书籍学习,大概过了 3 个月
后能看懂大部分的程式码,也能做一些简单的 debug。当时的工程师是使用 Cake 做
framework,但我觉得这套东西有点太笨重,开始练习当时很热门的 CodeIgniter,也把
CSS 换成了 SASS。
这样持续钻研 1 年左右,可以写出一整个社群网站的功能。
然后我出国了,虽然在国外读的是理工相关,但学校基本上没有教什么新的程式相关的东
西,我大多数写程式技能都是靠自修。
回国后我在南港科技园做前端,主要做 RWD 网站和手机 UI。因为写程式写得很快,每周
实际有在工作的时间大概 10 个小时不到,其他时间都在做自己的事。
加上接一些技术顾问的外包酬劳,28 岁时年薪已破百万。不过,由于我很早(20 岁)就
出了社会,跟很多大神比已经很晚了。
-
其次,当工程师有什么必要的特质?
我想这个问题实际上要问的是,领高薪的软件工程师需要有什么特质。
同样是工程师,有人月薪 3 万,有人月薪 10 万。那是当然的,比如,实现同样一个功
能,有人需要打 10 行程式码,有人只要打 3 行程式码,运作的效率都不一样,或搞不
好光是 coding 的工具都不一样。有人是用 Dreamweaver,有人是用 Vim,这速度差了
多少倍,你觉得他们薪水可能一样吗?
再比如,做完一个 app,上架后决定修改或增加一些内容,有些工程师会面有难色跟你说
,这个东西写死了不能改,要花很多时间 blah blah,有些工程师就没问题,加几行程式
码就帮你弄好了,因为他写的 framework 早就预留了扩展空间。他们薪水可能一样吗?
(当然,有时候优秀的工程师还是会把东西“写死”,通常是因为 PM 没有沟通清楚,或
是没有给足够的工时。)
再比如,有些工程师一个人做没问题,但没有人能够接手他的程式码,因为他不写注解,
naming 没有规律,design pattern 又乱七八糟,你觉得这个工程师能够加入大公司的
team work 吗?
这边顺便抱怨一下,很多公司喜欢在网站外包 cost down,我只想劝一句,一份价钱一份
货,爱找便宜的外包,就等著未来花更多的钱整个砍掉重练。我已经看过太多公司这样干
。
好的软件工程师,通常有极强的规划能力,写程式时不会满脑子只想把功能实现交差,而
是会考虑到扩展性和维护性,也就让他或是别人接下来要修改或继续写都能很轻松。
好的软件工程师,个性不一定开朗(呃)但是一定很细心,不然错字满天飞、file 乱放
在哪不记得,debug 时间都比别人长的话是要怎么按时完成任务?
好的软件工程师,通常自学能力很强,就像他们渴求程式运作正常和有效率一样,希望自
己的时间也能被有效率的运用,会追求更快完成工作的方式。所以他们会主动尝试新的
framework、新的工具,就算前置作业时间很长,但只要确定未来可以节省更多时间,投
资报酬率是确定的,他们就会投资下去。
我个人认为英文好不是必要但会是一个加分条件,因为世界顶尖的 developer 都用英文
在分享技术,如果能够用英文在 StackOverflow 之类的网站提出自己遇到的问题,一般
来说几个小时内就能得到解答,debug 速度会快很多。
另外,阅读网上的第一手英文资料,就可以比等中文翻译的同业进步得快。科技公司有时
候会看英文程度,而很多外商是用英文面试,想拿高薪的话要练 presentation。
-
学到什么程度可以去应征知名科技公司呢?
其实没有明确的标准,每家公司征人都会列出他们的 qualification,除非 HR 和主管是
个大外行,不然一定会写出他们需要你会什么东西。
如果你有一些作品了,想知道自己到底算不算是写程式的料,可以模仿《后翼弃兵》的女
主角看着天花板下棋一样,测试自己有没有办法在没有键盘和萤幕的情况下在脑内写程式
。大部分好的 developer 都可以做到这点。我以前因为不想浪费时间,都是走路时设计
完数据库,在公司坐下立刻就可以开始写。
有些公司他们除了面试前会先看过你的 Github 之外,也有可能会问你一些程式有几种写
法,甚至现场叫你在白板上写程式,这时候还打一堆草稿可是会扣分的。
-
一定要同时学后端技术吗?
如果你的目标是年薪百万,那么一定要,一点后端都不会的不能算是 developer,顶多算
designer。我从一开始入行就是做 full-stack,但是个人觉得中小规模的数据库设计比
五花八门的 JS framework 容易多了,所以没什么好怕的。
-
最后也是满多人好奇的,写程式不需要数学很好,那数学很烂可以写吗?
数学不好的人学写程式,可能第一关遇到 array、loop、function 这种基础中的基础时
,脑袋会有点卡,觉得这不是很直观能理解的东西。
再来就是进阶到 OOP (物件导向设计) 的时候,更是会脑袋打结,会写,不一定会维护,
加上习惯不好,就在这关直接爆炸。
但是写好程式其实最需要的是逻辑和思绪清楚,三角函数啊微积分啊,遇到记不得的公式
都可以 google。重点是你知道什么东西在先,什么东西在后,怎么写可以让电脑读懂,
按照你想要的样子 run 出来。
我高中时数学成绩没及格过几次,我太太数学非常好,可是她觉得写程式很难,而我在出
社会 8 年后当上了前端工程师。
我现在也认为电脑程式语言,是世界上数一数二美丽的东西,因为它一点也不复杂,规则
都是设定好的,“开发”就是在排列组合那些语法和变量。一旦出现了 bug,一定是人的
错,把它找出来修正就好了,程式语言是永远不可能错的。
抱持着这样的心情,才可能爱上写程式,成为好的软件工程师,有爱才能持久,持久才能
精通。以上是我的个人看法。