软件⼯程师的晋升途径_逐步成为优秀软件开发⼈员的途径软件⼯程师的晋升途径
我收到很多电⼦邮件,基本上都说“我如何成为⼀名优秀的软件开发⼈员?”
这类电⼦邮件通常会打扰我,因为我觉得当您问这种问题时,您正在寻⼀种神奇的药⽔,它可以使您突然成为⼀名
我怀疑很少有⼈向我发送电⼦邮件询问此问题,他们真的想知道如何成为⼀名出⾊的软件开发⼈员,⽽是在寻快速解决⽅案或简单答案。
另⼀⽅⾯,我认为有些真诚的开发⼈员甚⾄不知道如何提出正确的问题,以实现⾃⼰的理想未来。 我认为那些开发⼈员,尤其是刚起步的开发⼈员,正在寻逐步成为优秀开发⼈员的指南。
我认为我将根据⾃⼰的经验和所学知识,尝试提供逐步指南。
现在,当然,我意识到没有神奇的公式,并且 ,但是我认为接下来的内容是⼀个合理的步骤概述,某⼈可以采取⼀些步骤来达到相当⾼的⽔平,并且通常被认为是作为⼀个好⼈,甚⾄是伟⼤的开发者。
在开始跑步之前,我们必须学习⾛路。 您将学习如何使⽤⼀种编程语⾔进⾏编程。 您不会尝试⼀次学习五千万种东西,⽽将⾃⼰分散得太瘦⽽学会⾛路。
太多的初学者试图同时跳⼊所有内容,并且没有耐⼼在继续前进之前学习⼀种编程语⾔。 他们认为他们必须了解所有热门新技术才能获得编程⼯作。 的确,您不仅需要了解单⼀编程语⾔的基础知识,还必须从这⾥开始,所以您最好专注于此。
选择⼀种您认为有可能从事⾃⼰的职业的编程语⾔。 编程语⾔本⾝并没有多⼤关系,因为您应该在这⾥长期考虑。 我的意思是,您不应该尝试学习⼀种“简单”的编程语⾔来开始。 只需学习您感兴趣的任何语⾔,就可以在接下来的⼏年中开始编程。 您想选择具有持久价值的东西。
选择了编程语⾔后,您将尝试学习,尝试并到⼀些隔离该编程语⾔的书籍或教程。 我的意思是,您不想到会同时教给您太多知识的学习材料。 您想到仅专注于语⾔⽽⾮完整技术栈的初学者资料。
在阅读材料或阅读完本教程时,请确保您确实编写了代码。 如果可以,请进⾏锻炼。 尝试学到的东西。 尝试将所有内容组合在⼀起,并使⽤您所了解的每个概念。 是的,这很痛苦。 是的,从封⾯到封⾯读书⽐较容易,但是如果您真的想学习,则需要这样做。
在编写代码时,请尝试确保您了解所编写的每⼀⾏代码的功能。 您阅读的所有代码也是如此。 如果您接触到代码,请放慢速度并确保您了解它。 不管你不懂,抬头。 花时间去做,您不会⼀直感到迷茫和困惑。
最后,期望在点击前先阅读⼀本书或教程三遍。 您不会在第⼀次尝试时就得到“编程”,这是没⼈能做到的。 您需要反复暴露,才能最终了解它,并了解发⽣了什么。 在此之前,您会感到⾮常迷茫,没关系,这是过程的⼀部分。 接受并勇往直前。
现在,您已经对⼀种编程语⾔有了基本的了解,是时候将这种理解付诸实践,出差距所在了。 最好的⽅法是尝试构建某些东西。
在这⼀点上不要太雄⼼勃勃,但也不要太胆⼩。 为应⽤程序选择⼀个想法,这个想法要⾜够简单,您可以花些⼒⽓就能完成,⽽花数⽉才能完成。 尝试将其尽可能地限制为仅编程语⾔。 不要尝试做全栈操作(意味着,使⽤从⽤户界⾯⼀直到数据库的所有技术),尽管您可能需要利⽤某种现有的框架或API。
对于第⼀个真实项⽬,您可能需要考虑复制已经存在的简单项⽬。 寻⼀个简单的应⽤程序,例如待办事项列表应⽤程序,然后直接尝试将其复制。 不要让您的设计技能成为学习编码的障碍。
我建议创建某种类型的移动应⽤程序,因为⼤多数移动应⽤程序都很⼩⽽且⾮常简单。 另外,随着越来越多的公司开始需要移动应⽤程序,学习移动开发技能⾮常有⽤。 今天,您⼏乎可以使⽤任何⼀种语⾔来构建移动应⽤程序。 有许多解决⽅案可让您使⽤多种编程语⾔为不同的移动操作系统构建应⽤程序。
游戏开发工程师需要学什么
您也可以构建⼀个⼩型Web应⽤程序,但只是尽量不要过于复杂地进⼊复杂的Web开发堆栈。 我通常建议从移动应⽤程序开始,因为Web 开发的⼊门成本较⾼。 要开发Web应⽤程序,您⾄少需要了解⼀些HTML,可能需要⼀些后端框架和JavaScript。
⽆论选择哪种构建⽅式,您都可能需要对⼀些框架进⾏⼀些了解-这很好,只是不要太深⼊细节。 例如,您只需编写⼀些简单的教程,就可以编写⼀个⾮常简单的Android应⽤程序,⽽不必真正了解所有Android API和Android的⼯作原理。 只是不要浪费太多时间尝试学习有关框架的所有知识。 了解完成项⽬所需的知识。 您可以稍后了解详细信息。
哦,这应该很难。 那就是你学习的⽅式。 您努⼒出如何做某事,然后到答案。 不要跳过此步骤。 作为软件开发⼈员,您永远都不会到现场学习任何东西并在进⾏过程中弄清楚事情的地步。 这是对您未来的良好培训。
现在是时候真正专注于框架了。 到⽬前为⽌,您应该⾄少掌握⼀种编程语⾔,并且具有使⽤移动或Web应⽤程序框架的⼀些经验。
选择⼀个单⼀的框架来学习,这将使您在某些环境中富有成效。 您选择学习哪种框架将取决于您要成为什么样的开发⼈员。 如果您想成为Web开发⼈员,则将需要学习使⽤您所编程的任何编程语⾔的Web开发框架。如果您想成为移动开发⼈员,则需要学习移动操作系统和随之⽽来。
尝试深⼊了解框架。 这将花费⼀些时间,但是要花时间学习您使⽤得很好的任何框架。 现在不要尝试学习多个框架,它只会分散您的注意⼒。 考虑考虑学习将要使⽤的框架和编程语⾔来完成⼀项⾮常具体的⼯作所需的技能。 您以后随时可以扩展⾃⼰的技能。
⼤多数软件开发⼈员将需要了解⼀些数据库技术,因为⼤多数系列应⽤程序都具有后端数据库。 因此,请确保您不要忽略在此领域的投资。
如果您学习SQL,则可能会看到最⼤的好处-即使您计划使⽤MongoDB或Raven之类的NoSQL数据库,学习SQL也将为您提供更好的⼯作基础。 与NoSQL相⽐,还有更多需要SQL知识的⼯作。
不必太担⼼SQL的风格。 不同SQL技术⾮常相似,如果您了解⼀种SQL技术的基础知识,那么在它们之间切换就不会有问题。 只要确保您了解有关表,查询和其他常见数据库操作的基础知识即可。
并创建⼀些⼩样本项⽬,以便您可以练习所学的内容-始终练习所学的内容。
您可以在以下⽅⾯拥有⾜够SQL知识:
建⽴表格
执⾏基础查询
将表联接在⼀起以获取数据
了解索引⼯作原理
插⼊,更新和删除数据
此外,您将需要学习某种对象关系映射技术(ORM)。 您学习哪⼀种取决于您正在使⽤的技术堆栈。 寻适合您所学框架的ORM技术。可能会有⼀些选择,所以最好的选择是尝试选择最受欢迎的选择。
好的,现在您已经掌握了⾜够的技能和知识,可以胜任软件开发⼈员的基本⼯作。 如果您可以告诉我您了解编程语⾔的基础知识,可以使⽤框架,了解数据库并构建了⾃⼰的应⽤程序,那么我肯定会像许多雇主⼀样雇⽤您。
这⾥的关键不是太⾼的⽬标和⾮常具体的⽬标。 不要尝试⽴即获得梦想的⼯作-您没有资格。 相反,尝试⼀份⼯作来维护使⽤您正在学习的编程语⾔和框架构建的现有代码库。
您可能⽆法到完全匹配的内容,但是越具体越好。 尝试申请与您正在学习的技术完全匹配的⼯作。
即使没有太多经验,如果您完全符合技能要求并且愿意成为⼀名维护程序员,您也应该能够到⼯作。
是的,这种⼯作可能有点⽆聊。 这不像创造新事物那样令⼈兴奋,但是这项⼯作的⽬的不是为了获得乐趣或赚钱,⽽是要学习并获得经验。
与开发⼈员团队⼀起开发现有应⽤程序将帮助您扩展技能,并了解⼤型软件系统的结构。 您可能正在修复错误并添加了⼀些⼩功能,但是您将学习并将技能付诸实践。
倾⼼于这项⼯作。 学习⼀切。 尽最⼤努⼒。 暂时不要考虑⾦钱,加薪和玩政治游戏(以后会发⽣),⽽只是专注于尽可能多地完成有意义的⽣产⼯作并扩⼤技能。
现在是时候开始变得更好地编写代码了。 此时,不必太担⼼设计。 您需要学习如何编写易于理解和维护的优质⼲净代码。 为了做到这⼀点,您需要阅读很多东西,并看到许多好的代码⽰例。
阅读以下书籍,丰富您的图书馆:
-(练习)
语⾔特定的结构书籍,例如:
此时,您真的想将学习重点放在编写好的代码和使⽤现有系统的结构化过程上。 您应该努⼒能够以所选的编程语⾔轻松实现算法,并以易于阅读和理解的⽅式来实现它。
在这⼀点上,您可能会通过很好地学习第⼆种编程语⾔来获得最⼤的增长。 在这⼀点上,您⽆疑会接触到不⽌⼀种编程语⾔,但是现在您将要专注于⼀种新的语⾔,理想情况下,这是⼀种与您所知道的语⾔截然不同的语⾔。
这看起来似乎很奇怪,但是让我解释⼀下为什么如此重要。 当您只⾮常了解⼀种编程语⾔时,很难理解软件开发中哪些概念是您的编程语⾔所独有的,⽽哪些则超越了特定的语⾔或技术。 如果您将时间花在新的语⾔和编程环境上,您将开始以新的⽅式看待事物。 您将开始学习实⽤性⽽不是惯例。
作为⼀个新的程序员,您很可能会以某种特定的⽅式来做事情,⽽不知道为什么要那样做。 ⼀旦掌握了第⼆种语⾔和技术之后,您将开始了解更多原因。 相信我,如果您这样做,您将会成长。 特别是如果您选择⼀种语⾔,您会讨厌。
确保使⽤这种新语⾔来构建东西。 不⼀定要⼤,但要⾜够复杂就可以迫使您挠头并轻轻地将其撞在墙上。
好吧,现在来验证您的软件开发能⼒的真实测试。 您实际上可以⾃⾏构建⼀些东西吗?
如果您要继续前进并有信⼼获得⼯作机会,甚⾄可能为雇主设计⼀些东西,那么您需要知道⾃⼰可以做到。 没有⽐了解它更好的⽅法了。
选择⼀个将使⽤您全部技能的项⽬。 确保合并了数据库,框架以及构建完整应⽤程序所需的所有其他内容。 这个项⽬应该花费您⼀个多星期的时间,并且需要⼀些认真的思考和设计。 尝试做⼀些您可以收取费⽤的事情,以便您认真对待并有动⼒继续努⼒。
只要确保您不将其拖出即可。 您仍然不想在这⾥变得野⼼勃勃。 选择⼀个挑战您的项⽬,⽽不是⼀个永远不会完成的项⽬。 这是您职业⽣涯的⼀个重要转折点。 如果您有完成该项⽬的后续步骤,那么您会⾛得很远,否则,您将⾛得很远……好吧,我⽆法做出任何承诺。
好的,现在该重新⼯作了。 ⾄此,您应该已经最⼤限度地利⽤了从当前⼯作中获得的收益,尤其是如果它仅涉及维护时。
现在是时候寻可以挑战您的⼯作了,但⼜不过分。 您仍然需要学习很多东西,所以您不想太过费⼒。 理想情况下,您想到⼀份⼯作,在那⾥您将有机会与⼀个团队合作来建⽴新的事物。
您可能不是应⽤程序的架构师,但是参与创建应⽤程序将帮助您扩展技能并以不同的⽅式挑战您,⽽不仅仅是维护现有的代码库。
您已经对创建⼀个新的系统充满信⼼,因为您⾃⼰已经完成了⼀个实质性的系统的创建,因此您不必太紧张就可以进⼊⾯试,并相信⾃⼰可以完成⼯作。 这种信⼼使您更有可能获得所申请的任何⼯作。
确保您重新寻⼯作。 突出显⽰您已获得的⼀组特定技能。 不要试图⽤⼀长串⽆关技能来打动每个⼈。 专注于最重要的技能,并寻与他们完全匹配的⼯作,或者⾄少尽可能地与他们匹配。
现在是时候从初级开发⼈员转到⾼级开发⼈员了。 初级开发⼈员维护系统,⾼级开发⼈员构建和设计它们。 (显然,这是⼀个概括。⼀些⾼级开发⼈员维护系统。)
您现在应该已经准备好构建系统,但是现在您需要学习如何设计它们。
您应该将学习重点放在设计最佳实践和⼀些⾼级主题上,例如:
设计模式
控制反转(IOC)
测试驱动开发(TDD)
⾏为驱动开发(BDD)
软件开发⽅法论,例如:敏捷,SCRUM等
消息总线和集成模式
该列表可能会持续⼀段时间-您将永远⽆法完成学习和提⾼这些领域的技能的⼯作。 只要确保您⾸先从最重要的事情开始,那将⾼度取决于您的兴趣以及您想从事的职业。
您在这⾥的⽬标是不仅能够构建别⼈设计的系统,⽽且能够就应如何设计软件以及对于什么样的问题有意义的体系结构形成⾃⼰的看法。
在这⼀点上,您已经做到了–永远不会真正做到“成功”,但您应该是⼀个⾮常优秀的软件开发⼈员-甚⾄“很棒”。 只是不要让它落到您的头上,您将总有⼀些东西要学习。
您到这⾥花了多长时间? 我不知道。 可能⾄少是⼏年,但可能已经超过10年了,这取决于您的执着程度和为您带来的机遇。
⼀个不错的捷径是尝试始终⽐⾃⼰更好地与开发⼈员联系。
遵循这10个步骤的过程中,您需要做⼀些事情。 在每个步骤中都很难列出它们,因此在这⾥我将简要列出它们:
授课–整个学习过程中,您也应该教它们。 不管您是初学者还是专家,都可以教书,⽽且教书是最好的学习⽅法之⼀。 记录您的过程和旅程,并⼀路帮助其他⼈。
推销⾃⼰–我认为这很重要,因此 了解如何推销⾃⼰,并在整个职业⽣涯中不断做到。 弄清楚如何为⾃⼰创建个⼈品牌并在⾏业中建⽴⾃⼰的声誉,您将永远不需要⼯作。 如果您学会推销⾃⼰,您将决定⾃⼰的未来。 这需要⼀些⼯作,但这是值得的。 您正在阅读我的努⼒⽂章。
阅读–永不停⽌学习。 永远不要停⽌阅读。 始终按照⾃⼰的⽅式努⼒读书。 始终要⾃我完善。 您的学习之旅永远不会完成。 您不可能⼀⽆所知。 如果您在职业⽣涯中不断学习,您将不断超越同龄⼈。
做–⼀路上的每⼀站,不仅要学习,⽽且要做。 将您正在学习的所有内容付诸实践。 留出时间练习技能,编写代码和构建东西。 您可以阅读所有想要的⾼尔夫书籍,但是如果您不挥杆⾼尔夫俱乐部,那么您永远不会成为Tiger Woods。
软件⼯程师的晋升途径
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论