自学成为软件工程师
这是一本如何通过自学成为软件工程师的简明教程,主要包含以下内容:
- 基础:计算机科学
- 掌握 Linux: The Arch Way
- 选择一把合适的剑:Rust
- 协作:代码与项目管理
- 解决问题:工程师思维
程序员不需要参加资格考试,只要你有编程经历,并有自己的作品,别人就认可你是程序员。
Tips: 这里需要一张手绘图说明内容架构和学习步骤。
绘图工具:https://excalidraw.com/
基础能力的三板斧
基础、基础、基础 一切要从基础做起,不然进阶的部分就发挥不了效用。
《最后一课的演讲》- 兰迪·波许
对软件工程师的定位有所了解后,有哪些基础能力是必备的呢?一切事物都要从基础做起,如果基础不是很牢固,在职业生涯中很容易遇到瓶颈,能力的天花板也会很快到达。
从理论知识到工程实践,软件工程师需要的能力可以从三个方面来总结:
- 扎实的计算机学科基础
- 熟悉 Linux 及良好的系统编程能力
- 工程实战、综合能力素养
还有一些因素也很重要,比如英文水平,对硬件感兴趣、审美水平(对视觉设计、UI/UX和人机交互感兴趣),数学以及人文素养等,但是不同的人天赋、受教育水平和兴趣都有差异,如果某些方面你很擅长,可以把它发挥到极致,说不定能形成你独特的工作风格和人格魅力。
学习动机
做任何事,首要的是想清楚自己的目标(Why)。
作者从事这个职业主要有三个原因:
- 想拥有一种改造世界的工程能力,这种欲望跟去制造实物产品,或成为硬件创客是相通的。
- 个人可以通过创造的事物产生深远的影响,创造带来的成就感亦是很重要的一部分。
- 但并没有黑客那种想掌控或者破解一个系统的驱动力,对网络安全感兴趣的同学可能会有这种动机。更像武侠世界中,少年想习得绝世武学。
- 编码过程需要高度专注和抽象思考的能力,专注也是克服时间本身的一种方式,对编程本身会产生有一种类似价值观或信仰的热爱。
- 现实的意义:软件和工程层面的实践有助于练就洞察事物本源的能力,对技术创业有很大的助力。
这些思考和总结,源自自身有限的行业认知和学习,以及大量工程师招聘要求,聊作参考。
这趟学习之路是一个轻松的路程,你也不需要知道什么大纲,把它当作一份已经踏上旅途的前辈给你的探路指南,有空闲时间就可以拿出来,跟着指引,动起手,开始探索自己的旅途。
简而言之,无论是出于热情还是其他原因,有自驱性才能学的进去。
在线阅读
在开始阅读之前,如果你对岗位称呼困惑,可以先读读这篇文稿:什么是软件工程师?
本地预览
mdbook serve --open
本书使用 mdBook 生成,使用前需安装好 Rust 环境及 mdBook。
版权说明
Each file included in this repository is licensed under the CC BY License.
感谢
- https://emoji.fly.dev/