当前位置: 首页 > 科技观察

一个伟大的开发者的使命感应该是什么

时间:2023-03-18 22:22:06 科技观察

“工程师工作五年,算不算高级开发者?不值一提。”我们现在在一个奇怪的行业工作。显然,每年都有新的从业者涌入人才市场,但企业仍抱怨急需大量发展。这个问题由来已久,而且越来越严重。开发商行业非常年轻,面临着严重的人才短缺。由于巨大的后期制作费用,大多数软件开发项目都顺利结束。业内大佬们是如何告诫我们“问题总有解决办法,但我们还是有问题。因为除非我们真正尝试解决它们,否则我们永远不知道哪些可行”让我们面对现实吧。当你从事开发三年以上时,你就可以称自己为“高级开发人员”了。但实际上,有些人在这个岗位上才干了三年,也只是招摇过市,其水平严重不适合这个岗位。这就是我对同龄人的评价。首先,根据知识和经验,将人分为初级开发人员、中级开发人员和高级开发人员。这是一个非常一刀切的分类。有的人可能只在一个岗位上做了十年,但他的成长甚至还不如另一个人一年所学所经历的。开发人员的快速成长期:作为程序员,我们生活在一个IT系统日趋复杂多变的时代。有时执行一个简单的开源项目需要精确的定义和大量耗时的重点任务。特别是当你是一个新的程序员,或者当你还不熟悉你的数据库的时候。菜鸟程序员很难。你可能刚刚从一所不错的大学毕业,你觉得你已经掌握了基础知识。但是突然间,您在工作中面临着一整套全新的知识。很长一段时间,你对自己要做的工作一无所知。至于你们老板提出的要求,看来只能妥协,没办法有效质疑。在这个阶段,你所要做的就是专注。并尽量敞开心扉,努力学习。初级开发人员需要大量的实践、指导、监督,以及可以在工作初期提供帮助的老师。缺少以上任何一个条件,初级开发者都很难跨过这个入门门槛。我最近遇到了一个做了十年软件的人,但我很难过地发现他的真实水平仍然是初级开发人员。这个阶段可以说是战略积累的状态,但是要学习积累,积累再学习,两者缺一不可。初级开发人员必须专注于代码本身。在这个阶段,不要被任何其他乱七八糟的事情分心。在开发一个项目的时候,如果你作为程序员的想法是“我希望我的代码在别人眼里看起来很美”,而不是“我所做的应该是对用户最好的”,那么他本身就是一个初级开发人员。一个好的开发人员可以把工作做好,不仅如此,他们可以在短时间内做好任何事情,并在以后很好地维护它。中级开发人员瓶颈期当开发人员从菜鸟阶段成长为中级开发人员时,他们可以在项目失败时反思整个过程(通常,他们会看自己做过的部分)。你会意识到,与其匆匆忙忙地完成任务,不如在项目开始时建立一些纪律。即使一开始就有人改正,整个项目也能避免一开始就失败。而中级开发者还会经历另一个独特的心理过程,那就是回顾一年前的工作。我发现,虽然我当时觉得“哦,我做的很好”,但现在我发现“这是什么鬼”。中级开发人员是有能力通过过去的经验、文本数据、项目团队讨论等找出做事的“正确方法”的人。在这个阶段,学习构建软件的理论比学习构建更重要代码(后者应该在学校学习)。另一方面,如果中层开发人员自己做决定,他们会比初级开发人员造成更大的伤害。初级开发者只能堆算法,一个好的中级开发者是朝着“模式设计”和“类目驱动设计”方向努力的。这些技能是他们构建OO系统的必要过程。学习了这些理论知识后,如果灵活运用,可以更好地构建项目。但如果死板地使用,它也会危及整个项目。有时,让一个中级开发人员构建一个系统,他可能比初级开发人员花费的时间更长,更糟糕的是,他可能会把整个团队带入歧途。可悲的是,许多项目开发失败的原因是团队负责人只是中级开发人员,他们缺乏与高级开发人员合作的宝贵经验。团队领导自己,团队中没有其他人意识到这一点。中层开发人员非常清楚自己在团队中的角色,能够认识到自己为团队工作带来的价值。优秀的中级开发人员知道代码是为了解决问题,而不是结束问题。然而,中级开发者总是容易陷入认知金字塔,即他们会遵循一些“正确的方法”来解决问题。一个好的中级开发人员需要的只是精细的监督。他们在代码构建方向上非常可靠,将在讨论设计过程中发挥重要作用。中层开发人员是团队中的“发动机”。但是,如果仍然需要进一步的指导和更高级别的监管。高级开发人员,甚至是大师级开发人员,都需要满足条件。毫不夸张地说,他每次都能记住自己的错误。他们甚至可以在设计或编写代码时预见到许多失败。他们对错误的反应非常敏感,并使用诚实的方法来评估自己的成功和失败。作为高级开发人员,他会更倾向于热爱复杂的问题,但会执着于简洁地解决问题。高级开发人员不评价其他开发人员。相比之下,他知道的更多。因为我知道,我明白每个人在每个阶段都有优点和缺点。而且他们也比别人更了解自己的长处和短处,并努力将自己的优势发挥到极致。资深开发人员会明白,所有的理论基础都是有背景支持的。他们不会执着于构建软件的“正确方法”,而是将理论灵活地应用到实践中,理论可以适应于客户、团队和组织的需求。资深开发人员会把自己置身于项目过程中,了解客户想要什么样的工作结果,以及他们的喜好。毕竟,这些东西比开发者的个人喜好和成功更重要。他们从不说“那不是我的工作”,也从不强加任务和责任。有经验的开发人员明白一件事,他们的工作是为客户提供解决方案,而不是埋头写代码。而一个资深的开发人员,总会把自己的团队能为客户带来多少价值作为考核标准。而不是把自己的努力和客户的需求放在平等的PK赛场上。不可否认,因为这是一份工作,中间的过程总是会很枯燥乏味。但是高级开发人员会退一步思考如何解决和破解这些无聊的问题。他们将评估根本问题并直接解决。或者他们把无聊的情绪放在一边,解决他们每天要面对的问题。高级开发人员还知道如何作为一个团队有效地工作。没有人可以一个人完成所有事情,他们将致力于提高自己团队的效率。他们将提高团队效率的行为视为提升自身软实力的一部分。高级开发人员明白,领导不仅仅是权力,也不仅仅是控制。权力不是交通棒,而是服务意识。如果你的团队缺少高级开发人员,那么项目几乎总是会失败。拥有中级开发人员可以让你做事非常快,但当你工作时,你会发现项目不仅仅是构建和维护程序。您最终关闭了网站,或者支付了比预期更多的维护费用。只有高级开发人员才能选择技术和网站,不要让它们伤害你。很多需求很简单,但是在大多数简单的需求背后,隐藏着更复杂的需求。事实上,我自己已经厌倦了按工作时间对开发人员进行分类。是的,工作经验可以告诉你很多,但它通常提供无意义的信息。即便是这些信息,也要结合很多背景来判断。更重要的是,我们这个行业需要新鲜血液,我们需要招募刚大学毕业的有激情的年轻人。而且即使对程序员进行分类,也不能只看工作经验。其实我们在招聘程序员之前,首先应该想好团队需要什么样的人才。毕竟,我们招人是为团队服务的。当你雇用了错误的人时,你就是在损害团队和项目。本文来源:mattbriggs翻译Transcend首发TECH2IPO/Transcend假爱丽丝