观光公交削弱
对简单的入门和故障安全环境的渴望使开发人员感到自我破坏。
现代软件应用程序是巨大的。 甚至小型公司产品也可以由抽象的层次组成。 根据与您最紧密合作的那一层,您可能会错过很多东西。
这篇文章不是要学习公司技术堆栈中的新语言或框架,也不是建议他们使用新的,更现代的语言或框架。 这篇文章是关于确保精通您所擅长的堆栈中的任何部分-并了解要避免擅长的内容。以下是您的工作可能阻碍您的职业发展的几种情况,以及如何逃避这些情况。
专有编程语言
一些公司投入大量时间和资源来制作自己的内部语言。 这些语言是专有的,这意味着有关它们的任何信息都不会影响公司的发展。 这样做的风险应该很明显:
- 您无法将这些技能转移到另一份工作,因为没有其他公司可以使用该技术。 您甚至可能被禁止在面试和电话屏幕上讨论有关它的详细信息
- 掌握这些语言会带来隐性的“沉没成本”。
每当您花时间学习,开发和潜在地掌握一种专有语言时,您就可能会花时间学习一些更适合销售和更广泛使用的东西。 您可能已经更深入地研究了算法,开源技术或最热门的新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作业。
这个行业永远不会停止进步,所以您也不应该-唯恐发现自己陷入了一个小隔间,维护在不赞成使用的框架上构建的旧应用程序。 如果您仅从这篇文章中摘录一件事,那就这样吧:
未来最好的投资就是投资自己
翻译自: https://hackernoon.com/how-your-job-may-be-crippling-your-tech-skills-1b1b7a8ff3fd
观光公交削弱