开发人员必读——编程失败的10大根源!

全世界只有不到1%的人会朝着自己的梦想行动

你真是个特别的人

敏捷 背后是勇敢实践的心

他们在五湖四海,也在你身边,他们正在实践敏捷。

当企业家在解决问题时,企业家思维是如何影响他们做出决策,最终聚焦在更大的愿景而采取行动呢?

编辑 Ⅰ小π姐姐

来源 Ⅰ 网络各平台

开发人员常犯错误

如果你刚好打开了这篇文章,那么我想你很可能和我一样,是一位程序员,我们很可能拥有过相似的编码场景,犯过同样的错误,那么即使你我虽未谋面,我们定会惺惺相惜。

我为什么这样说呢?下面我们来做个测试,我会列出在我的写代码生涯中遇到的一些常见错误,当你看到每一条时,如果你不由自主地点点头或者内心OS:是的,我也遇到过!

那我们就不是陌生人了,我们是有着同样经历的两个程序猿!

你曾经

没有花费足够时间去思考问题之前就采取行动?

假设这个功能就是需求?

认为这个功能完成起来太简单了?

假想了一些问题,然后试着去解决他们?

未经测试就发布代码?

花了太多时间在不必要的工作上?

事事独当一面(英雄程序员)

运用错误的任务分离和管理?

尝试让第一个版本就做到完美?

低估了项目的范围和完成时间?

你是不是感同深受?

事实上,关键的不是你使用的编程语言,不是你究竟是哪种开发人员,也不管你的经验到底有多少?

关键是:你是一名开发人员,我们都容易陷入一种固有的行为模式,刚开始好像看起来效率很高,让你感觉自己很聪明,到最后发现就是一团糟!

和每个开发人员一样,在早期和其他同事从事不同的软件开发工作时,我犯了很多相同的错误,有一天我突然意识到,我的行为模式是不是需要重新调整一下?

因为我发现,之所以重复同样的错误,是因为我们在同一个认知或是行为模式下思考。

这对我来说是一个重大的突破。

你想象一下,我们没有投入有效的时间去开发软件,反而花费大量时间陷入到我们自己的固有行为模式的重复中,这种长久以来的固有行为模式可能让我们浪费了一天又一天的时间,困在一行一行代码中。

所以,我决定尝试改变这种固有模式,从过去的错误中吸取经验,带着强烈的意愿和一点小运气,我竟然成功地做到了!

小小行动,大大思索!

那么,我的第一步行动是什么呢?

我向最优秀的一切去学习!

每天除了工作的闲暇空隙,我都会利用短短的几分钟,阅读文章,书籍,看视频,学习最好的实践,学习如何改善我们的编码风格,避免再犯同样的错误

我终于发现:想要将可能出现的错误风险降到最低,即使拥有出色的编程技能(哪怕这项技能灰常灰常灰常地重要)也是不够的,重要的反而是编码以外的东西。

为了避免最普遍的编码错误发生,比如错过deadline,编写不必要的代码行,浪费大量时间。你需要做的是拓展你的视野。

作为一名开发人员,你应该避免从个人的角度去看待你开发的软件,取而代之的是从更宏观的视角去审视这个软件。

宏观的视角意味着关注大方向,开发这款软件的目标是什么?做这个项目的意义是什么?而不是仅仅关注代码的功能性。

慢慢地我终于意识到,当我们在开发软件时,不能忘记问自己的一个问题是:在起初我们为什么要开发这款软件?

这是什么意思呢?这意味着开发人员倾向于将他们封锁在自己写的一行行代码里,而忽略了开发软件的初衷。

帮助你的用户解决问题,让他们的生活更加便捷是你们开发软件的初衷,那么时刻在脑海里铭记这一点,当你这样做时,你会重新认知你的软件开发工作,你会站在用户的角度,以更有效率的方式进行手头的工作。

像这样思考时,你的编码风格是怎样就不是唯一重要的事情了!

当我在公司带领着开发团队时,同时我也在做自己的一份副业,从这份副业中,我重新认知了我的编码过程,我从“关注代码”转变成为“关注软件”。

其实要做到很简单,听起来还挺讽刺,但是为了提升我的代码,我做的第一件事竟然就是从代码里走出来,站在代码外看世界。

有点诡异,确实有效!

在进行我自己的副业时,我会读很多文章,关于企业家们是如何思考的,当他们在面对问题时,他们如何利用有限的资源在有限的时间里将他们的商业做成功。

我发现,企业家们遵循的战略可以帮助开发人员转换思维,开发出更好,bug更少的软件。于是我自己开始实践,将这些理念运用到我自己的工作中,最后确实取得了出色的成果。

那么,下面我们就一起来看看,如何利用企业家思维,帮助我们避免开发人员通常会犯的错误。

没有花费足够时间去思考问题前就采取行动

接到问题不假思索马上开始写代码,到最后发现我们选择了错误的工具,错误的架构。

于是,我们面临着比之前想要修复的问题还要更严重的问题,这些问题可能来自于复杂的设计,让解决方案无法管理,最终导致维护项目架构变得困难。

那么,从企业家的角度思考问题,我们怎么做呢?

作为一个企业家,首先要做的是深挖市场,发现消费者遇到的真正问题是什么。

他们知道,如果没有从不同的角度去思考,切身地理解到问题的本质,最终将会导致更大问题的发生,比如时间浪费,资源浪费。

毕竟,时间和资源已经有限,必须禁止浪费时间在不必要的事情。

小结: 没有找到问题的本质前,不要采取行动!

假设这个功能就是需求

关于自己创建的软件,如果你对软件所需要的功能没有深入理解,你可能会产生一些误解的概念,创造出不必要的功能,甚至是有悖于整个软件开发的初衷。

那么,最终你将会浪费时间在不必要的功能开发上,同时错过核心功能的开发。

从企业家观点看,这是不能容忍的。

在开发软件时,你的焦点应该放在解决用户问题的功能上,通过聆听客户的声音,分析他们的需求,你可以创建满足他们的功能,其他则不用排在第一优先级。

小结:不用假设,有质疑,马上提出,像个小白一样问清楚每个需求!

假设新的功能是很容易能够完成的

作为一名开发人员,我们总是自带一种能力:低估功能研发的过程。有时候,我们甚至认为,这个问题太简单了,我都不用过脑子就知道怎么做出来。

大忌!

淹死的总是那些会游泳的。

这类行为在软件开发中会导致错过Deadline,因为没有什么事情是容易的,每件事情都必须按照计划认真执行。

一个企业家非常清楚:没有一个清晰的执行计划,隐形的问题很可能随时出现,并最终导致更多的麻烦!

小结:从不低估任何问题,思考,计划,再执行!

创造想象中的问题,然后尝试着去解决

作为一名开发人员我们喜欢挑战(你知道我什么意思:))

有时候我们喜欢写代码并没有别的目的,仅仅是满足我们这颗躁动的心,向世人证明我可以完成这个挑战。

甚至有时候我们会预测一些可能会出现的问题,然后写出对应的功能。

你疯了吗?

当开发人员在YY着可能会出现的问题时,企业家反而在避免。

很简单,他们只把重点关注在已经存在的问题上,如何尽快解决现有的麻烦是他们的工作重点,换句话说,他们把时间投资在了对他们的生意很必要的事情上。

小结:不要预测将来的问题,聚焦在你已有的问题上。

未经测试就发布代码

还记得自己上次这样做是什么时候吗?

我们这样做有时候是因为我们对手头的代码感到兴奋,有时候甚至资深的开发人员也会犯这样的错误。

很多开发人员将测试看成是负担,所以一经研发完成立马跳过测试。他们没有意识到的是:跳过这一步,将会产生更多的麻烦,他们终将会不眠不休,与Bug决战到底。

从企业家角度,他们倾向于辨别和测试每件事情,在产品真正推出之前。

这是因为,他们不希望自己推出的产品,是他们的潜在客户不想要或是不需要的。

那么在推出任何一款产品之前,他们总是会严格测试,不管问题有没有存在。因为这样,他们才能够降低失败的风险。

小结:所有的代码必须经过至少一次的测试。

花费太多时间在不必要的事情上

通常来说,当开发人员执着于某个点时,会发生这样的状况:不论这个事情是重要还是不重要,他们尝试着去解决这个问题,一遍又一遍,如上所述,他们喜欢挑战。最后,他们也许会成功,但是成本有多高呢?

那么,关键的问题是:我们需要决策,到底这个问题是不是真的需要被解决。假如他们停下来,从更远的视角去看这个问题,他们就不会浪费时间在这个不重要的问题上了。

从另一方面说,企业家知道他们不能够奢侈地浪费时间在不必要的事情上,所以,他们质疑每个出现的问题,排列他们的优先级。

小结:浪费自己时间等于自杀,浪费别人时间等于谋杀。

事事独当一面

在这一点上,我们说的不是那些组织架构分明的大企业,假如你有一个领导,他知道如何去分配工作,那对于他来说也不存在这个问题。

但是在一些公司,尤其是小公司或者是创业公司,开发人员有一种倾向:他们自己亲力亲为每件事情,他们认为如果把自己的工作给了别人,别人会犯错误。

根本上讲,他们不信任别人。

最终他们变得超负荷,开发的进度也开始变慢。

企业家非常清楚地知道,自己是不可能去做每件事情的。他们会主动创造一种信任的环境,每个人可以寻求帮助,任务分配和团队工作可以有效提升工作效率。

小结:信任你的团队,记住:每个人都需要帮助。

错误的任务分配和管理

我相信任务创建的过程在软件开发中占据重要的一环,开发人员通常会选择将很多任务合在一起,而不是将任务拆分。

这样导致的后果是,当他们开始执行任务时,任务本身看起来会比真实的情况更多,他们就不知道如何下手了。

从另一个角度讲,如果你将任务拆分成一个一个小小的任务,你就可以选择小步快跑,一步一步来,最终完成一个大的愿景。

同时,将一个任务拆解成开有助于解决复杂的问题,让你能够更有效和更简单地管理任务。

我相信,企业家们都会有一个“start small”的思维模式。

小结:小步快跑,拒绝负重前行。

尝试着让第一个版本就做到完美

开发人员总是想在第一版本时就力争完美,他们认为如果不把每个功能都完成,那些用户就会失望,他们甚至不会喜欢产品。

这种想法会导致deadline的噩梦,以及第一个版本的延迟发布。

然而,企业家们倾向于倚重反馈环。他们的信条是:创建产品-推到市场-更新迭代。

他们知道产品推到市场越快越好。只要他们发布了第一个版本,他们就会仔细听取用户的反馈,分析他们的反馈数据,这样他们会让产品越来越完善,并且避免了不必要功能的开发浪费。

小结:创建产品-推到市场-更新迭代

低估了项目的范围和完成时间

有多少次你曾经因为错误deadline而不眠不休,压力山大?

你是否问过自己,我为什么会错过deadline?

我相信,作为一名开发人员,deadline一直是个噩梦,通常我们倾向于低估项目的体量,这样最终会导致我们不能精确地计算项目完成的时间。

我相信80%的开发过程应该致力于建立软件需求并设计功能列表和适当的架构。 另外20%则用于编码。

然而,说得到做不到。从操作上来说,对所有的研发团队都是一个挑战。

对一个拥有企业家思维的人来说,时间是最重要的资源。因此,他们非常细心地定义他们地商业范围,精确地评估项目时间。

小结:时间就是金钱,时间就是资源,你的实际花费时长往往比预估要更久,所以,时刻紧抓时间的小尾巴!

总结

我见过许多开发人员因为在开发的早期犯了错误而不得不从头开始写他们的软件。

想象一下,如果我们从一开始就以更好的方式规划和组织开发过程的场景,那么我们可以将大把的时间用于开发新产品或改进现有产品,而不是重写软件。

我一直相信,如果我们能够专注于我们正在做的事情的目标是什么,以及为什么我们这样做,一切将更加清晰。

时刻铭记心中的蓝图,我们将会开发出更好,更高质量的软件。

搬砖是因为心中有城堡。

此刻我们在造船,因为我们的未来是遨游汪洋。

https://medium.freecodecamp.org/how-entrepreneur-mindset-can-help-programmers-design-better-software-620482435e56

•最小成本,客户反馈,快速迭代

如何用“精益”方法让企业少走弯路?

•七宗罪

被诅咒的团队:细数程序员的七宗罪

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181205B1AYLA00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券