我刚从大学获得CS学位,所以我想找到一份工作,可以在其中学习更多有关该领域的知识并积累一些专业经验。
我曾在一家使用自己的内部编程语言的公司采访过,但我认为没有其他人会使用它。他们没有提到使用任何其他语言或将其用于开发环境。
从事这样的工作我应该担心什么?如果以后要换工作,是否会因为没有获得任何特定于语言的经验而不得不再次开始寻找入门级职位?
我刚从大学获得CS学位,所以我想找到一份工作,可以在其中学习更多有关该领域的知识并积累一些专业经验。
我曾在一家使用自己的内部编程语言的公司采访过,但我认为没有其他人会使用它。他们没有提到使用任何其他语言或将其用于开发环境。
从事这样的工作我应该担心什么?如果以后要换工作,是否会因为没有获得任何特定于语言的经验而不得不再次开始寻找入门级职位?
Answers:
主要缺点:
如果是我,我会问他们为什么他们使用内部语言。如果是出于正当理由(例如疯狂的硬件冲突),不容易以任何现有语言建模的域,那么这完全可以。另一方面,如果他们的答案表明他们创建了自己的语言,以便可以将大量的hack和业务逻辑组合在一起,就等于一堆古怪的宏,那么这是一个很大的危险信号。您想确保他们使用好的工程原理,以便您可以从中学习并成功。在这种情况下,您可以看到他们是否可以合理使用没有社区知识库和外部支持的本地语言进行辩解。您可能会发现他们的决定是完全合理的(我相信facebook构建了自己的PHP版本来处理可伸缩性,这对他们来说做得很好),或者您可能会发现他们创造了一种语言的怪异性与核心系统紧密结合,他们似乎无法脱离它。相信我,您不想使用一种核心数据类型称为ImARInObj(不可变应收帐款发票对象)的语言。在这种情况下,语言和业务需求之间通常会紧密联系,而每天处理这种系统绝对是一场噩梦。
逃跑,然后迅速逃跑。除非您渴望工作并且非常饿,否则您要避免这种情况。
我在一家这样做的公司中有经验,他们这样做的唯一原因是使他们的员工不会获得有意义的,可转让的经验。确实,这一切都与控制有关。
其他在这里说“编程就是编程”的人是正确的,但是我想一想,为什么不使用某些标准语言,该语言具有外部支持,库,论坛和大量可用的程序员供选择从?
我认为这种情况只有在公司专用语言用于自定义硬件的情况下才可以。例如,您必须使用特定于该机器的程序集/机器代码编写9000X伽马射线干涉仪的所有内容。
由于毕业后您的简历基本上是空白的,因此您的第一份工作为您的未来职业道路注入了巨大动力。您的下一个潜在雇主将在这份工作上加倍重视。因此,除非您也将使用其他(更适合销售)的语言进行编程,否则我强烈建议您不要从事此工作。
我之所以这么说是因为我刚刚离开我的CS学位毕业后的第一份工作,当时我的职位几乎与您描述的完全一样。大多数编程都是使用一种基本未知的语言(称为Progress(又称为OpenEdge ABL))完成的。这太糟糕了。不如COBOL差,但是很接近。我之所以被困在那儿,是因为我毕业的地方周围没有很多编程工作,而且我一直在等我的妻子毕业并获得学位,然后再搬家。
使该语言与其他语言或数据库进行交流几乎是不可能的(它也与自己的专有数据库锁定在一起-奖励!)。我花了很多时间自己编写框架,该框架已经存在于其他语言中,并且可能已经更好地实现了,因为该语言不能很好地支持这种“扩展”范式。该语言更适合于“与功能要求联系Progress Corp.,并等到新功能的n + 1版本”方法。不用说,软件行业的发展速度还不够慢,因此无法成为可行的方法。我不会继续讲述它的严重程度,但是我想如果您还要处理专有语言,您也会面临类似的问题。
补充一点,现有的代码库,我们可以说是次优的。许多旧代码可以追溯到80年代末/ 90年代初。我敢打赌,您应该期待类似的结果,因为我认为大多数公司只会坚持使用专有语言,因为它们会携带很多此类传统行李。记住,对于这样的雇主来说,很难找到愿意在这种传统/专有环境中进行编码的程序员,而且他们可能还必须为培训付费,因为没人听说过。由于死海效应,您的同事也可能不会成为软件工程的巨人(任何有才华的人可能已经离开)。我在尝试使用面向对象的代码的代码审查时遇到了很多麻烦,更不用说任何类型的设计模式了,因为他们只是不理解(我团队中的人们最好拥有MIS学位(没有冒犯性) ))。
最后,假设您确实从事这项工作,但渴望离开后做得更好,为了使自己在下一份工作中更具竞争力,您要么必须牺牲大量的业余时间,要么在工作之外牺牲时间,用更具市场价值的语言制作易碎的玩具(并且可能大部分都是开源的),或者在退出之前花一两个月的时间做我所做的事情并节省一些钱。无论哪种方式,这都是一件非常令人压力的事情,尤其是如果您喜欢在工作以外拥有任何类型的社交关系,或者花费您的空闲时间做一些不时编码的事情。
现在,我的经验可能无法直接映射到您的选择,但是我敢肯定,某些经验将适用。希望它至少会给您提出一些问题。正如其他人提到的那样,您可能想知道他们使用了哪些工具(硬件,软件开发环境/ IDE,以及肯定的版本控制)。在乔尔测试可能是一个有用的指导。
不要这样
PS对于那些说学习任何一种新语言都是有用的人来说,这本身就是对的。问题是,当您长时间长时间专心使用该语言而陷入困境时,就会失去使用更多有用语言(和技术)的机会。那就是你要避免的事情。
明显的缺点是,您将无法将此工作添加到要应用到的未来工作中的“使用语言x的5+体验”要求中。这可能比您想象的要烦(以具有多年经验,但使用多种编程语言的人说话)。根据我今天所寻找的工作,我在VBA方面拥有专业经验,也许在LOLCODE中也有过经验。
但是,他们是否仅使用该语言?很少有公司只使用一种语言。甚至我在VBA上的时间都包括一些ASP,Java和PostgreSQL。
无论您使用哪种语言,我都倾向于同意“ 编程就是编程 ” 这一口头禅。这么多的编程知识都在学习思考,其余的只是语法。潜在的未来雇主对“ 我在Y公司取得X成就 ”的印象比对“ 我在Y年已经了解X语言 ”印象更深刻。
我完成的最后一项工作涉及很多PL / SQL工作,但我从未写过任何一行PL / SQL-我在大约两周的时间内就完成了工作。
也就是说,我一定会与其他语言一起练习,以保持最新状态。在从事新工作时,有一个或两个宠物项目,可以使您的编程臂使用更标准的语言来保持体形,但不要对此事大惊小怪。
在IT领域,公司经常与招聘人员联系以寻找合适的人选。招聘人员不是IT专家,因此具有一些标准,可以与候选人匹配,然后将其发送回公司。在大型公司中,它与悍马公司的人力资源相通。
您对此有疑问。您将不符合招聘人员标准。因此,我想说这不是维护您的能力的问题。编程就是编程,一个有能力的程序员应该知道如何从一种语言切换到另一种语言,因为语法比知道如何进行可靠的代码,可测试的代码和可维护的代码重要。这些能力大多与语言无关。
但是,只要您不符合没有IT人员招募您的匹配标准,找到将来的工作可能会带来不便。即使您仍然有竞争力。这些人不知道如何判断,因为他们不是IT人员。
我绝对不会在第一份工作中推荐这项工作。但是,如果您已经在简历中找到了有关广泛使用的技术(Java,PHP,C,C ++,C#,...)的入门知识,请选择它。
您肯定可以使用专有语言和环境来掌握/提高技能。正如其他答案中提到的那样,某些技能超越了语言,它们在简历中可能非常有价值。
但是,当审查简历的人员不是技术人员时,这些技能经常被忽略。通常(在工作质量范围的下端,不幸的是,这通常是相对缺乏经验的开发人员的最佳选择)简历将主要根据x年的语言y进行评估,而您可能没有掌握的其他技能一直玩到面试为止。
要考虑的另一个因素是,与主流环境相比,专有环境(至少在imo上)倾向于设计较差,笨拙且通常令人沮丧。令人沮丧的是,仅在不良的专有系统中进行工作非常令人沮丧,尤其是对于刚开始从事编程职业的人而言。
话虽这么说,请记住,拥有专有系统的经验虽然不及使用流行主流语言的类似经验,但总的来说还是比没有经验要好。您在某些职位上将超越入门级别,而对于其他职位,您可能(或可能不)仍是特定语言的入门级别,但是您的经验将使您大大领先于其他大多数竞争对手这些工作。
在由于专注于专有语言而考虑放弃报价之前,请确保考虑当前的就业市场以及通常如何收到您的申请。
这取决于您将学习哪些辅助语言和技能。如果确实没有使用他们的内部语言,或者甚至在公司外都不知道他们的内部语言,那么这将是有限的职业利益(除非它很可能突然爆发并成为下一个大问题)。我花了几年时间使用一种第三方工具,该工具本身对我来说是无用的(对职业而言),但是通过从事这些项目,我的HTML,CSS和javascript技能得到了改善。我还学到了很多有关如何运行和组织企业项目,与客户打交道,管理期望的知识。所有实际上不是语言的东西都是现代软件开发的组成部分。
框架呢:IDE,编辑器,库?最复杂的业务应用程序。目前,纯文本编辑器和命令行编译器无法完成这些任务。
他们是否有一些用于自定义编程语言的内容?
通常,学习企业比学习技术更重要。如果您认为您可能希望留在该公司所在的特定行业,请继续进行下去。如果这是一个利基市场,或者您对此并不特别感兴趣,那么我建议您跳过它。知道(例如)药代动力学的来龙去脉和药物发现过程将为其他C#/ Python / Java程序员不会打开大门。并且,除非这种“独特的”语言更多地是代码生成器或配置器,否则您仍将解决常见的问题,因此,即使某些特定技术可能无法直接转让,您仍将获得一些总体经验。
IT'S A TRAP!
我会考虑并且只有在您拥有其他语言方面的丰富经验的情况下,才考虑参加此活动。如果您确实接受了这份工作,您可以(并且应该)通过在业余时间从事开源项目来保持您对主流语言的掌握。
您要避免的是,您的技能可能会高度适应这家特定的公司而无法转让给其他公司。从技术上讲,编程是编程,并且在单个编程环境之外的经验是有益的,而不是有害的,因为它可以帮助您更清楚地看到问题。
这样想:如果您从事写Perl程序的工作,那并不一定注定要写Perl程序的永恒。在.NET中工作也不会注定您永远被Microsoft所束缚。
但这是重要的部分:我永远不会雇用只懂一种语言的程序员,即使那是我希望他使用的一种语言。一个没有多种语言经验的程序员即使选择了他的语言,也常常很贫穷。这也反映出缺乏学习新事物的野心。
另一方面,如果程序员知道Python,Ruby,C#,PHP,C和Erlang,那么即使他在地狱中没有机会使用APL来实现,他也知道APL并不是对他的打击。任何东西。
因此,如果您有纪律,不要让语言成为您的唯一重点,那么就去做吧。
值得再次说明:为开源项目做出贡献。他们计数吨以上的“工作经验”,因为它不是东西,你只是做了做一个薪水。从事开源项目的程序员就像金子一样。
我获得了CS学位后,我的第一份工作就是用一种晦涩的语言进行开发。不是唯一的。不是内部开发的。但是模糊不清的VMS 4GL令我从未见过其他人使用它。
回想起来,这是一个不明智的决定。尽管我学到了很多有关专业软件开发的知识,但同时开发出与“软”技能相适应的可销售语言也要好得多。
我很幸运-我的第二份工作是使用另一个晦涩的VMS 4GL。他们之所以雇用我,是因为他们知道找不到合适的语言的人-我在具有4GL的VMS平台上有经验的事实就足够了。在这项工作中,当他们希望从VMS转向Windows服务器时,我有机会接受了以适销对路的语言进行培训。
但是我很可能没有运气,发现自己进入职业生涯的五年时间完全是零经验,可以说服招聘人员或人力资源人员看我的简历。
对于毕业后的第一份工作,我真的非常不推荐。
为了做出元响应,我注意到许多响应都说:“根据个人经验,这是一件坏事。”
许多其他人说:“从理论上讲,这不必很糟糕。”
但是我所见的答复都没有来自做过类似事情并认为这是一次很好的经历的人们。
现在也许有些人已经做到了,并且对他们的工作感到很兴奋,但是他们不在Stack Exchange上。对于某些商业软件来说确实如此。例如,有一些真正专门的Software AG Natural / Adabas管理员,但是关于Stack Exchange的讨论并不多。但是,至少有人正在寻找这些专业人士。对于完全专有的语言而言,情况并非如此。
因此,如果目标是转向此处讨论的技术类型,那么很少有人从实际经验中认可这一事实,这表明这不一定是最好的开始。这可能不是死亡之吻。但是您希望努力避免它成为可怕的障碍,例如通过启动或参与与您的愿望有关的开源项目。
我已经用专有语言编程。但这不是到处使用的语言。现在,我没有任何反对这种经历的经历,尽管我时刻都在努力地完成这项工作。我确实有机会使用该语言,维护该语言并进行改进,以及维护使用该语言编写的程序。
在此过程中,我学会了阅读和理解小型口译员的工作方式。如果您的潜在雇主拥有专有语言的编译器/解释器的资源,那么您也有机会在内部进行工作。我可以说,根据经验,您会珍惜未来几年的工作经验。
您将获得的可转让技能是,团队合作,软件工程,编写编译器/解释器或其中的一部分,算法等。如果是解释器,那么专有语言只是一个掩盖,您可以在其中找到解释器用C或其他语言编写。如果编译专有语言,您将有机会使用完全引导捆绑的生产编译器。因此,当您寻找下一份工作时,您需要比将C / C ++ / Java / Python面向应用程序开发人员或Python,Perl,Java,HTML,CSS,JavaScript,Flash进行Web开发更困难地出售这些技能。 Verilog,用于嵌入式开发的VHDL或用于其他应用程序领域的任何其他语言集。
所有这一切,假设您的潜在雇主拥有专有语言的来源,并且您愿意从事专有语言编写的程序之外的工作。不过,我承认我非常乐观地说您可能会像几年前一样获得类似的机会。
在面试中,并不是只有多年的经验和技术技能才能决定聘用人员。您对学习的渴望,对文化的适应,对文化的偏爱是决定的重要部分。
因此,对于第一份工作,如果您的工作不仅限于仅使用专有语言编写的程序,而且还允许您进行其实现,请接受。
我认为这有两个方面。首先是这项特定工作,其次是它如何影响您的职业前景。
我想知道这项工作的原因是他们为什么创建自己的编程语言。是否有意义?如果没有,我会另谋高就。
在过去的十年中,我曾为三家使用自己语言的公司工作。第一个原因是,当项目开始时,没有什么可以做他们需要的事情。(他们编写了Visual Basic的技术版本,但是该版本在Unix上以及VB出现之前的几年。)另外两个版本具有现有语言无法满足的性能要求。我认为这些理由很好。
正如其他人所提到的那样,在职业前景方面,不懂编程和使用一系列复选框的招聘人员和人力资源人员将很难获得您的简历。许多希望使用即插即用C ++程序员的公司都会不愿为您支付学习新语言的费用。这一切都是真的。
但是,您真的想在这样的公司工作吗?
如果答案是“是”,那么您可能应该拒绝这项工作,寻找具有更多常规要求的工作。另外,根据您的住所,您可能没有太多选择,而必须为不太了解程序员的公司工作。
就我个人而言,我不想在这样的公司工作,我认为可以说我没有发现自己的选择过于局限。如果您有快速学习新技术,解决现实问题以及也许有一些“业务”知识的记录,那么我认为您应该还不错。
也有积极的一面。您还能在其他几个地方使用编译器/解释器?您多久会影响到您每天使用的语言的新功能和语法?
首先,内部编程语言不一定是一件坏事,但是,需要一些基本规则来证明自定义语言的合理性。
您写自己以为他们不使用任何其他语言。您应该问的第一个问题是他们是否也使用其他任何语言。
定制编程语言可能有充分的理由。我知道数学可以使用专门的语言。我听说税务机构使用一种特殊的语言来计算税款,并根据年度法律对其进行更改。欢迎来到元编程领域。
但是,任何自定义语言都不应实现完整的语言。在它的领域之外,您仍然应该使用经典/广为人知的编程语言。即使在语言领域中,领域语言也不大可能涵盖每个小细节。
好问题要问:
从这些答案中,您应该能够找到语言的状态。如果这是一种能够带来巨大价值的领域语言,那就没关系。如果有人用宠物项目代替Java或C#,请 尽快离开那里。
编辑:我建议您阅读Wikipedia上的领域特殊语言文章,该文章应能提供更多见解。
我见过一个有15年经验的人,主要是作为首席开发人员或主要开发人员,他们很长一段时间都无法找到工作,这主要是因为该公司给他留下了在现代语言和API方面没有经验的经验。
程序员会像电影中的演员(英雄,平民等等)一样被精打细算地放入垃圾箱,一旦确定了垃圾箱的内容,我想找工作就比刚开始工作要困难得多。学院。
也就是说,如果您拥有CS学位,则可能是许多工作的候选人。
但是,如果您拥有3年PHP经验的CS学位,那么与毕业时相比,您实际上应该是Java Web开发人员职位的一名候选人。您已经将自己固定为PHP开发人员,直到有相反的经验为止,这就是您将被雇用的工作。(很奇怪,但我认为是事实,您有更多的总体经验,但是您的履历将被视为无关紧要,因为这是错误的经历,而刚从大学毕业后,您的履历可能就没有了)
并且,如果您拥有在SpecialtyLanguageX中拥有1年经验的CS学位,那么您已经为自己关闭了各种门。
这些当然只是我的意见和观察,我从未招聘过,这对我来说就是这样。