我曾经是一家公司中唯一了解特定技术的开发人员,还是唯一一家从事过我所从事的编程工作的开发人员,并曾在类似情况下担任承包商。(我还在团队环境中与其他知道不同工具的开发人员以及与我完全一样的其他开发人员一起工作。)
成为唯一程序员的优点
- 如您所述,您经常可以自由使用自己认为可以学习的任何工具或语言。在其他所有人都使用Current Technology Y的情况下,您不必总是先让同辈获得使用新技术X的许可。
- 您有更多责任。本质上,您既是每个项目的项目负责人又是开发人员,并且您有能力识别和实施新内容,因此您实际上也是部门负责人。(不要告诉销售人员。他们喜欢与决策者交谈,而且您没有时间与他们交谈。)
- 毫无疑问,完成的工作值得赞扬:事情的实现显然是由您和您一个人完成的。
- 您可以花更多的时间实际在自己的项目上,而花更少的时间在会议上,这些项目基本上是别人的(但是您可以作为支持人员,可能的备份之类的东西在那儿)。
缺点
- 正如David在评论中指出的那样,您是唯一的开发人员,因此没有您就无法完成任何开发。我曾经向我的兄弟吹嘘我是工作中某个特定项目的“家伙”。他为我准确地描述了我的处境:我被困住了。我无法继续在那家公司工作,因为我永远无法摆脱那个项目。(他也说得对。我花了几个月的时间进行了长时间的培训,然后我才将其交给有一定能力的人。)您可能会发现,在没有任何东西可以做的情况下,很难度过一个真正的假期没有你就可以完成。
- 正如Pierre所指出的,现场没有人进行代码审查或与您分享最佳实践。您可以通过各种方式与同龄人联系,但是没有什么能比敲击同事的要有效得多,就像让她看着您的代码5-10分钟一样。
- 同样,您可能很难获得使用新工具的经验。离线培训可能像休假时间一样稀少:有人会抱怨说,公司无力让您在一周内没有使用Language 3.0,而没有人让Language 2.0应用正常运行。
- 职业晋升可能极难管理。您可能没有一个可以为之奋斗的职位,即使职称变更也可能很难获得,并且年终审查没有任何参考框架,因此,如果没有其他方面的帮助,出色的工作可能会被忽略原因是没有人真正了解您的工作。
如果您决定搬到一家将与程序员团队一起工作的公司,我认为您的单身经历不会对您造成太大伤害。您缺乏设计模式的经验并不一定像您愿意学习它们一样重要。(在某些情况下,您是在面试具有相似背景的候选人,并且还具有公司所使用的任何方法的经验,但基本上每个人都是如此。)
同样,您在团队中缺乏经验的能力会与您戴很多帽子的能力相平衡。有些开发人员是优秀的团队合作者,但从未发展过管理项目的能力;您已经证明可以做到这一点。
我建议,当您是一个单独的开发人员时,应该花一些时间来阅读类似的开发人员正在使用的工具和技术,因此,即使您自己不使用它们,也要知道它们存在并且可以参考。他们在一次采访中,即使只是说:“是的,我已经阅读了一些有关MVC框架的信息,但是我自己并没有使用它们。” 尽您所能与其他开发人员保持联系:参加本地用户组会议,在博客上阅读和评论(或保留自己的博客),尝试不时参加研讨会,观看网络研讨会等。(您可能还会考虑使用lynda.com这样的网站进行内部培训:这不像其他地方为期一周的会议那么好,但是您可以自己观看视频,而不必让所有人陷入恐慌状态,因为不在办公室。)