像这里的许多人一样,我是一个单人开发团队。我负责从收集项目需求、设计概念屏幕、规划和开发数据库到编写所有代码的所有工作。
成为一个人的团队很好,但也有负面影响。我没有能力快速咨询其他开发人员,我的代码很少有第二眼,而且我相信你们也可以提出许多其他负面意见。
为了充分利用我的时间,并最有效地投入工作,我可以在日常工作中实施哪些技巧或做法,以尽可能成为最好的单人团队?
像这里的许多人一样,我是一个单人开发团队。我负责从收集项目需求、设计概念屏幕、规划和开发数据库到编写所有代码的所有工作。
成为一个人的团队很好,但也有负面影响。我没有能力快速咨询其他开发人员,我的代码很少有第二眼,而且我相信你们也可以提出许多其他负面意见。
为了充分利用我的时间,并最有效地投入工作,我可以在日常工作中实施哪些技巧或做法,以尽可能成为最好的单人团队?
我每天要做的事情的清单。
尽可能多地消除干扰,专注于任务。关闭电子邮件、关闭 IM 等……即使在一段时间内,然后在休息期间检查它们。
花时间学习其他编码技术、工具和编程智慧。我发现这对我的发展至关重要。编写代码并感觉富有成效是很容易的。如果您只是掌握了更多知识/武器来破解下一个小部件,那会怎样呢?我知道这听起来确实适得其反,但事实并非如此。知识/知道如何是我们的真实货币。我们知道的越多,我们就越能更好地决定应该如何做某事,并且做得更快。
休息一下,注意自己的身体。当我们疲倦时,我们不会思考,会犯更多错误,更容易变得沮丧,等等......
学习使用 80 / 20 规则对您有利。我不是说吝啬或懒惰。通常,尽管我们会在没有必要的情况下减少 20% 的费用。
为自己设定目标(每天、每周、每两周)。确保目标也与您正在编码的目标一致,否则您可能会发现自己浪费了一些时间。
从技术方面考虑:
我正在学习花更多的时间来计划我的一天。这包括计划项目,直到为我需要做的编程编写伪代码。我发现,由于我的日程安排被打断,我很难开始做某事。将所有内容分解为小任务可以在中断后更容易开始。
根据运筹学,最短的工作优先是完成最多事情的最佳调度程序。
我编写并运行集成和系统测试,但没有单元测试,因为我不需要早期(预集成)测试:应该测试内部实现,还是只测试公共行为?
康威定律的一个推论是,您需要测试分离/集成开发人员的内部软件接口,而“一个人的军队”不需要以这种方式显式测试他的内部接口。
许多其他技巧都很好,但它们同样适用于团队中的开发人员以及单独的开发人员。
我认为作为一个人的团队最难的事情是与公司其他人进行有效的沟通。在任何关于如何最好地构建软件的会议或讨论中,你将永远是一个孤独的程序员的声音。
因此,我建议尝试提高谈判技巧,并专注于改进用非程序员可以理解的方式描述技术概念的方式。阅读《Getting to Yes》和《如何赢得朋友和影响他人》等书籍是一个很好的开始。
当不止一个人同意一个观点时,这个观点会自动获得你试图说服的人的信任。在没有这种可能性的情况下,你需要更加努力地准备你的论点,用经过充分研究的证据和平衡的观点。
我也有同样的情况。上面已经有很多很好的建议,但我要补充的一件事是找到你最好的编码时间,并确保你在那段时间编码。早上我有几个小时的时间似乎在编码方面处于最佳状态。我尽量让那段时间不受任何干扰。计划会议、编写文档、测试(至少是乏味、重复的事情)以及所有其他事情,以减少您的工作效率。当您的编码效率提高 2 到 5 倍时,请保留这些编码时间。
我使用一个文本文件来收集我每天所做的所有事情。每次遇到问题或有疑问或找到解决方案时,我都会将其添加到我的文件中。它的技术含量很低,但它提供了丰富的信息,例如“我大部分时间都花在哪里?” 或“我之前是如何解决这个问题的?”。还可以在计费周期结束时为您的客户提供一个小时列表。
我还使用另一个文本文件(每个客户),其中包含我盘子上的所有工作项目,按优先级排列,并且经常更新。它可以帮助我和我的客户专注于我接下来应该做的事情,因此泵总是处于启动状态。
最终我会从纯文本文件转移到使用 FogBugz 之类的东西,但现在我无法击败价格,或者搜索的容易程度,或者电子邮件的容易程度。