Re: [请益] senior该是什么样子的?新人怎么进阶?

楼主: godead236 (科科彬)   2019-02-05 23:31:26
我觉得这是个有价值的问题,希望自己的一点想法可以对你有所帮助
先讨论什么是 senior 该有的样子,由于我本身是 backend developer 下面的说明主要是
我自身的经验,不过只要你的工作是 software enginner 我觉得大部分的概念都是通用的
senior 跟 junior 的主要差别在于抽象跟选择,造成两者能力落差的主要原因是经验跟基础
知识的深度。
留下重要的资讯省略所有不必要的细节就是抽象,好的抽象才能产生有好的程式码(可读性、扩
充性、robust、正确度、效能...) 新人往往会关注于功能的实现与细节,而忽略了功能背后
的脉络与目的,因为他不晓得如何从比较高的层次来抽象化,所以产生了一系列可怕的结果(错
误百出、可读性差、没办法改写)。
选择其实也是一样的情况,选择不同的写法、Framework、 Language、 Databsase
、 是否要写测试、哪些 exception 需要处理... 在这些选择背后的是足够的知识与经验
去做出正确的取舍,而不仅仅只因为某个原因(我只会用 PostgreSQL、k8s 很潮、
Golang 听说很快)。 如何根据使用情境做出正确的选择是一件困难的事情,而 senior 比
junior 更有机会做好这件事情是因为 senior 踩过够多的雷,有更扎实的基础知识与
domain knowhow,所以他们懂得利用这些资讯去找出最适合的选择。
新人怎么进阶?
* 做每个功能前先确认这个功能的目的是什么,你的工作不是完成某个 for loop,而是
确保你的 code 有帮助到你们公司/组织。
* 学好工作上常用工具(i.e. Database、Framework)的底层知识,这是非常值得的投资。
* 先 code 前先用纸笔把想像中的实作大概描述一下,看一下是否合理(容易理解、扩充)
* 写测试,这是一个抽象化的好练习,抽象做得好,测试没烦恼。
* 学好英文,正确的命名是好的开始、很多重要的知识都是英文居多。
* 请同事 review 你的 code 看有没有改进的地方(跟你的写法有什么差异、看不看得懂、
有没有办法修改)
最后推荐几本书
Designing Data-Intensive Applications: The Big Ideas Behind Reliable,
Scalable, and Maintainable Systems
https://www.amazon.com/Designing-Data-Intensive-Applications-Reliable-Maintainable/dp/1449373321
Site Reliability Engineering
https://landing.google.com/sre/sre-book/toc/index.html
A Philosophy of Software Design
https://www.amazon.com/Philosophy-Software-Design-John-Ousterhout/dp/1732102201
楼主: godead236 (科科彬)   2019-02-05 23:34:00
太久没用了,好难排版喔 QQ
作者: kevinyin9 (kevinyin)   2019-02-06 00:10:00
好文推
作者: tz5514 (屁安)   2019-02-06 03:30:00
作者: sachung28 (00)   2019-02-06 05:40:00
选择的原因那段好像在说我XD psql和k8s和go都中了
作者: afg12 (afg12)   2019-02-06 11:25:00
好文 我还在菜逼8 看完受益良多
作者: wanlinlin (wanlinlin)   2019-02-06 19:20:00
认真推
作者: moon2519 (~X~X~)   2019-02-06 23:50:00
推连结
作者: louis70109 (Nijiayu)   2019-02-07 00:22:00
go psql中枪
作者: testPtt (测试)   2019-02-07 08:20:00
我对抽象类别跟接口也没什么感觉Q.Q
作者: b27294301 (茎毛湿王)   2019-02-07 16:36:00
中枪+1
作者: youweit (Teng)   2019-02-11 01:04:00
作者: k80097   2019-02-11 23:11:00

Links booklink

Contact Us: admin [ a t ] ucptt.com