最近,当地一家广告公司向我提供了工作机会。他们正在内部进行所有Web /交互式开发,并增加了他们的开发团队。
我已经厌倦了自己的活泼但乏味的公司工作,并且对此职位感到很感兴趣。
我只在主要业务是生产软件的软件商店工作过,但我担心他们可能不会重视质量软件实践,因为开发不是他们业务的重点。
在软件公司工作与在恰好拥有内部软件开发团队或部门的公司中进行比较/对比的任何人都可以吗?
最近,当地一家广告公司向我提供了工作机会。他们正在内部进行所有Web /交互式开发,并增加了他们的开发团队。
我已经厌倦了自己的活泼但乏味的公司工作,并且对此职位感到很感兴趣。
我只在主要业务是生产软件的软件商店工作过,但我担心他们可能不会重视质量软件实践,因为开发不是他们业务的重点。
在软件公司工作与在恰好拥有内部软件开发团队或部门的公司中进行比较/对比的任何人都可以吗?
Answers:
这将取决于公司。但是通常,如果不是他们的主要重点,则该软件的质量会降低。如果有的话,该过程将不再那么严格。该测试不存在。而且这项工作总体上在技术上没有什么挑战性。
他们希望它能够正常工作,现在就可以工作,那就足够了。
但是,即使在妈妈和流行商店完全在做其他事情的情况下,也有一些地方会进行软件开发。这取决于业务领导者对好主意持开放态度,技术领导者有足够的能力去做正确的事,以及拥有可以解释好主意的人。可能是你。
面试公司。询问他们是否知道/坚持Joel考试。他们中的大多数都是好点。看看他们是否了解技术债务和神话般的人工月。谁是您的项目经理,他使用什么流程,他有多讨厌?
有很大的不同。在前者中,您是利润中心的一部分。在后者中,您属于成本中心。猜猜哪一个得到更好的治疗?
我现在在一家软件公司工作,比上一份工作要开心得多,因为上次工作一直都是裁员和外包,开发人员被视为易于替换的小部件(而不是公司的核心)。
差异很大程度上取决于公司本身。我曾在优秀的非软件公司和糟糕的软件公司工作。平均而言,这是我所发现的:
非软件公司
重点是快速完成工作,很少或根本没有考虑质量或长期可维护性。除了过去或在公司任职期间所做的工作之外,开发人员通常在技术上一无所知,并且经常尝试引入新概念(ORM,SOLID原则,TDD等)时会感到困惑或立即被解雇。人们倾向于更多地关注“拖曳公司线”。
软件公司
强调在不牺牲质量的情况下完成工作。同事更有可能跟上技术的发展(无论他们是否可以在工作中使用它),并经常寻找如何将新思想或框架整合到日常工作中以使软件更好的方法。如果他们还不熟悉并且正在使用TDD,ORM,SOLID等概念,那么他们可能已经听说过,并且更愿意对其进行评估。
同样,这最终取决于公司。我曾在一家非常敏捷的团队中与非软件公司合作,该团队包含TDD和ORM,并教会了我很多有关正确的软件工程的知识,而我在一家小型软件公司中工作,该公司编写了最糟糕的VBScript意大利面条代码并有50多个开发人员每个人都必须在不同的页面上进行工作,以免出现问题,并且即使繁琐的更改也要花费大量的繁文tape节。但是,公司对外部软件的依赖程度越低,环境对软件开发的可能性就越大。
可以肯定的是,其中一个区别将是减少对公司软件商店必须进行的开销和重做的重视。您会发现,您将能够对项目的各个方面进行更精细的控制。
一个优点是,这可以令人耳目一新。
尽管对我个人而言,结果令人震惊,但这可能是因为我选择不佳。一个巨大的缺点是,您不再受制于业务的繁琐工作,而成为管理上的开销。预算控制员把我当作我个人从自己的钱包里拿钱的样子,然后开始说“像打like子一样殴打我”。对我而言,这是一次令人烦恼且令人筋疲力尽的磨难,因此在面试时,您应该仔细寻找这种态度的迹象。
这里已经有了一些不错的答案,但是我只想引用乔尔·斯波斯基在耶鲁大学发表的演讲的第二部分的笔录链接:
他在那里谈论“内部”程序员与在软件/技术公司工作的程序员之间的区别。
他的三个主要观点是:
当您是内部程序员时,您永远无法以正确的方式来做事情。您总是必须以权宜之计的方式做事。
作为内部程序员,一旦某些软件“足够好”,您就停止使用它。当您开发软件“产品”时,就可以使它们变得漂亮。
当您是软件公司的程序员时,您所做的工作与公司的赚钱方式直接相关。这意味着,一方面,管理层在乎您。
就个人而言,我在整个职业生涯中都曾在软件公司和非软件公司工作,尽管每条规则总是有例外,但我确实同意Joel的观点,因为绝大多数公司似乎都与他们保持一致。
根据我的观察,坚持软件公司边界来解决职业生存问题至少有两个案例。
第一种情况是,如果一个人完全编码了,给我80 ... 90 ... 100%的时间来编码,否则我就死了。在软件商店,这几乎是理所当然的,好像每个人都知道如何到达那里,因为,好吧,因为每个人都在这样做。但是在外面,没有到达那里的风险确实很高。一个人可能会低到50%,40%,30%(我的个人编码量曾经下降到20%-开玩笑,我用JIRA衡量!)不是因为“他们”不想让您编码-他们只是想要,但是...他们可能只是不知道怎么做。
第二个“致命风险”是如果某人在交流中遇到严重问题。即使在软件商店中,这也可能很麻烦,但是,至少在不干扰交互的情况下,至少有很好的机会生存和过上美好的生活。:)但是,在非软件公司,这样的机会要低得多-恰恰相反,几乎不可避免的是,人们最终将不得不花很多精力来教育一些IT基础知识的外来者,因为否则将无法完成这项工作。
好吧,除了上面提到的两个案例,我不知道有其他强有力的理由将自己严格地锁定在软件公司之外。现在,哪一方更喜欢?据我所知,这更多是一种品味问题,什么样的乐趣会给您带来更多点击。
双方提供自己独特的娱乐方式。描述起来并不容易。
我要说的是,软件公司对于那些追求“高分”的公司来说更有趣,而外部公司则为那些追求“大差异”的公司感到兴奋。我是这样想的(下面的注释数字只是为了简化观点而发明的)...
顺便说一句,相比之下,在软件公司获得500%提升的机会微不足道-并且,在外部获得100个功能的机会也微不足道。
一侧的最高分扩大了我们对专业限制的理解,提高了我们如何做得更好的知识。另一方的巨大差异对公司文化产生了深远的影响,从而提高了外部人士对正确做法的认识。
现在,如果您对一个或另一个有明确的偏好,那么您知道该选择哪一方。或者,如果您犹豫不决,请随意在它们之间随意切换。:)
在软件公司工作与在恰好拥有内部软件开发团队或部门的公司中进行比较/对比的任何人都可以吗?
我宁愿将在IS部门工作与在销售软件的公司的产品开发部门工作作对比。只是要澄清每一面并给出一些内容,并进行一些格式更正:
IS部门
公司可以生产硬件,软件,汽车或其他任何东西,但关键是要有一个内部部门来负责公司日复一日使用的系统。在这里,可以有一些类似ITIL的框架,这些框架可以尝试使部门运行的流程更加成熟,因为该部门的一部分是经常亮起的基础设施人员,另一部分是进行改进的开发和分析人员。 ,增强功能和新系统。在这里,项目的长度可能会有所不同,但是在某些情况下,如果要更换某些大型系统(例如CMS,CRM或ERP),则需要分阶段实施,因此要完全实施该系统可能需要几年的时间。
有时我感觉自己像是一台机器的齿轮,而在其他情况下,成为这种职位的高低职位的一部分,成为公司骨干的一部分则相当整齐。我不会对公司外部的人吹牛,因为我的大部分工作是在内部系统上进行的,这些系统不应公开访问或查看。在这里,可能会有一些支持票证,可能需要与软件供应商打交道,因为某人遇到的问题不一定很容易知道导致错误的原因,因此IS部门必须跟进其他人帮助解决问题。在其他情况下,可能由于更改的需求或业务规则而必须更改某些自定义设置。
软件公司
在这里,这是对公司直接销售产品的努力,因此存在一些较大的规则差异。首先,这里的客户不能像IS部门那样装箱。在IS部门中,系统可能只有少数几个用户,因此,治理可以处理许多奇怪的情况,如果有人故意选择滥用工具,则无法总是避免这种情况。在软件公司中没有那个安全网。如果有人下载了您的软件,而他们设法找到一种对软件进行相当破坏性的方式,则该公司可能会对此大失所望。在这种情况下,可能会有些炫耀我所做的事情,因为如果他们想进一步了解我的所作所为,可能会有一些很酷的功能向朋友或亲戚展示。
这里要注意的是,可能有一些公司作为系统集成商加入,以引入大型可自定义的企业软件,这些软件可以与IS部门的人员一起工作,以实现数百万美元的费用,也可以直接为制造该产品的公司工作。大软件本身。在这里,也可能有一些应用程序服务提供商,因为他们出售的服务通常都是由软件构建的。例如,尽管一个人不会去商店购买Google软件的DVD,但Google可能拥有一个IS部门以及许多软件开发人员,至少我认为我没有看到了解许多可以轻松使用的在线Google产品。这可以允许某些专业化,因为它不是