对20年前的程序员的我说:做这四件事

  开发中的开发人员,我现在知道的四件事希望我能做得更多

  二十年前,我以*网络开发人员的身份登陆了我的第一家公司。 二十年后,我仍然在做。 事后看来,我希望自己早日养成4种习惯。

  1.更多的自动化

  你一直很擅长做一个单人商店,并且能够将很多细节和流程牢记在心。 该客户的部署有15个步骤,您每个月都要进行一次,因此要记住,每次运行最多需要5分钟。

  您将与同事就此展开辩论。 有了所有需要构建的功能和所有要修复的错误,这个问题就会一遍又一遍地出现:

  花费时间来自动执行仅花费您几分钟的时间并且每隔一段时间执行一次的操作,真的值得吗?

  不要这样想。 相反,请这样考虑:

  每月一次只需要5分钟的时间即可手动执行该过程。 该过程的楼宇自动化将需要3个小时。 这样可以将运行该过程所需的时间从5分钟减少到3分钟。

  但是,这里有一个关键:

  随着流程的自动化,运行该流程的不再是您。

  您获得的收益每月不仅仅是2分钟。 您的5分钟可以变成0分钟,因为现在该过程已自动化,其他人可以花3分钟来运行该过程。 实际上,可以是其他任何人。 在关键时刻,团队中只有3分钟时间的任何人都可以运行此自动化流程。

  您不必做任何事情。 如果您实现更多自动化,那么其他人都可以做所有事情,这样您就可以集中精力。

  2.测试更多

  因为您擅长将所有内容掌握在自己的脑海中,所以您善于记住每当构建新功能时就需要微动的每个小开关,这只是为了确保您没有通过添加新代码破坏其他任何东西 。

  但是,您始终确定自己没有忘记什么吗? 而且,当Charles或Rosa添加代码时该怎么办? 他们是否具有需要切换的每个开关和切换的列表? 他们会错过一些东西。 因此,可能会发生的事情是……每当他们集成新代码时,您就必须为他们动摇。

  测试就是要让自己充满信心,即确信自己添加的新代码不会破坏任何旧代码; 有信心,您可以部署代码而无需在午夜醒来,因此想:"哦,如果用户在删除付款方式后(而不是之前)单击该按钮,他们将获得500。我需要滚动所有内容 现在回来。"

  是的,编写测试需要时间。 首先编写测试并不像首先编写实现代码那样令人满意。 但是,它可以帮助您保持头脑清醒。 通过测试编写,您可以首先关注代码应该做什么。 然后,您可以实现方法。

  测试就是要给自己一些空间,即大脑中的空间专注于重构和改进代码,因为您不再需要跟踪所有这些开关和切换,而无需费力地确保重构不会中断 任何东西。 您的测试将为您做到这一点。 现在,您有足够的空间来重构代码。

  哦,顺便说一句,如果您知道如何增加加分:

  自动化更多+测试更多=自动化测试更多

  使用自动化测试,任何人都可以贡献自己的代码,任何人都可以运行测试-您,您的队友,您的客户。 您将以更大的信心进行构建,以更大的信心进行调整,以更大的信心进行演示,并以更大的信心进行交付。

  3.让其他人更多

  当您回到大学时对项目进行分组时,我们都知道我们的代码很糟糕。 我们谁都不知道我们在做什么。 调试实际上只是在搅动代码行,以期使某些内容不受破坏。

  作为单人*职业者,您的眼睛可以看到100%的代码。 而且,很可能只有您的眼睛可以看到100%的代码。 那让你感到害怕和不安全。

  这种恐惧和不安全感将使您很难向他人寻求帮助,组建团队并让他人参与进来。 那是因为你永远不会觉得自己编写的代码已经准备好(足够好)给其他程序员留下深刻的印象。 实际上,他们可能会批评。 他们将了解您是如何使用骇客进行该API调用的,或者您是如何故意忽略了这种极端情况。

  恐惧和不安全感将限制你。 严重。 您与他人合作和向他人学习文凭大全的机会。 您有机会成为需要整个团队而不是一个人的商店的项目的一部分。 您成长的机会。

  因此,相反,养成让他人多进来的习惯。 请其他程序员看一下您的代码。 接受您的代码糟糕透顶,并希望那些审阅者会注意到您的代码糟糕透顶。 拥有它。 然后从中成长。 (顺便说一句,他们的代码可能也有糟糕的部分。)

  另外,当您开始执行此操作时,您会发现自己说:"好吧,特里,我想向您展示我已构建的该模块,但请给我……还有3天的时间,只是要先对其进行一点清理。" 不要那样做 您的代码总是可以改进的,并且永远不会准备好进行审查。 您将不断需要更多的时间来准备它。 只需拥有自己的代码-即今天的样子。 然后,请某人进来检查一下。

  通过更早或更频繁地执行此操作,您将发现代码开始有所改进。 这是因为在编写代码时,您将开始预料到您的习惯或缺点会导致审阅者畏缩或哭泣。 问责制不是很好吗?

  您的代码将永远是完美的。 不要等到当天,再请另一只眼睛重新审视并提供反馈。 否则,这一天将永远不会到来。

  4.教更多

  您将遇到许多非常具体的编码问题,并且将在网络上搜索解决方案。 您不会总是那样找到解决方案。 取而代之的是,您将在一些第三方文档中闲逛,使用不同的设置,创造性地考虑要解决的问题,然后再解决问题。

  从那里,您可以继续进行下一个问题。 但是,您正在抢夺世界-尤其是那些将要面对刚刚解决的相同问题的程序员–一些艰苦的知识。 在花时间和精力去解决这个小问题后,请不要浪费专业知识。 向他人传授所学知识。

  肯特·多德斯(Kent C. Dodds)称其为"增加价值的影响力"。 SWYX(Shawn Wang)称其为"公开学习"。

  无论是撰写教程文章还是博客文章,还是有关Stack Overflow的答案,您都需要捕获它。 会有其他人受益。 不要抢他们。

  您也会从中受益。 当您准备教书时,无论是实际的演示文稿,文章还是主题帖子,您都会比初次学习时更好地学习解决方案。 您将更加深入,并真正理解问题所在。 您将优化初始解决方案。 您将了解如何与初学者交流深入的低层次概念。

  您将发现并为各种难题制定出色的解决方案。 这就是您为客户做的。 但这也是您在特定代码段中所做的。 花些时间"增加您的价值的影响力"-以一种教别人遇到相同问题的方式分享您的发现。 您将使他们成为专家。 您将成为自己的一员。

  神速

  Godspeed在您即将踏上的旅程中。 到达这里将是曲折的。 但是,如果您想到达目的地-可能不会更快,但至少会更明智地-请注意一下自己:

  · 自动化更多。

  · 测试更多。

  · 让其他人参与进来。

  · 教更多。

  Alvin Lee是位于亚利桑那州凤凰城的全职开发人员和远程工作者。 他专门从事针对初创企业和小型企业的Web开发,技术咨询和原型构建。 他在Moonlight上可用,您可以在其中查看他的个人资料或请求雇用他提供服务。

上一篇:一年前的抢人大战后,25万月薪的AI工程师还存在吗?


下一篇:Python核心编程——Python起步