一份正式的学位和算法问题解决能力是答案。一直都是。
你有没有拿过手术 scalpel?这是一种令人难以置信的工具 - 小巧、轻便,比任何同类工具都要锋利。在一个人被授权在人体皮肤上使用它之前,需要经过数千小时的练习,掌握它则需要一生的时间。你不想把这个工具交给错误的人。无论他们多么积极、乐于学习、善意而勤奋,他们都可能弄糟事情。他们可能是厨师、美发师或任何其他处理切割工具的专业人士。尽管他们有相关经验,但他们仍然会搞砸。处理手术用 scalpel 的工作非常困难,责任重大。当我思考当前软件状态时,我喜欢用这个比喻。我们需要对那些希望在计算机上使用人工智能进行编程的人进行严格筛选。 对于一个既有资格又没有资格做这种论证的人来说,这是一种苦乐参半的声明:在我职业生涯的大部分时间里,我既没有接受过正式、严格的计算机科学教育,也没有花时间去“leetcode”练习。尽管如此,我仍然做得很好。我曾经也是,现在仍然是一个构建软件以解决问题的人。我并不总是为了赚钱而这样做,我这样做是因为我一直想要这样做。与此同时,我与参加过训练营的开发者、前物理学家、那些从未完成或没有特别深入教育的工程师们合作,积累了丰富的经验。经验表明,如果你希望在没有学位或绕过编程面试的情况下获得成功的职业生涯,那么从长远来看,事情很少会有好结果。在目前的条件下缺乏这些技能可能会导致职业生涯的结束。一些轶事:我曾在一家初创公司工作,那里有一位高级工程师,他强迫团队中的每个人按字母顺序排列文件导入。他还有一些最疯狂的 linting 规则,而且他无法在 linting 中规范的内容,会在 pull request 中用评论补充。讽刺的是,该初创公司对应用层完全没有单元或端到端测试,后端服务仅有一小部分冒烟测试。测试和部署是绝对的地狱,常常占用周末。他们的优先事项确实明确。 在另一个工作中,有一个人花费数小时争论 IDE 中换行文本之前的最大符号长度,对“制表符与空格”的争论有强烈的看法,还包括自定义构建的所有内容,包括一个电子邮件服务,该服务在我们开始引入更多客户后总是挂起并失去计划中的电子邮件。接受你软件的杰作是垃圾,使用一个不会丢失客户的第三方服务。我也经历过语言和框架的专家。他们是那种在非常小的技术子集上相对优秀的开发人员,但对于与他们相邻的任何事情则完全迷失,不了解基础知识。这些人总是生活在对自己工作公司的不断偏执中,担心他们在其中擅长的框架会被淘汰,迫使他们学习新的东西。听一个人一个小时长的赞美 Angular 相较于 React 的平庸,或 Kotlin 相较于 Java 的劣势,真的让人疲惫。接受现实,使用能最好地解决问题的任何东西。还有一些完全无知的人,不知怎么地在企业环境中混了过去。曾经有一个自称是 Linux 专家的人,我向他请教关于我家用实验室设置的建议。他最初的叙述很不错,给我解释了一堆关于不同发行版和 systemd 的趣闻,但经过几周的讨论,他的建议开始不靠谱,我开始怀疑。在向他提出一些关于操作系统和网络的基本问题后,结果发现他只是停留在表面知识层面,而我的家用实验室设置是他见过的最复杂的事情。在另一个类似的情况下,某个功能无法正常工作,而由于我认为自己对特定技术栈并不熟悉,因此编写并拥有该功能的人居然无法读取和调试自己的工作。上述提到的大多数人在我与他们共事时的岗位都比我高,而且他们都认为正式教育和计算机科学及算法问题解决能力对于成功的职业生涯并不重要。这种心态在我工作的许多地方受到纵容或庆祝。我写的那些人并不被认为是表现不佳的人。如果我必须将“无需教育,无需算法”的小圈子归类,会被分为三类:他们要么专注于开发软件时的错误事项,要么知识浅薄且缺乏对良好工程难度的理解,要么毫无头绪,依赖良好的软技能和政治。我或许对于这些情况已经变得过于愤懑。
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡