程序员不是在编写代码,而是在解决问题 - LanRaccoon


我们是程序员,所以编写代码就是我们要做的工作,不是吗?但是,我们的工作比整天在屏幕前敲击键盘上的按键要复杂得多。如果跳出编程语言,框架和流程的范畴,超出了测试套件、冲刺和Jira的范畴,那么您总会发现需要解决的问题。 
作为程序员,我们首先是问题的解决者。我们解决了其他人遇到的问题,并使用我们可以使用的所有工具提供了解决方案。

软件不是目的
让我们先解决这个问题:软件本身并不是我们工作的目的。您编写的软件必须与现实世界中的问题相关,否则,您将获得一个无用的,尽管漂亮的程序。不仅如此,应该首先评估您编写的软件对问题的解决程度。该软件是用于解决特定问题的工具。使用您可以想到的最佳软件:它干净,易于阅读,并以所有正确的方式使用所有正确的模式。如果该软件没有执行您需要做的事情,那就没用了。
 
了解问题域
软件开发的第一步应该是了解问题。花费所有必要的时间来完全了解您要做什么。这适用于小型任务和整个项目。我认为这甚至适用于整个项目。努力解决错误问题而产生的问题很难解决。在大多数情况下,它们涉及大量的重构并浪费大量的工作(您花了大量时间创建的块)。更不用说当您必须向客户解释整个应用程序为什么出错时会遇到的尴尬了。 

完美是足够好的敌人
既然我已经提出了理由,那么您应该专注于解决问题,而不是编写代码,我想提醒您帕累托原理,或更普遍地称为80/20规则。作为程序员,我们有时会被解决的一个很酷的问题所困扰,以至于忘记了问自己:“虽然我在研究正确的问题吗?”。时不时地休息一下,看看为什么做自己的事情是值得的。以下是一些可以帮助您的问题:解决此问题有多少价值?有另一种更快的方法吗?我能想到一个容易实现的妥协方案吗? 
这些问题并不总是可以自己解决的(除非您在自己的项目中进行)。值得与利益相关者聊天,看看他们真正关心的是什么。如果可以,请收集用户的反馈。通常,快速的A / B测试,可以对下一步的工作大有帮助。实验并迭代!

选择你的战斗
并非每个问题都需要技术解决方案。您不需要其他任何应用程序。一切都是有代价的。您编写的代码浪费了您的时间和资源(编写和运行)。另外,拥有的代码越多,必须维护的代码就越多,出现问题的机会就越大。过程中的一小步手动操作可以为您节省大量开发工作和许多潜在问题。有时,手动操作是正确的方法,尤其是在项目开始时。这将使您有机会了解该步骤的重要性,需要多久执行一次,为您的项目增加多少价值。此外,它使您有时间深入思考您的过程,而手动步骤可以为您提供软件无法实现的灵活性。简而言之,手动更新软件比做新的事情要好。Netflix在我们今天所知道的巨大的流媒体庞然大物之前,是通过手动向订户的DVD发送电子邮件开始的。(来源

最好的代码是根本没有代码
我敢肯定,您现在已经注意到,添加代码会带来风险。迟早会出现错误。您所拥有的代码行数与维护代码的工作量之间存在非线性关系。换句话说:更多代码意味着更多问题。 
我强烈建议您使用现成的解决方案来解决常见问题。
(banq注:最好的代码是没有代码,但是移植现有解决方案也是有风险的,因为解决方案的上下文不同,学习现有解决方案也是有成本的,最好的代码是少而精的代码,将精力集中到核心问题,其他通用方案采取现成解决方案)