菜单导航

从入门到程序员初长成:这是我的 Roadmap

作者: 精装之家 来源: 精装之家 发布时间: 2021年07月15日 12:42:30

2020 年注定是充满着悲情与不平凡的一年,如果世界上有像游戏那样的「重新游戏」功能,那我相信绝大多数人都会想重启 2020 年。

年底将至,我回望从去年毕业到现在个人的成长,从一个最初代码都敲不利索且毛发旺盛的大学生,到现在毛发依旧旺盛只是代码敲得更利索的 Coder 一年的时间里,我没想到自己能够有这么快的成长速度。如果能重来,那么我应该会比现在有着更明确的成长方向,也会少走不少弯路。

在工作中我的定位是什么呢?大数据分析师、后端工程师、运维工程师、数据挖掘工程师等⋯⋯通常来说,只要是体量较大的公司,往往分工会十分明确,每个人都只要「拧好自己的螺丝」即可;但在新开辟的部门或者小公司里,可能就会像我一样有着多种角色或身份,职能并不明确且模糊。

但我的这些角色身份都有一个共同之处,那就是跟代码息息相关。

所以为了行文方便,我也会以「程序员」这既通用又充满刻板印象的角色为视角说一说我是如何成为一个合格的初级程序员。

Hello, World

提起「程序员」一词,你会想到什么?

格子衫?随身带着傻大黑电脑的理工男?不善言辞但又思维敏捷?直男般的说话方式?

可能我对于程序员这一职业存在的刻板印象描述并不完全,但这些话术确实是和程序员人群的职业特征在某些方面存在着重合或者相似性。

我在毕业之前,从来也不曾想过有天我会成为一名程序员。那时的我虽然只是对敲代码感兴趣,但做的通常都是处理数据或做和数据分析有关的事情。程序员一词在当时的我看来就是像黑客那样有着高超技术的一类人或职业,并且想要成为程序员的基础就是必须得是计算机类专业这样科班出身才行。

而我只是一名社科专业的文科生,这种看着和计算机类专业相比就是南辕北辙的学科背景似乎让我从一开始好像就和程序员的这一词沾不上边。

但事实上,你的学科背景并不会限制你成为一名程序员。(当然如果你有计算机基础或是科班出身那将会是更好的)

举个最著名的例子就是,JavaScript 领域里 Vue 这一知名框架的作者尤雨溪本人就不是计算机专业出身的,根据 freeCodeCamp 的这篇 访谈 可以得知,尤大本科读的艺术史,研究生阶段读的设计与技术(the Master of Fine Arts for Design and Technology)。但他创造的这一框架却在国内外都被众多公司使用(包括少数派)。

所以至今你也会看到很多非计算机专业的非科班程序员的身影,在成为程序员之前他们的学科背景可能都是来自于生物信息、通信或是像我一样的社会科学等。

但也并不意味着所有人都能成为一名程序员,抛开代码、编程语言来说,想成为程序员应该具备最基础的东西是:

逻辑。无论是你写的代码,还是跟产品经理或者客户解释,都离不开逻辑。这种逻辑并不是指逻辑学这门课程里的逻辑,而是指把一件事情或东西讲清楚、从头到尾理顺的能力,这不仅体现在你的口头表达中,还体现在你的代码中。找/解决问题的能力。代码是人写的,但只要是人写的必然会存在 Bug 或是问题。一个优秀的程序员或者工程师不在于它会用什么框架、会哪些技巧,而是能够在问题发生时快速定位到问题、甚至解决问题。所以不要以为国内的搜索引擎能帮到你所有,你需要的是「另外一个世界」;同时还能从源码或者别人的给出的代码中,找出或者创造出自己的解决方案。手动实践的能力。我曾跟同事聊天时就说了我一个文科生对于程序员这门职业的一个直观感受:手艺人。和木匠、厨师、演员等这类职业一样,程序员也都需要不断地练习、实践。从来没有谁能够说自己一行代码不写就可以构造出一个完美的程序。无论是在工作还是学习时,程序员都要能够多动手实践、代码敲一敲看看是否能够真正运行一个样例程序,并对这个程序进行二次或多次加工、改造。

非科班的程序员相比于科班程序员来说的优势在于多了跨领域、跨专业的知识经验,但劣势就在于计算机基础、编程和技术等方面的不足。

所以一旦成为了非科班的程序员,就意味着我们是属于「先上车后补票」的那批人,那么我们能做的就只有:恶补,疯狂地补课计算机相关的东西。这也预示我们会完全进入到了一个由数字和代码所构成的领域。

欢迎来到程序世界:Hello, World!

熟能生巧:先做API工程师和调包侠

写代码这件事和烹饪其实很类似,在这件事上我这个经常做饭的厨子深有感触。