你什么时候成为开发者?
在过去的一年里,我自学了代码。我已经构建并启动了四个Web应用程序,从前端到后端的价格,可以使用API,并知道什么是Promise。
但出于某种原因,我仍然不喜欢开发人员。
我认为这种感觉会随着时间的推移逐渐消失,因为我学到了更多,构建得更多,而且代码不再那么陌生。但直到今天,这种身份似乎仍然不合适,而且不清楚它何时会发生。我想知道……
我什么时候才能成为开发者?我何时“成为”一个人?
我一直在思考为什么我仍然觉得自己是冒名顶替者。是由于个人感知,外部感知还是其他原因?我决定到我自己的世界之外找出答案。
TL; DR
你什么时候成为开发者?没人知道
金问题
我决定对数百人进行调查,看他们何时认为这个拐点发生了。是你什么时候……
- 写了第一行代码?
- 有你的第一个用户?
- 创建了你的第一个项目?
- 被聘为开发人员?
或者它可能完全是另类的东西?当你…
- 理解X和Y之间的区别?
- 可以教别人发展吗?
- 搬过“愚蠢的山”?
坦率地说,我期待这些回复在“Woah IDK”中更加严重,因为我自己对答案如此不确定。有趣的是,许多人似乎对此有了具体的看法。然而,或许正如所说的那样,这些观点彼此分歧。所有答案都获得了大约20-30%的选票,从定量的角度来看,没有更清楚地说明“正确”的答案是什么。也许这就是答案本身。
“开发者”视角
首先,我想与那些有明确观点的人分享一些回复。
写第一行代码(17%)
来自Quora:“当你能够编写至少一行代码时,你可以认为自己是程序员。我们不关心行的长度,但是这行代码应该产生正确的东西。“
创建第一个应用程序(33%)
被聘为一员(22%)
Woah IDK(28%)
其他
如何拯救世界
这个思想实验的结果让我想起了一个视频,我在社交媒体的早期阶段看到了藤,这是藤。
该视频的标题是“如何拯救世界”。当然,你会期待一些关于世界状况和/或我们未来的高度启发,但你会得到一个男孩说:
- “如何拯救世界”
- 寻找世界
- 点击图片
- 并“拯救”世界(因为他将图像保存到他的电脑)
显然这是一个笑话,但也许是一个无意识的教训,我们并不总是需要从表面上看待事物。也许对于“开发者”是什么我们可以梦想并且在我们参与时可能学习一两件事情有更多有趣的解释。
“你是做什么?”
经过进一步考虑,很明显软件开发通常不具有与其他职业相同的强制凭证。例如,很少有自学成才的医生或开源建设项目。
当然,有许多软件工程学位,但在软件行业中也有大量有偿/非付费贡献者没有任何形式的认证。
我已经考虑过为什么某些角色需要学位而其他角色不需要。我提出了以下两点想法。需要学位的专业……
- 有一个商定的,正确的方法来达到一个特定的结果
- 学习所述方法需要一定的步骤
例如,作为医生的人需要学习一套独立的理论,做一套独立的外科手术,当推动时,他们需要知道“正确”的答案。当然,有些情况有歧义,但在很多情况下都有正确的顺序。
我发现软件非常有趣的是,有许多方法可以用来获得无数的解决方案。换句话说,有许多错误的方法,但也有许多正确的方法 – 你可以在没有经过正式训练的情况下获得这些正确的方法。这部分是由于信息的民主化,而且软件开发在很多方面都是解决问题的行为而没有一个正确的答案。因此,没有单一的方法来学习它。
例如,有些软件工程师可以使用完全不同的输入创建类似的解决方案(例如:语言,框架,工具,功能等),而其他人也使用相同的输入创建截然不同的解决方案(例如:使用相同的基础工具)。这对其他创意产业也是如此。例如,如果你给两个人一个画布和画笔,他们可以创造完全不同的东西,其中两者都不一定是不正确的。
“那么,你是编码员吗?好吧,你是解决问题的人吗?“
第N度正确性
我认为我们可以通过具有“第N度正确性”的某些角色的概念来进一步提出这个想法。我的意思是,不同程度的方法将使您获得“正确”的解决方案。例如,通过数据输入,有一个正确的解决方案:数据正确输入。当然有速度等变量,但最终只有一个正确的结果。正如我们已经确定的那样,软件工程几乎总是有多个正确的解决方案。
“事实上,没有人和计算机科学家一样理解,面对看似无法解决的挑战,你既不应该永远劳作,也不应该放弃,但正如我们将要看到的,完全尝试第三件事。” – 算法生活通过
我们可以开始想象其中一些角色及其“正确度”,以便明确工作或行业如何发展。
左侧越远(“正确”解决方案越少),可以训练和重复的特定技能越多。对于最终可以由计算机训练以学习和重复的技能,这也是类似的。
相反,正确的技能更多地依赖于解决问题,自由裁量权,并最终降低了进入门槛,开辟了新的学习方法,我们在设计,开发和营销等许多领域都看到了这种方法。
发展之美
如前所述,为了参与某些行业,您需要明确的认证。这本身就会对独立方贡献和推进空间的难度产生复合效应。
也许这对软件开发来说是如此美妙和优化。其较低的进入门槛使得如此多的人能够贡献并永久地保持行业的发展和繁荣。
这就是为什么没有其他行业能够跟上软件所允许的创新水平的原因,不仅仅是因为它的功能,还有它的开放性。当你有数百万人公开地为某事做出贡献时,这些贡献不可避免地会带来进步,并且随着不断的演变,总会有新的东西要学习。这导致无限的学习曲线,我认为是美丽的。
保持身份小
“成为开发者”的概念也让我思考身份。著名的YC联合创始人保罗·格雷厄姆(Paul Graham)给出了“保持小身份”的建议。也许我们可以利用这个想法来进一步理解原始问题的含义。
从直接从WWW获取的定义开始,软件开发人员是:
程序员,开发人员,开发人员,编码人员或软件工程师是创建计算机软件的人。
请注意,该定义不包含有关学位或项目或状态的任何信息,而是侧重于创建行为。如果软件开发不需要正式学位,并且它真正意味着创建软件,为什么这么多人都难以自己考虑。
也许这是因为通常会画出不同的画面。相反,有一个图像(对于某些人),作为一个“开发人员”,你需要10年以上的经验,并可以闭着眼睛编码。我在这里很滑稽,但你明白了。无论是有意还是无意,都存在一定程度的守门,而且我相信这有助于我们将自己视为开发者的能力,即使我们确实在开发中。
例如,Quora上有人提到:
我有一位曾经说过的教授,“在理解递归之前,你不能称自己为程序员。”
虽然理解基本面很好,但这些情绪往往会阻止人们识别某个主题,而不是每个人都能够有效地“保持自己的身份”。
门卫或钻井的行为是因为有人在X步骤之前不是开发人员,导致人们(像我一样)感觉像冒名顶替者。当有人感觉像是一个冒名顶替者时,毫不奇怪他们不太可能继续下去,甚至不会在第一时间开始。
重新定义开发人员
希望我已经说服你,当有人成为开发人员时没有特定的实例。更重要的是,建立这些障碍可能会对人们造成潜在的破坏,因为他们无法从这种身份的角度看待自己。
我喜欢这个思想实验中出现的两个概念:
- 对发展之美的反思。学习和创造的开源本质是我认为将继续使软件行业在未来许多年中蓬勃发展,因为有适当的系统允许开放贡献。
- 也许我们应该删除“标题”或基于您的贡献水平与您的先前知识水平相关的概念。换句话说,您对学习,创建和构建的亲和力。无论是通过开源项目,为社区创建工具,撰写文章还是指导某人,我认为更准确的参与行为定义了开发人员。
简而言之,我现在很清楚,特别是在软件开发中,标题并不重要。作为一个“开发者”而不是像学位这样的一次性指定,应该通过你是否还在增加价值来衡量。
也许这就是为什么“发展”这个词与进化同义。
最初于2019年4月10日在https://blog.stephsmith.io上发表。