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

你和其他程序员可能经常犯的6个错误

时间:2023-03-15 13:19:31 科技观察

我做了一段时间的CTO,我觉得这是一个很好的锻炼机会,因为我不仅可以写代码,还可以带领团队,管理项目,设计体系结构、组织工作、审查代码、调查不同的问题、研究各种解决方案、学习许多技术、联系客户等等。通过如此广泛的任务,我学到了很多不同的技能,也有很多想法可以与大家分享。也许您的观点不同,也许您学到了其他东西并想在这里与我们分享。我期待听到您的意见和见解。这篇文章主要针对CTO和程序员,因为并不是每个人都遇到过我观察、学习和解决的这些问题。问题1.“我对XX技术/工具不熟悉”这是我想介绍一门新技术或语言时最常听到的一句话。这也是我让一个同学用他以前没用过的工具来测试他的想法时经常遇到的问题。这让我很惊讶,因为我问的是一个非常聪明的开发人员。我们是否可以轻松学习新事物、一些新想法、模式和架构?我们不应该不断学习新事物,获取最新消息吗?或者这只是一种错觉?也许我们对很久以前学到的东西很满意,不想替换?也许是我们没有时间学习新事物?也许我们不能有不同的想法?过了一会儿,我分配任务的人完成了任务。他们做到了,最初的犹豫终于被克服了,他们的舒适区也扩大了。那么,最初缺乏动力的原因是什么?我认为这是对新事物的恐惧,对失败的恐惧。我们对自己所做的事情感到自在,因为我们理解它并且我们认为我们擅长它。事实上,只要我们以学习以前技能的相同方式学习和练习,我们就可以擅长其他一切。问题二、“一开始想太多”这是我在开始一个新项目时最常遇到的问题。程序员更愿意加入已经在开发中的项目,因为不需要做出决定。新项目不同,我们需要考虑和确定需求和功能。我见过的唯一失败是首先实施身份验证。这不是我们应用程序中最重要的功能吗?我们不应该考虑安全性吗?一点都不。我们应该尽可能缩小范围。我们应该提供一个MVP来演示概念验证。我们应该提供应用程序的基本业务规则和核心功能,而不是考虑性能、分页、安全认证、扩展等。这非常简单,至少一开始是这样。如何?我认为与客户的沟通非常重要。这是他们的钱,他们的投资,他们是付钱给我们的人。我们不想浪费他们的钱,他也不想。我们应该一起讨论重点是什么,我们应该为他们的潜在客户或投资者提供什么。我们不应该专注于其他人不会考虑的地方,例如登录/注册功能、更改电子邮件或删除帐户。问题3.“没有选择正确的工具”我曾多次与不同的公司讨论过他们的开发堆栈。有时他们使用Ruby做一些花哨的、并发的和分布式的事情……。当我问他们为什么选择这种相对低效的语言时,他们的回答是所有程序员都最了解Ruby。当然,这显然是最快最便宜的方式。他们没有考虑长期可维护性。他们只关注价格和便利性。这给他们留下了很多技术债务,并且可能需要进行大量黑客攻击才能实现既定目标。另一个普遍现象是,很多程序员在不熟悉业务规则之前就选择了技术栈。这种现象经常出现在热情的程序员中。他们非常热衷于开始开发和使用所有最新的框架。他们不去想系统会做什么,需要解决什么问题,他们已经选择好了数据库和语言。遇到这种情况怎么办?我的建议是让程序员了解很多不同的语言。在熟悉了问题和用例之后,我们可以讨论这个工具的优缺点。很高兴知道市场上发生了什么,有哪些框架或语言,以及它们解决了什么问题。坚持使用一个大家都知道的工具会给开发过程带来很多痛苦。问题4、“重新发明轮子”的问题,主要是对其他人的参与不熟悉。当我审查其他人的代码时,我经常看到这一点。我经常问:“你看到那个类/模块/函数了吗?它和你已经实现的一模一样。”这主要是因为程序员不经常扫描代码,不知道有些代码不用在任何地方都可以复用。到处重复提取。如果我们遵循一些常见的模式、指南和架构,则尤其如此。很可能,其他程序员已经在其他地方解决了这个问题,提取、抽象出我们现在需要的功能。为了避免这种情况,我们应该以更明智的方式进行更多的代码审查。我们不应该检查其他人的括号是否对齐或缺少逗号,这应该留给自动化工具。我们需要审查业务逻辑和行为。过了一会儿,我们认为,“Kamil已经实现了它,我可以使用他的模块”。问题5.“学语法,不学编程”我遇到过两种程序员。我实际上可以说存在第三种程序员,它是前两种的结合,但在这里并不重要。第一个是非常好的编码器。他们了解所用语言的方方面面,了解所有标准库和许多第三方工具。他们知道8种编写循环的方法,如何使用模式匹配和所有语法。但问题是,他们不知道架构和模式。他们的代码是必要的,但他们不能提取功能、处理封装和分解到不同的层或模块中。他们只是编码。第二种是大工匠(craftsmen)。他们是真正的架构师,他们模块化他们的应用程序,使用单独的库来提取组件,并遵循模式来设计高效的流程。只是他们不会编码。他们在低效的算法、弃用的函数、过时的库上花费了太多时间。也许他们的架构系统可靠,他们的工作流程强大,但他们的代码可能丑陋且难以阅读。哪里有问题?第一种情况可能是程序员只阅读与他使用的语言相关的编程书籍。相当于只学语法不学别的。他们认为他们知道语法,所以他们知道如何编程。其实我们只是写代码。第二种情况是当程序员忘记他们使用的语言或工具的新版本时,他们不阅读变更日志、新闻和时事通讯。解决办法是什么?就是说项目中同时存在两种人,大家会互相学习。这样大家才会满意,受益最大。问题6.“忽略模式”当一个人加入一个基础扎实的项目时,他很可能会遵循一些规则和指导方针。通常,开发人员会在任何地方都有一个约定,以使其在任何地方都可读和理解。不幸的是,当一个新人加入编码时,他可能不知道内部正在开发的项目的相似性。他可能会使用不符合当前要求的不同方法。我们非常热衷于提供新功能,因此不想浪费时间观察现有趋势和模式。由于我们自己的习惯,我们完全无视既定规则并打破常规。这很糟糕吗?不经常。有时,尤其是当有经验的程序员加入团队时,这会很好。他们可以教其他人如何构建应用程序并与他们分享知识。这有时会给现有架构带来一些新的视角,改进一些概念。但实际上,这种情况很少见。大多数时候,新开发人员只会带来麻烦。这在《人月神话》一书中有很好的描述。如何解决?我觉得有必要介绍一个新项目。我们不应该尽快要求新功能,而是可以深入既定规则的人。我们应该指定一个可以从一开始就指导别人的主管,让他掌握所有的概念。总结编程的世界里有很多问题,我们每个人都有不同的技能,不同的能力和动力来源。甚至我们的想法也不一样。我们应该相互沟通,共同解决问题,做出取舍。学习是关键。自我发展不应停止。我们必须这样做,除非我们不想成为优秀的程序员。不断学习和理解新事物才是我们应该做的。阅读书籍是最好的方式,结对编程是第二种方式,订阅时事通讯可能是第三种方式,关注一些博客可能是另一种方式。可能性是独一无二的,我们只需要选择适合自己的就可以与众不同。来自:medium.com,由Specs翻译和组织,在CoderResourceNetwork上发布。