这篇文章是关于什么的
实际上,这篇文章是关于我的思维方式应如何随着职业的变化而改变,对上下文的理解以及应该注意的时刻,以及“我应该教什么”的选择在多大程度上影响了我个人职业发展的后几年。
我必须马上说,我不会也不会像在大多数文章中一样开始选择哪种编程语言是有意义的。 这没有任何意义。 不,您不选择编程语言。 实际上,您选择自己的未来,没有更多,也没有更少。 您未来的选择将取决于您的应用程序和平台。
对我自己一点
我于2016年初成为程序员,当时年仅35岁,这是您在GitHub个人资料中查看活动的历史并接受第一份认真的工作的原因。 换职业的年龄相当不错。 是的,这不是不重要的时刻-我离开了设计。 这实际上是一个非常根本的变化,不仅因为您是第一次接触相当人道的专业,包括图片,设计,构图,甚至就我而言都是易用性,然后突然您跳入代码,技术,编译,基础数据等等。 从外面看,这基本上只是冰山一角。 我将在本文中进一步讨论更深入的个人结论。
这是怎么发生的,为什么? 原因有两个-这次我没有管理设计,沮丧是两个。 要想成为一名成功的设计师,我需要一个WOW效果,而不仅仅是逻辑UX,简洁的组成,使用产品的操作方案以及产品经理的一些技巧。 我们需要凉爽多汁的照片。 对于他们来说,我对色彩组合物没有足够的所有权,或者由于沮丧或出于其他一些原因而无法掌握它。 然后...首先,看电影《前机械帝国》使我大吃一惊,然后我参加了安德鲁·伍(Andrew Ng)的机器学习课程。 我很喜欢它,只是狂野,尽管有不眠之夜和早晨的红眼睛。
然后,我认为自己做出了最简单,最简单的决定-对于现代IT行业的知识量和质量以及当时的能力,我做出了不可避免的选择。 我决定逐渐从JavaScript切换为基于浏览器的应用程序的前端编程。 从这里我们可以说出试错的真实路径,走耙,无数惊人发现的开始。
现在,我已经可以有条不紊地表达我对这种过渡的想法了,在前进的道路上应该有什么陷阱。 我希望像我几年前一样面临同样选择的人会有所帮助。 所以继续吧!
关于初学者的ra漏和错误
当我改变职业时,我一无所知,并且犯了一些错误,我不得不为此付出神经,不眠之夜和金钱。
首先,正如我认为的那样,您可以在一定程度上定义程序员,甚至可以定义一个人。 一切对他而言都很有趣,他想帮助共同的事业,另一方面,他将完全专注于一件事,他将挖一条沟长达数年,数十年,而他对此表示同意(可能)。 您需要了解的都有优点,缺点和陷阱。 我本人属于第一类,即“疯狂老虎”,因此我可以更多地谈论他。 但是,真正重要的是尽早了解您属于哪种类型。
如果您想挖掘一件事,那么在开放的劳动力市场上找工作就不太可能遇到问题-狭窄的专家同时会在各自领域中获得更快的深入经验,雇主更容易接受您,因为他甚至知道您在对他非常重要的一件事上吃了一只狗-例如,优化网站浏览器中按钮的动画。 但不是那么简单。 雇用时,您当然会很高兴,但是在工作过程中可能会遇到困难,因为同事很可能希望参与整个产品及其整个技术体系。 愿意提供帮助,包括超越其直接职责的范围-无需特定技术任务就可以工作,到杂货店狂奔,与使用他的语言的支持者讲话等。 在这里,可能最多只能放在一个地方。 您很可能不会复活,而您自己也不会愿意。 据我了解,那些处于这种规模边缘的人每年或两年更换一次工作,以编制工资指数。 因为这基本上是您在办公室工作的唯一方法。 第二种方法是自由职业者可以进入更发达的市场,尽管最后,如果您确实需要很多钱,您仍然必须扩大自己的技能库。
如果您更愿意帮助同事,请做好准备。 一旦您有足够的知识(对于初学者而言)学习一件事,然后您决定首次进入市场,那么您将在技术与技术之间层层缠绕。 您会发现自己扮演开发人员,项目经理,产品设计师(而不是绘制者),建筑师和魔鬼的角色。 您将获得非常多样化的经验,并且您会说些什么。 而且,如果您加入了一支拥有出色有趣产品的多才多艺的团队-那么请保持我七个。 问题在于项目即将结束,公司破产,老板自欺欺人,这里您没有工作,有开放的劳动力市场,不需要他,他需要可靠的狭窄专家。 所有门将关闭。 好吧,因为即使您在一门专业课程中经历了所有技术面试,他们也会告诉您在过去几年中您仅对按钮进行了六个月的抛光,因此他们需要一个按钮抛光机。 然后事实证明,您需要去主要开发人员或更高级别的开发人员,但真是太可惜了-他们通常不走这条路。 我唯一了解的方法是建立个人品牌。 无论您是在办公室还是根据合同远程工作,都可以做某事。 引用对您没有帮助。 到目前为止,我知道两种选择-参加行业会议,进行别致的演讲并撰写个人博客。 什么都没有,至少没有任何废话,但是要从您第一次被雇用的第一年开始做。 这很重要。
在这里,是的,劳动力市场存在矛盾-他们想在招聘中看到一件事,但随后又想与另一人一起工作。
关于技术和“我应该选择哪种语言?”
在这里,我们有了灰度等级。 甚至没有规模的多维空间。 在会议上经常谈论一些时髦的技术,它们在博客和社交网络中写很多东西。 有没有竞争对手的技术,例如JavaScript及其在网络浏览器中的变体。 有些古老的恐龙上面写着很多东西,因此必须予以支持。 在这些点之间,以特定案例的形式存在不同的交集。
选择时,您必须做出决定,并且越早越好-要意识到您选择的堆栈限制不是很好。 确定您想要的东西-可靠性,金钱和良好的知识库,或者我什至不知道其他。 如果是第一个-在我看来,最好从那些仍然活着并且发育良好的恐龙中进行选择。 由于我本人就是关于网络的,所以我可以说有两种可靠的技术。 C#和Java。 PHP开发人员可能会很生气,但是我建议将这个问题留给口味和颜色,可以这么说......其独特之处在于,只有使用成熟的语言编写具有足够结构代码的工具的项目,项目才能长期生存和发展而不会产生额外的困难。 这回 第二个选择是特定的框架。 .Net或Spring或其他东西是可能的。 这里的标准是这样的-它应该经常被发现,用于大型公司和长期存在的项目中,理想情况下,它应该很容易进行工作。 例如,Spring Boot现在允许您快速建立服务原型,以及使用非常复杂的体系结构和企业所需的许多功能编写重要的事情,并且可以立即将其部署。
相反,一切“时尚”(通常来说)都还很年轻,基础设施薄弱或天真,但是拥有热情眼光的球迷社区随时准备向您出售任何出于仁慈的东西。 所有这些新技术或未广泛使用的技术的问题在于它们没有足够的现成工具-您很可能必须自己编写许多琐碎的功能,例如通过社交网络进行授权。 这实际上是可怕的。 一家公司很少想为自行车付钱。 然后您仍然必须维护此代码。 例子? 对于Python,没有一个成熟的Web框架(Django除外,但有一些保留),您可以使用该框架而不花时间进行一两年以上的开发。 您的问题将立即开始,而且非常琐碎,例如模块的循环导入。 抱歉,我绕过了PHP,他们在PHP上做了很多事情,但是有一点-我没有听说任何大公司都在使用它,而且没有像Facebook那样重做过多次。
分界线是一种垄断。 Apple生态系统的Swift,它本身创建了自己的应用程序开发框架。 Google与Android(顺便说一下,也是Java / Kotlin)。 R语言和开发环境进行数据分析。 JavaScript是浏览器中运行的唯一编程语言。
使用Swift,一切似乎都很清楚。 程序员很少,他们报酬丰厚(根据传闻),语言发展迅速,很流行,但是与炒作不同之处在于它向后兼容ObjC恐龙及其上编写的所有东西。 苹果公司也支持它,并且它正在迅速开发平台框架。 此外,它可以编译到其他系统中,并有望与C / C ++向后兼容。 如果发生这种情况,我什至不知道...会有一些或非常好的,或者其他的东西。 因为已经用C / C ++编写了很多文章,所以您可以转动头,这是一个巨大的资源。
Java脚本 语言作为一种语言。 许多人认为它是次等语言。 他有很多问题,是的。 这些主要是出生伤,从技术上讲几乎是无法克服的。 它可以用于服务器应用程序,但是我不建议您采用这种方式。 NodeJS是纯粹的炒作,它的创建者本人直接说NodeJS在其创建过程中犯了基本错误。 至于浏览器开发,我建议您使用目前最常用的工具,这是将React与Redux结合使用。 只是很多。 到处都需要他。 您会找到工作。 尽管您只是在浏览器中,但是即使堆满了,从陶瓷烤架上挖出来的小馅饼也总是足够。
结果,您的个人结论
如果我要重新选择,我会选择一堆Java / Spring + React。 当然Spring现在不是现在的Spring,React也是如此,但是条件是相同的。
在这个堆栈中个人触动我的是什么。 “出售”到React客户端相对容易,众所周知,因为它是一种炒作,同时又充斥着基础设施,并牢固地占领了市场,因此可以用于严肃的项目。 同时,关于浏览器编程的发展和未来,没有令人困扰的矛盾-它是面向组件的,社区非常了解反应式编程,它现在非常相关,并且正在使用它。 新版本的React不会在没有警告的情况下破坏旧代码;应用程序组成规则不会发生重大变化。 您不能说已经多次损害声誉的Angular(我希望现在一切都好,不再暴风雨)。 好吧,除了Vue,我认为最好不要碰其他任何东西。
另一方面,Java提供了广泛的现成解决方案领域,您的客户或雇主的几乎所有“愿望清单”都可以轻松实现,但至少不能通过拐杖实现。 我真诚地相信,随着.Net尤其是跨平台.Net Core的发展,一切都还不错,但是我个人并不真正喜欢C#,事实证明。