软件工程师的晋升途径_逐步成为优秀软件开发人员的途径

软件工程师的晋升途径

我收到很多电子邮件,基本上都说“我如何成为一名优秀的软件开发人员?”

这类电子邮件通常会打扰我,因为我觉得当您问这种问题时,您正在寻找一种神奇的药水,它可以使您突然成为一名超级开发人员。

我怀疑很少有人向我发送电子邮件询问此问题,他们真的想知道如何成为一名出色的软件开发人员,而是在寻找快速解决方案或简单答案。


另一方面,我认为有些真诚的开发人员甚至不知道如何提出正确的问题,以实现自己的理想未来。 我认为那些开发人员,尤其是刚起步的开发人员,正在寻找逐步成为优秀开发人员的指南。

超级英雄

我认为我将根据自己的经验和所学知识,尝试提供逐步指南。

现在,当然,我意识到没有神奇的公式,并且有多条成功的道路 ,但是我认为接下来的内容是一个合理的步骤概述,某人可以采取一些步骤来达到相当高的水平,并且通常被认为是作为一个好人,甚至是伟大的开发者。

在开始跑步之前,我们必须学习走路。 您将学习如何使用一种编程语言进行编程。 您不会尝试一次学习五千万种东西,而将自己分散得太瘦而学会走路。

太多的初学者试图同时跳入所有内容,并且没有耐心在继续前进之前学习一种编程语言。 他们认为他们必须了解所有热门新技术才能获得编程工作。 的确,您不仅需要了解单一编程语言的基础知识,还必须从这里开始,所以您最好专注于此。

选择一种您认为有可能从事自己的职业的编程语言。 编程语言本身并没有多大关系,因为您应该在这里长期考虑。 我的意思是,您不应该尝试学习一种“简单”的编程语言来开始。 只需学习您感兴趣的任何语言,就可以在接下来的几年中开始编程。 您想选择具有持久价值的东西。

选择了编程语言后,您将尝试学习,尝试并找到一些隔离该编程语言的书籍或教程。 我的意思是,您不想找到会同时教给您太多知识的学习材料。 您想找到仅专注于语言而非完整技术栈的初学者资料。

在阅读材料或阅读完本教程时,请确保您确实编写了代码。 如果可以,请进行锻炼。 尝试学到的东西。 尝试将所有内容组合在一起,并使用您所了解的每个概念。 是的,这很痛苦。 是的,从封面到封面读书比较容易,但是如果您真的想学习,则需要这样做。

在编写代码时,请尝试确保您了解所编写的每一行代码的功能。 您阅读的所有代码也是如此。 如果您接触到代码,请放慢速度并确保您了解它。 不管你不懂,抬头。 花时间去做,您不会一直感到迷茫和困惑。

最后,期望在点击前先阅读一本书或教程三遍。 您不会在第一次尝试时就得到“编程”,这是没人能做到的。 您需要反复暴露,才能最终了解它,并了解发生了什么。 在此之前,您会感到非常迷茫,没关系,这是过程的一部分。 接受并勇往直前。

现在,您已经对一种编程语言有了基本的了解,是时候将这种理解付诸实践,找出差距所在了。 最好的方法是尝试构建某些东西。

在这一点上不要太雄心勃勃,但也不要太胆小。 为应用程序选择一个想法,这个想法要足够简单,您可以花些力气就能完成,而花数月才能完成。 尝试将其尽可能地限制为仅编程语言。 不要尝试做全栈操作(意味着,使用从用户界面一直到数据库的所有技术),尽管您可能需要利用某种现有的框架或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技术的好书,并创建一些小样本项目,以便您可以练习所学的内容-始终练习所学的内容。

您可以在以下方面拥有足够SQL知识:

  • 建立表格
  • 执行基础查询
  • 将表联接在一起以获取数据
  • 了解索引工作原理
  • 插入,更新和删除数据

此外,您将需要学习某种对象关系映射技术(ORM)。 您学习哪一种取决于您正在使用的技术堆栈。 寻找适合您所学框架的ORM技术。 可能会有一些选择,所以最好的选择是尝试选择最受欢迎的选择。

好的,现在您已经掌握了足够的技能和知识,可以胜任软件开发人员的基本工作。 如果您可以告诉我您了解编程语言的基础知识,可以使用框架,了解数据库并构建了自己的应用程序,那么我肯定会像许多雇主一样雇用您。

塔桥-伦敦-英国

这里的关键不是太高的目标和非常具体的目标。 不要尝试立即获得梦想的工作-您没有资格。 相反,尝试找一份工作来维护使用您正在学习的编程语言和框架构建的现有代码库。

您可能无法找到完全匹配的内容,但是越具体越好。 尝试申请与您正在学习的技术完全匹配的工作。

即使没有太多经验,如果您完全符合技能要求并且愿意成为一名维护程序员,您也应该能够找到工作。

是的,这种工作可能有点无聊。 这不像创造新事物那样令人兴奋,但是这项工作的目的不是为了获得乐趣或赚钱,而是要学习并获得经验。

与开发人员团队一起开发现有应用程序将帮助您扩展技能,并了解大型软件系统的结构。 您可能正在修复错误并添加了一些小功能,但是您将学习并将技能付诸实践。

倾心于这项工作。 学习一切。 尽最大努力。 暂时不要考虑金钱,加薪和玩政治游戏(以后会发生),而只是专注于尽可能多地完成有意义的生产工作并扩大技能。

现在是时候开始变得更好地编写代码了。 此时,不必太担心设计。 您需要学习如何编写易于理解和维护的优质干净代码。 为了做到这一点,您需要阅读很多东西,并看到许多好的代码示例。

阅读以下书籍,丰富您的图书馆:

语言特定的结构书籍,例如:

此时,您真的想将学习重点放在编写好的代码和使用现有系统的结构化过程上。 您应该努力能够以所选的编程语言轻松实现算法,并以易于阅读和理解的方式来实现它。

在这一点上,您可能会通过很好地学习第二种编程语言来获得最大的增长。 在这一点上,您无疑会接触到不止一种编程语言,但是现在您将要专注于一种新的语言,理想情况下,这是一种与您所知道的语言截然不同的语言。

这看起来似乎很奇怪,但是让我解释一下为什么如此重要。 当您只非常了解一种编程语言时,很难理解软件开发中哪些概念是您的编程语言所独有的,而哪些则超越了特定的语言或技术。 如果您将时间花在新的语言和编程环境上,您将开始以新的方式看待事物。 您将开始学习实用性而不是惯例。

作为一个新的程序员,您很可能会以某种特定的方式来做事情,而不知道为什么要那样做。 一旦掌握了第二种语言和技术之后,您将开始了解更多原因。 相信我,如果您这样做,您将会成长。 特别是如果您选择一种语言,您会讨厌。

确保使用这种新语言来构建东西。 不一定要大,但要足够复杂就可以迫使您挠头并轻轻地将其撞在墙上。

好吧,现在来验证您的软件开发能力的真实测试。 您实际上可以自行构建一些东西吗?

如果您要继续前进并有信心获得工作机会,甚至可能为雇主设计一些东西,那么您需要知道自己可以做到。 没有比了解它更好的方法了。

选择一个将使用您全部技能的项目。 确保合并了数据库,框架以及构建完整应用程序所需的所有其他内容。 这个项目应该花费您一个多星期的时间,并且需要一些认真的思考和设计。 尝试做一些您可以收取费用的事情,以便您认真对待并有动力继续努力。

只要确保您不将其拖出即可。 您仍然不想在这里变得野心勃勃。 选择一个挑战您的项目,而不是一个永远不会完成的项目。 这是您职业生涯的一个重要转折点。 如果您有完成该项目的后续步骤,那么您会走得很远,否则,您将走得很远……好吧,我无法做出任何承诺。

好的,现在该重新找工作了。 至此,您应该已经最大限度地利用了从当前工作中获得的收益,尤其是如果它仅涉及维护时。

复古矢量背景与地方为您的文本。

现在是时候寻找可以挑战您的工作了,但又不过分。 您仍然需要学习很多东西,所以您不想太过费力。 理想情况下,您想找到一份工作,在那里您将有机会与一个团队合作来建立新的事物。

您可能不是应用程序的架构师,但是参与创建应用程序将帮助您扩展技能并以不同的方式挑战您,而不仅仅是维护现有的代码库。

您已经对创建一个新的系统充满信心,因为您自己已经完成了一个实质性的系统的创建,因此您不必太紧张就可以进入面试,并相信自己可以完成工作。 这种信心使您更有可能获得所申请的任何工作。

确保您重新寻找工作。 突出显示您已获得的一组特定技能。 不要试图用一长串无关技能来打动每个人。 专注于最重要的技能,并寻找与他们完全匹配的工作,或者至少尽可能地与他们匹配。

现在是时候从初级开发人员转到高级开发人员了。 初级开发人员维护系统,高级开发人员构建和设计它们。 (显然,这是一个概括。一些高级开发人员维护系统。)

您现在应该已经准备好构建系统,但是现在您需要学习如何设计它们。

您应该将学习重点放在设计最佳实践和一些高级主题上,例如:

  • 设计模式
  • 控制反转(IOC)
  • 测试驱动开发(TDD)
  • 行为驱动开发(BDD)
  • 软件开发方法论,例如:敏捷,SCRUM等
  • 消息总线和集成模式

该列表可能会持续一段时间-您将永远无法完成学习和提高这些领域的技能的工作。 只要确保您首先从最重要的事情开始,那将高度取决于您的兴趣以及您想从事的职业。

您在这里的目标是不仅能够构建别人设计的系统,而且能够就应如何设计软件以及对于什么样的问题有意义的体系结构形成自己的看法。

在这一点上,您已经做到了–永远不会真正做到“成功”,但您应该是一个非常优秀的软件开发人员-甚至“很棒”。 只是不要让它落到您的头上,您将总有一些东西要学习。

您到这里花了多长时间? 我不知道。 可能至少是几年,但可能已经超过10年了,这取决于您的执着程度和为您带来的机遇。

一个不错的捷径是尝试始终比自己更好地与开发人员联系。

遵循这10个步骤的过程中,您需要做一些事情。 在每个步骤中都很难列出它们,因此在这里我将简要列出它们:

授课整个学习过程中,您也应该教它们。 不管您是初学者还是专家,都可以教书,而且教书是最好的学习方法之一。 记录您的过程和旅程,并一路帮助其他人。

推销自己–我认为这很重要,因此我围绕这个想法构建了整个课程。 了解如何推销自己,并在整个职业生涯中不断做到。 弄清楚如何为自己创建个人品牌并在行业中建立自己的声誉,您将永远不需要工作。 如果您学会推销自己,您将决定自己的未来。 这需要一些工作,但这是值得的。 您正在阅读我的努力文章。

阅读–永不停止学习。 永远不要停止阅读。 始终按照自己的方式努力读书。 始终要自我完善。 您的学习之旅永远不会完成。 您不可能一无所知。 如果您在职业生涯中不断学习,您将不断超越同龄人。

做–一路上的每一站,不仅要学习,而且要做。 将您正在学习的所有内容付诸实践。 留出时间练习技能,编写代码和构建东西。 您可以阅读所有想要的高尔夫书籍,但是如果您不挥杆高尔夫俱乐部,那么您永远不会成为Tiger Woods。

翻译自: https://www.javacodegeeks.com/2014/07/step-by-step-path-to-becoming-a-great-software-developer.html

软件工程师的晋升途径

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值