自学成为软件工程师

这是一本如何通过自学成为软件工程师的简明教程,主要包含以下内容:

  1. 基础:计算机科学
  2. 掌握 Linux: The Arch Way
  3. 选择一把合适的剑:Rust
  4. 协作:代码与项目管理
  5. 解决问题:工程师思维

程序员不需要参加资格考试,只要你有编程经历,并有自己的作品,别人就认可你是程序员。

Tips: 这里需要一张手绘图说明内容架构和学习步骤。

绘图工具:https://excalidraw.com/

基础能力的三板斧

基础、基础、基础 一切要从基础做起,不然进阶的部分就发挥不了效用。

《最后一课的演讲》- 兰迪·波许

对软件工程师的定位有所了解后,有哪些基础能力是必备的呢?一切事物都要从基础做起,如果基础不是很牢固,在职业生涯中很容易遇到瓶颈,能力的天花板也会很快到达。

从理论知识到工程实践,软件工程师需要的能力可以从三个方面来总结:

  • 扎实的计算机学科基础
  • 熟悉 Linux 及良好的系统编程能力
  • 工程实战、综合能力素养

还有一些因素也很重要,比如英文水平,对硬件感兴趣、审美水平(对视觉设计、UI/UX和人机交互感兴趣),数学以及人文素养等,但是不同的人天赋、受教育水平和兴趣都有差异,如果某些方面你很擅长,可以把它发挥到极致,说不定能形成你独特的工作风格和人格魅力。

学习动机

做任何事,首要的是想清楚自己的目标(Why)

作者从事这个职业主要有三个原因:

  1. 想拥有一种改造世界的工程能力,这种欲望跟去制造实物产品,或成为硬件创客是相通的。
    • 个人可以通过创造的事物产生深远的影响,创造带来的成就感亦是很重要的一部分。
    • 但并没有黑客那种想掌控或者破解一个系统的驱动力,对网络安全感兴趣的同学可能会有这种动机。更像武侠世界中,少年想习得绝世武学。
  2. 编码过程需要高度专注和抽象思考的能力,专注也是克服时间本身的一种方式,对编程本身会产生有一种类似价值观或信仰的热爱。
  3. 现实的意义:软件和工程层面的实践有助于练就洞察事物本源的能力,对技术创业有很大的助力。

这些思考和总结,源自自身有限的行业认知和学习,以及大量工程师招聘要求,聊作参考。

这趟学习之路是一个轻松的路程,你也不需要知道什么大纲,把它当作一份已经踏上旅途的前辈给你的探路指南,有空闲时间就可以拿出来,跟着指引,动起手,开始探索自己的旅途。

简而言之,无论是出于热情还是其他原因,有自驱性才能学的进去。

在线阅读

在开始阅读之前,如果你对岗位称呼困惑,可以先读读这篇文稿:什么是软件工程师?

本地预览

mdbook serve --open

本书使用 mdBook 生成,使用前需安装好 Rust 环境及 mdBook

版权说明

Each file included in this repository is licensed under the CC BY License.

感谢

  • https://emoji.fly.dev/