您何时成为开发人员?
您什么时候成为开发人员?
本文最初发表在我的博客上,我经常在那里撰写有关远程工作、学习编码和科技女性的文章。
您什么时候成为开发人员?
在过去的一年里,我自学了编程。我构建并上线了四个 Web 应用,学习了从前端到后端的课程,能够使用 API,并且了解了 Promise 的含义。
但出于某种原因,我仍然不觉得自己是一名开发人员。
我以为,随着我学得更多、构建更多代码,这种感觉会逐渐消失。但直到今天,这种身份似乎仍然无法融入,也不知道什么时候才能融入。我不禁纳闷……
我什么时候才能感觉自己像个开发者?我什么时候才能“成为”一个开发者?
我一直在思考,为什么我仍然觉得自己像个冒名顶替者。是出于个人感受,还是外部因素,还是其他完全不同的原因?我决定走出自己的世界去寻找答案。
TL;DR
你什么时候才能成为开发人员?没人知道!
黄金问题
我决定对数百人进行调查,看看他们认为这个拐点何时发生。是你……
- 写了你的第一行代码?
- 有您的第一位用户了吗?
- 创建了您的第一个项目?
- 被聘为开发人员了吗?
又或许是完全不同的另一回事?当你……
- 明白X和Y的区别了吗?
- 可以教别人发展吗?
- 越过“愚蠢山”了吗?
坦白说,我本来以为答案会更多地集中在“哇,我不知道”上,因为我自己也不确定答案是什么。有趣的是,很多人似乎对此有明确的看法。然而,同样引人注目的是,这些观点彼此之间却大相径庭。所有答案都获得了大约20-30%的投票,从量化的角度来看,对于“正确”答案是什么并没有更清晰的界定。或许,答案本身就是答案。
“发展中”的视角
首先,我想分享一些有明确观点的人的回应。
编写第一行代码(17%)
Quora 的一句话是:“当你能写出至少一行代码时,你就可以认为自己是一名程序员了。我们不关心代码行的长度,但这行代码应该能产生正确的结果。”
创建第一个应用程序(33%)
获得聘用(22%)
哇哦,我不知道 (28%)
其他
如何拯救世界
这个思想实验的结果让我想起了我在社交媒体早期(当时Vine还很流行)看到的一个视频。
这段视频的标题是“如何拯救世界”。你自然会期待看到一些关于世界现状和/或我们未来的深刻见解,但你看到的却是一个男孩说的话:
- 如何拯救世界:
- 搜索世界
- 点击图片
- 并“拯救”世界(当他将图像保存到他的电脑时)
这显然是个玩笑,但或许无意中给了我们一个教训:我们不必总是只看表面。或许对于“开发者”的定义,还有更多更有趣的解读,我们可以大胆想象,或许还能从中学到一两点。
“你做什么工作?”
进一步思考后,我们发现软件开发通常不像其他一些职业那样需要强制认证。例如,很少有自学成才的医生或开源建筑项目。
当然,有很多软件工程学位,但软件行业中也有相当数量的有偿/无偿贡献者没有任何形式的认证。
我思考过为什么有些职位需要学位,而有些职位不需要。我得出了以下两个想法。一个需要学位的职业……
- 有一个一致同意的、正确的方法来达到特定的结果
- 有一套学习上述方法所需的特定步骤
例如,一位医生需要学习一套独立的理论,进行一套独立的外科手术,并且在关键时刻,他们需要知道“正确”的答案。当然,有些情况下会出现歧义,但很多情况下,都有一个正确的顺序。
我发现软件的有趣之处在于,有无数的方法可以得到无数的解决方案。换句话说,有很多错误的方法,但也有很多正确的方法——而且你无需接受正式培训就能掌握这些正确的方法。这部分是由于信息的民主化,但也因为软件开发在很多方面都是解决问题的行为,而没有单一的正确答案。因此,学习软件开发的方法并非单一的。
例如,有些软件工程师可以用完全不同的输入(例如:语言、框架、工具、功能等)创建类似的解决方案,而另一些软件工程师则能用相同的输入(例如:使用相同底层工具的独特应用程序)创建截然不同的解决方案。这在其他创意产业中也同样适用。例如,如果你给两个人一块画布和颜料,他们可能会创作出截然不同的作品,但两者都不一定是错误的。
“那么,你是一名程序员吗?那么,你是一名问题解决者吗?”
第 N 级正确性
我认为我们可以通过某些角色拥有“N级正确性”的概念来进一步阐述这个想法。我指的是,通过不同程度的方法,最终都能得到“正确”的解决方案。例如,数据录入只有一个正确解决方案:数据被正确输入。当然,速度等变量也很重要,但最终只有一个正确结果。正如我们已经指出的,软件工程几乎总是有多个正确解决方案。
“事实上,没有人比计算机科学家更了解,面对看似无法克服的挑战,你既不应该永远辛苦劳作,也不应该放弃,但正如我们将看到的,尝试第三件事。”——《生存算法》
我们可以开始形象化地看待这些角色及其“正确程度”,以便更清楚地了解工作或行业如何发展。
越往左边(“正确”的解决方案越少),该特定技能就越容易被训练和重复。对于最终可以被计算机训练学习和重复的技能,情况也是如此。
相反,右边的技能更多地依赖于解决问题和判断力,最终较低的进入门槛开辟了新的学习方法,我们在设计、开发和营销等许多领域都看到了这一点。
发展之美
如前所述,为了参与某些行业,你需要获得明确的认证。这本身就加剧了独立机构在该领域做出贡献和发展的难度。
或许这正是软件开发最美好、最理想的一面。较低的门槛使得如此多的人能够贡献自己的力量,并持续推动着这个行业的蓬勃发展。
这就是为什么其他任何行业都无法跟上软件所允许的创新水平,这不仅是因为它的功能,更因为它的开放性。当数百万人公开地为某件事做出贡献时,这些贡献必然会带来进步,而随着这种持续的发展,总会有新的东西需要学习。这导致了无限的学习曲线,我认为这很美妙。
保持你的身份小巧
“成为一名开发者”这个概念也让我思考了身份认同的问题。YC 著名联合创始人 Paul Graham 曾给出“保持你的身份认同”的建议。或许我们可以借此进一步理解最初问题的含义。
从直接取自 WWW 的定义开始,软件开发人员是:
程序员、开发人员、开发者、编码员或软件工程师是创建计算机软件的人。
请注意,该定义不包含任何关于学位、项目或身份的信息,而是侧重于创造行为。如果软件开发不需要正式学位,而其真正含义只是创建软件,那为什么这么多人难以认定自己是软件开发员呢?
或许是因为通常情况下,人们描绘的形象并非如此。相反,人们认为要成为一名“开发者”,你需要拥有 10 年以上的工作经验,闭着眼睛就能写代码。我这里是开玩笑,但你明白我的意思。无论有意还是无意,都存在着某种程度的门槛,我相信这会影响我们把自己视为开发者的能力,即使我们确实在开发中。
例如,Quora上有人提到:
我的一位教授曾经说过,“除非你理解了递归,否则你不能称自己为程序员。”
虽然了解基本原理是件好事,但这些情绪往往会阻碍人们认同某个主题,而且并不是每个人都能有效地“保持自己的身份小众化”。
这种把关或反复强调某人在 X 步骤之前不属于开发人员的行为,会让人们(比如我自己)觉得自己像个冒名顶替者。而当人们觉得自己像个冒名顶替者时,他们自然不太可能继续下去,甚至从一开始就不太可能开始。
重新定义开发人员
希望我已经说服你,一个人成为开发者并没有特定的条件。更重要的是,设置这些障碍可能会对人们造成潜在的伤害,因为他们无法从开发者身份的角度看待自己。
我喜欢这个思想实验中产生的两个概念:
- 对开发之美的反思。我相信,学习和创造的开源本质将在未来许多年继续推动软件行业的繁荣发展,这要归功于现有的允许开放贡献的体系。
- 或许我们应该取消“头衔”,或者根据你的贡献水平而不是你的先前知识水平来定义。换句话说,根据你学习、创造和构建的热情来定义。无论是通过开源项目、为社区创建工具、撰写文章还是指导他人,我认为参与其中的行为更能准确地定义一名开发者。
简而言之,我现在明白了,尤其是在软件开发领域,头衔并不重要。“开发者”这个称号不应该是一次性的,比如学位,而应该以你是否仍在创造价值来衡量。
也许这就是为什么“发展”一词与“进化”如此同义。
PS:来Twitter上讨论或者订阅我的博客吧。
鏂囩珷鏉ユ簮锛�https://dev.to/stephsmithio/when-do-you-become-a-developer-377e