对简单的入门和故障安全环境的需求使开发人员感到自我破坏。
现代软件应用程序是巨大的。 甚至小型公司产品也可以由抽象的层次组成。 根据与您最密切合作的那一层,您可能会错过很多东西。
这篇文章不是要学习公司技术堆栈中的新语言或框架,也不是建议他们使用新的,更现代的语言或框架。 这篇文章是关于确保精通您所擅长的堆栈中的任何部分-并知道要避免擅长什么。在以下几种情况下,您的工作可能会阻碍您的职业,以及如何摆脱它们。
专有编程语言
一些公司投入大量时间和资源来制作自己的内部语言。 这些语言是专有的-意味着有关它们的任何信息都不会影响公司的发展。 这样做的风险应该很明显:
- 您无法将这些技能转移到另一份工作,因为没有其他公司可以使用该技术。 您甚至可能被禁止在面试和电话屏幕上讨论有关它的详细信息
- 掌握这些语言会带来隐性的“沉没成本”。
每当您花时间学习,开发和潜在地掌握一种专有语言时,您就可以花时间学习一些更适合市场使用和更广泛使用的东西。 您可能已经更深入地研究了算法,开源技术或最热门的新JavaScript框架。
摆脱这种陷阱的唯一真实方法是离开并找到另一份工作。 但是,请记住,在这种环境下工作时,您仍然可以提高软技能并编写最佳实践。
内部实现和抽象
这种情况更加晦涩难懂,所以请允许我借鉴两个个人轶事。
在我的第一份工作中,我很专心于SQL开发,旨在将数据馈送到公司的主应用程序中。 我从未接触过该应用程序,其API,文档甚至技术堆栈。 这是“黑匣子”的缩影,以至于我们甚至称呼它为黑匣子。 我离开该职位时对SQL有深刻的了解,但对产品没有任何前端知识,包括它如何与我的工作交互。 所有这些都是因为我对公司将开发人员的任务彼此隔离的尝试感到欣慰。
最近,我每天在Apache MapReduce框架中工作超过一年。 对于那些不知道的人:MapReduce作业包含3个主要组件:映射程序,减速程序和运行程序。 这些组件构成任何MapReduce作业的核心,而我对如何直接配置它们一无所知。 我的团队围绕MapReduce编写了自己的包装框架,对此我非常熟悉,但是对底层实现却不甚了解。 这是你真正的危险 。
从您雇主的角度来看,这是一个巨大的积极因素。 与在纯实现之上进行开发相比,在复杂的框架之上进行更多的抽象化意味着新开发人员可以更快地入职,更快地编写代码并产生更少的错误。 应鼓励团队降低复杂性,并在日常开发工作中实施保护措施,包装程序和易于使用的脚本。 但是,这是关键:了解底层实现,然后对曾经作为拐杖的抽象有所赞赏,这是您的责任。 他们在提取复杂性方面做得很好,这不是您的团队的错-您要屈从于前辈为您设计的舒适性。
这个概念的完美例证是高中代数。 现在,您可以通过快速的Wolfram-Alpha快速搜索来解决您在课堂上学习的几乎所有方程式和概念,但是这种确定性是不允许的。 在使用计算器之前,您必须学习长除法; 在接受二次公式之前,您必须通过在二次函数上取平方来发现它。
就像代数类一样:我们首先需要研究所使用方程的基本解,只有在我们真正欣赏我们的抽象之后,我们才能进行研究。 不这样做会导致明显缺乏我所谓的技术信心。 真正了解他们使用的框架的开发人员与只知道如何使用它们的开发人员之间存在明显的区别。 当然,仅了解表面上的物质,您就可以生存甚至繁荣,但是我和你们俩都知道您有能力做到这一点。
从未停止学习
我职业生涯的转折点是当我从以下方面换档时:
我知道足够有效地担任目前的职位
至:
如果我选择一个专业并 精通该专业,那么我在现任和将来的职位上都将是最有效的
有了这种新的思维方式,我终于摆脱了将我锁定在黯淡的未来中的工作,通过实际了解我所使用的技术变得与我的日常开发项目更加紧密地联系在一起,并在此过程中方便地将自己的薪水提高了一倍。
以下是您可以(并且应该)采取的实现工程自我实现的步骤:
选择一个专业
专业的开发人员比一般的开发人员更具市场价值。 过去,我错误地将简历包装到我曾经接触过的每种语言或框架中,从而错误地应聘了数十个“软件开发人员”工作,而我所消亡的包括HTML / CSS。 这无济于事,因为当我努力表现出“千篇一律”时,我反而把自己打扮成“无师傅”。
您会发现,即使您的专业与职位的招聘要求不完全匹配,您仍会因其明显的专业知识和消化复杂技术的能力而受到考虑。 换句话说:那些专精的人比通才的人更能证明自己,并且所说的证明更加明显。 以下是我在简历中看到的两个候选人技能集的示例:
技术技能: Java,Ruby,SQL,Apache Hadoop(HDFS,MapReduce,Spark,Cassandra),Linux(zsh),Vim,Git
技术技能: Java,Ruby,Python,Bash,SQL,C,C ++,C#,HTML,CSS,Flask,算法,数据结构,SASS,JavaScript,CoffeeScript,Rails,PHP,AWS,S3,Redshift,Linux,Mac, Windows,Microsoft Office,Jira,Github,IntelliJ,Eclipse
作为一名面试官:后者大喊“我可能都不知道这些,只是写下了我曾经接触过的所有技术”。 它们包括Microsoft Office,Github(如网站中所示。.不是“ Git”工具),以及令人恐惧的“ HTML / CSS”。
前者看起来更强大:它们暗示着核心能力,而vim的微妙包含以及他们对shell的偏好表明他们对命令行很满意。 这位候选人具有明确的专业知识,并且我可以更轻松地掌握一种技能。
惊喜! 这两个候选人都是我,而以上方法中只有一种导致了认真的面试,我让你猜哪个。 另外,请勿将Microsoft Office放在您的技术简历上,也不要将任何您无法备份的技能放到我的信任中。
永不停止阅读—永不停止做
您未来的钥匙已经被写下来,只等您拿起钥匙,就这么简单。 书拥有掌握您的职业所需的全部知识,您需要的只是实际阅读它们。
无数开发人员毕业,并决定他们的工作将教会他们所有需要了解的知识。 正如我们已经显示的那样,这是极其危险的舒适! 仅通过积极主动并继续接受教育,您就已经比所有选择落后的人更充分地准备,更容易销售,并且最终将变得更加了解。 指南,课程,书籍,文档,开放源代码项目和API都是要学习的重要内容来源。
独自阅读是一个了不起的开始,但单靠阅读还不够。 培养技能的关键是“做到”。 决定编写什么代码并不重要,但是您需要运用新发现的技能来巩固它们。 刚读完MapReduce的书吗? 那很棒! 现在走到那里,对一些著名的样本天气数据编写MapReduce作业。
这个行业永远不会停止改善,所以您也不应该-唯恐发现自己陷在一个小隔间中,维护在不赞成使用的框架上构建的旧应用程序。 如果您仅从这篇文章中摘录一件事,那就这样:
未来最好的投资就是投资自己
From: https://hackernoon.com/how-your-job-may-be-crippling-your-tech-skills-1b1b7a8ff3fd