36

我在一家很小的公司里做一个单独的开发人员。我的工作很混乱,我正在寻找使它更有条理的方法。

一个问题是我的项目几乎没有管理。很少有人问我在做什么,或者我是否有任何问题。在某个时候,有人谈论每周状态会议,但那是前一段时间了。似乎如果我想要那样的东西,我必须自己安排这些。有时我对下一步应该做什么有点迷茫,因为我没有任务或明确的时间表。

从书籍和文章中,我发现了许多可能有用的东西。就像有一个好的编码标准(只有一个粗略的风格指南,在我看来有点过时了),代码检查,TDD,单元测试,错误数据库......但在一家小公司似乎没有资源或时间任何不重要的东西。我在嵌入式领域工作的事实似乎只会让事情变得更加复杂。

我觉得还有一种在短时间内偷工减料和快速破解的习惯。这导致未完成和不专业的产品和错误等待在以后出现。我想他们也很难维持。所以,我即将继承一个具有挑战性的代码库,进行需要学习很多新事物的新开发,我想同时尝试为它构建一个流程。最后可能会有所收获,但由于经验不足,我不确定是否可以成功。

在像这样的小商店里,环境远非最适合编程。偶尔还需要做很多其他的事情,比如客户支持、接听电话、签署包裹、硬件测试、组装以及任何可能出现的杂项任务。所以你对资源有了概念。这并不全是坏事(有时解决一些客户问题很有启发性),我相信它可以改进,但这是我真正关心的其他事情。

有可能在这样的地方进行开发吗?

进行某种管理会有所帮助吗?什么样的?

有没有可能用小资源做出优质产品?

我如何让自己和他人相信这家成功运作了几十年的公司需要改变?什么是必不可少的?

也许有人在类似的商店工作?

4

9 回答 9

17
  1. 对一切使用源代码管理
  2. 在开始之前制定规范并获得批准 - 会有阻力,但解释这是为了他们自己好。
  3. 单元测试!这很痛苦,因为您只想完成它,但从长远来看,这将节省您的时间。
  4. 如果您负担得起,请使用错误跟踪 - Bugzilla 或 FogBugz。
于 2009-09-23T00:33:59.857 回答
7

我的建议是不要太极端。根据我的经验,纯粹的敏捷或纯粹的传统是行不通的。在您使用任何流程之前,请先了解要解决的问题。

我个人使用Agile RUP. 我做了一些前期工作,例如调查实际需求,进行可能扩展的高级设计。并要求客户签署一些主要的高层要求。

如果您在小组中工作,详细设计或规范可能不值得。当然,如果有一些库被许多人共享,那是值得的。

根据风险(可能性和影响)决定预先投资什么。

此外,许多软件最佳实践确实是“最好的”,例如版本控制、自动测试(对我来说,我只使用它来早期检测回归,因为我不相信 TDD 作为开发的驱动力)。我建议您阅读“实用程序员”,它介绍了许多技术。

至于回答你的问题:

(1)。有可能在这样的地方进行开发吗?

是的,但正如我所说,将其拖到适合您的组织。

(2)。进行某种管理会有所帮助吗?什么样的?

管理有所帮助,但没有控制狂。计划什么时候做什么:整合,解决冲突,一些里程碑的死线。并大致按计划进行(我特别喜欢 Scrum 的 sprint)。

(3)。有没有可能用小资源做出优质产品?

只要工作的规模、开发的时间和团队的规模达到平衡。如果您对质量的定义与我相同。对我来说,质量意味着:以有效和可靠的方式解决它所提出的问题。

(4)。我如何让自己和他人相信这家成功运作了几十年的公司需要改变?什么是必不可少的?

指出问题。如果没有,为什么要改变?如果您想更改,您应该能够识别问题或潜在问题。指出问题。

一些大的是:

  • 没有任何流程,新入职的新人很难融入其中,因为他们必须从观察他人的处事中学习。

  • 没有过程,就更难在压力下工作。

  • 没有时间表,很难确定进度。

  • 如果没有自动测试,识别问题和回归将需要更多时间。

  • 如果没有版本控制,将更难回滚错误,并且每个团队成员的工作分离将会变得一团糟。

只是我的。

于 2009-09-23T01:01:09.183 回答
2

您需要与所有者合作并设置短期和长期目标。即使仅通过电子邮件,您也希望让他们知道进度。

您将需要在工作日执行一些命令,否则您将永远无法完成任何事情(那些长期目标)。

当您可以编码时,将您的一天划分为多个块,当您进行黑客攻击以使其保持在一起时,当您回复电子邮件等时。

绝对设置一个错误跟踪器。这有助于保持您的电子邮件干净。您甚至可以设置一个电子邮件地址来转发错误以便稍后进行分类。这很好,因为错误报告者最终会厌倦错误跟踪器,并且无论如何只想通过电子邮件向您发送错误。

编辑

正如 lod3n 所说,源代码控制,但你已经在使用它了???!!!?!

于 2009-09-23T00:37:00.790 回答
2

去过也做过。

《规划极限编程》这本书帮了大忙。我用了贴在墙上的 3x5 卡片。这让我的老板了解我的进展,帮助进行估算和规划,并使我保持在正轨上。如果您老板的期望不切实际,则计划游戏会提供很好的弹药。

正如其他人所说,即使您是唯一的开发人员,单元测试也会有所帮助。我发现 TDD 风格很有价值。

lod3n 关于源代码控制是绝对正确的。

我以前使用过 XP 风格的迭代;您可能还想建立一个积压的项目(甚至是简单的电子表格或 3x5 卡片)。

避免死亡行军。在连续两周不加班的意义上坚持 40 小时。在工作之外花额外的时间学习新技能——不仅仅是技术,还有原则和最佳实践。

于 2009-09-23T01:22:54.043 回答
1

有一个错误跟踪系统,包括缺陷和新功能。不要依赖你的记忆。

持续集成和自动化构建甚至可以帮助单个开发人员。

不能足够强调源代码控制的建议。

于 2009-09-23T00:37:30.040 回答
1

我决定不需要单元测试,因为我可以进行自动化的功能/集成测试:因为通过增量开发,在集成之前不需要测试。

于 2009-09-23T00:50:21.077 回答
1

as crazy as this sounds I use scrum just because I like the concepts of sprints, and backlogs. It makes it easier to set realistic goals. Of course the idea of scrum master and team is all you but if you are working on outside projects where it is possible that you may pick up an extra team member with your backlogs it will be easy to distribute work. Maybe I just like backlogs. With scrum you will need to get someone to be the product manager to talk about the features of the product. Version control is a must at probably should be implemented b4 even worrying about a software development process. I have worked in a company that started from 2 developers and went to 12 in a year. We started with no version control and low coding standards. The changes you will need to make will be gradual so don't worry about rushing to do a 180. Set a goal to change one thing a month and find supporters of your changes to make things go smooth.

于 2009-09-23T01:33:32.030 回答
0

除了其他人的建议之外,我想说的是,如果您资源紧张,但对如何完成工作有更多发言权,您应该充分利用现成的开源产品和库。这可以利用其他人的努力,节省您的时间,确保您的代码库不会变得过于深奥,并增加您的技能,因此您最终不会成为其他地方无用的东西的专家。

于 2009-09-23T01:48:22.453 回答
-1

首先,让我们区分开发过程和最佳实践。源代码控制、缺陷跟踪、单元测试等最佳实践是给定的。

然后是实际的开发过程。我总是建议有一个流程,无论团队大小。诀窍是找到正确的过程。你现在有一个流程——它只是一个临时流程,对你来说似乎不太好。很少有人可以采取教科书开发过程并直接应用它。您需要做的是根据您的公司需求和文化定制流程。尽可能多地查看开发范例,并尝试找到合适的东西,然后他们开始根据您的需要进行塑造。您可能不得不尝试使用许多不同的过程而失败。也许个人软件过程将是一个好的开始过程,也许是一个敏捷过程,一个 RUP 的变体?你有很多选择,开始尝试吧。

您还必须与组织的其他成员合作——他们需要成为流程的一部分。您可能是唯一的开发人员,但开发过程涉及的不仅仅是开发人员,它还涉及对产品有发言权或影响力的任何人。

这可能不是一个具体的答案,但我的观点是你需要某种过程。所以开始研究它们并尝试它们并根据你的需要塑造它们,直到你有一些有用的东西。

于 2009-09-23T00:58:04.250 回答