我是一家小型软件公司的两个程序员之一,老板们非常不懂技术(“什么是浏览器”——上周真的有人这样问)。
优点是我可以自己选择大部分的工作方式。
测试驱动开发(TDD)——我们的老板有过不好的经历或者别的什么事情。只要提到测试,她就像在表演创伤后应激障碍症一样。
领域驱动设计(DDD)——是的。
模型驱动设计/架构(MDA)——是的。
你们会测试吗?——不会。测试工作需要由销售和支持人员以及老板来做。所以一旦离开我的开发机器,几乎没有什么被测试过。
单元测试(Unit Testing)——如果我做了,可能会被解雇。而且这也是唯一会让我被解雇的东西。
集成测试(Integration Testing)——参见“你们会测试吗?”
验收测试(Acceptance Testing)——好吧,总得有一天把它部署出去吧?
代码审查(Code Reviews)——其他人都看不懂。我看过所有人的代码。但真希望我没看过。
创新技术(Spring,Hibernate,Wicket,JSF,WS,REST,...)- 是的。但我因此受到了批评。我是那个“孩子”,不知道任何在过去十年中没有发明的东西(尽管我已经30岁,并且在我的桌子上有“数据库系统阅读”)。
敏捷 - 我不瀑布流。但我也不真正敏捷。
配对编程 - 你不想试着与我们公司的另一个“程序员”交谈。
UML - 不。但我有时会在白板上画带有标识符的框。老板们喜欢这个。幸好他们不太懂技术,否则我可能会看到更多的框。
特定领域语言 - 不。
需求规格(如何?) - 不。
持续集成 - 不。
代码覆盖工具 - 不。
贫血领域模型 - 是的。尝试过。在大多数情况下,我不喜欢它并且不使用它。
沟通(Wiki,邮件,即时消息,邮件列表,其他文档) - 尝试过,但无法获得同事的支持。我们的MediaWiki安装仍然具有默认的徽标图形。
工作量估计 - 我们必须估计每个任务需要多长时间完成。这就是客户要付费的。而且这也是我们预期在项目上花费的时间。即使是在开发新应用程序和修复错误(是的,我们会向客户收费)以及添加功能等方面,我们也会这样做。
团队规模 - 1。让我说一下,这不是一个好的工作方式。能够实时与其他有能力的程序员交流想法要好得多。
会议 - 每周几个小时,有时会加倍,很少少于这个时间。我参加的一半会议是与客户会面的,另一半则完全是内部会议。
代码指标 - 没有。
静态代码分析 - 没有。
缺陷跟踪 - 没有像我应该做的那样多。