it-swarm.cn

您希望初级软件工程师具备哪些技能?

我最近完成了软件工程理学硕士学位,而我将在几周内开始我的职业生涯。我将担任一家公司的初级开发人员,该公司使用Java和相关技术(包括Spring和Hibernate))进行软件开发。老实说,我对即将到来的事情感到非常兴奋,特别是因为我想发展自己的职业Java开发人员。我对获得该领域的经验也非常感兴趣。此外,这将是我作为专业开发人员的第一次工作经历,所以我真的很想从一开始就尽力而为。

我想知道在可能成为您团队成员的新专业人员(初级开发人员)中,哪些软技能和技术技能最受赞赏,以及我应该专注于哪些技能来实现软件事业的成功工程师。

64
Bartzilla

无论您在职业中处于何处,这些都是正确的,但对于刚起步的人而言,这尤其重要。

  • 听多于说话。学习别人怎么说。
  • 要谦虚。不要害怕分享您的想法,但是不要以为您是对的,其他人都是错的。如果您发现自己认为不对的地方,请提出要求,不要发表任何声明。
  • 保持学习。您的教育基础(应该)很棒,但是您才刚刚开始学习该专业。通过实践学习。我认为除非您实际练习所学内容,否则您无法真正学习。
  • 直到看到顾客,顾客很少知道他想要什么。适应不断变化的需求。采用一种开发风格(如果允许的话),以快速将事情传达给客户,以获取反馈。
  • 寻找擅长与客户合作的人,并请他们指导您如何与客户建立关系。
  • 编写经过良好测试的健壮代码。达成目标不是目标。正确完成是。如果您擅长于此,速度将随时间而变。
  • 努力工作。不要等待被要求做某事;寻找或要求做的事情。
  • 归因于您的错误或团队的错误。不要将团队成员丢在客户面前,要诚实,当您遇到代码问题时。
  • 您可能认为您的队友希望您成为出色的编码员。那太棒了,但您的队友真的希望您能胜任,而不是一个混蛋。如果您要成为一个混蛋,最好是出色的。
50
tvanfosson

这是我最想知道的快速清单:

  • 跟进(完成您的开始)
  • 诚实(告诉我,如果您遇到困难)
  • 好奇心(寻找更好的做事方式)
  • 开放的思想(对批评和不属于您的想法)
  • 慷慨大方(分享您的知识;培训下一代)
61
Alex Feinman

两件事:学习的意愿和学习的能力。

8
Dima

动机。你知道如何激励自己吗?您知道哪些策略可能比其他策略更好吗?这是关于自我意识,有些人可能希望您从所学到的所有知识中了解到这一点。

基本的测试和调试技能。您知道什么是单元测试吗?您知道几种调试问题的方法吗?这不是专门了解在环境中做什么,而是关于最基本的测试可以是什么以及在解决问题时应采取何种策略的一般想法。

沟通技巧。您的语言精确度如何?您从技术到非技术的水平如何?当然,这是要发展的东西,但它是要注意的东西,在某些情况下,可以拯救一个可能由于不了解他们所声称的含义而陷入困境的人。您与人相处得如何?并不是说这是一个严格的要求,但是如果您可以与同事保持良好的关系,则可以使某些工作更容易处理。诚实和正直也属于此技能组,因为通常可能会有关于您所说的意思和所说的意思如何的问题。 “ Office Space” 有很多沟通不佳的例子,虽然作品是虚构的,但对于在办公室环境中工作的某些人来说,可能确实有很多场景与现实接近。

多功能性。团队中的新人员可能承担广泛的职责,因此,如果在一家小型公司中,您可能必须设置数据库,网络,Web服务器以及其他开发以外的内容。努力帮助团队按时完成任务将是这里的另一个例子。

4
JB King

好奇心,热情为自己树立了高标准,乐于学习,乐于承认他们不知道,对企业的工作及其对您的工作产生影响的兴趣。 (即使您有20年的工作经验,也都具备良好的素养)

熟练的技术知识很棒,但是您必须展示如何应用这些知识。

最重要的是,面试官必须能够看到您在此工作并做出贡献并希望留下。如果你太好了,那可能会使一些人离开低于平均水平的人更快。 ;)

4
Peter Lawrey

我同意已经提到的所有内容,但是我想强调一点,您永远不应忘记这些通用(和软)技能来代替成为技术专家。您应该同时做这两项工作,但是我更希望有一个可以交流他们所知道的知识的中级人员,然后有一个宁愿一个人工作的硕士。

另外,不要在书本上花费过多的时间。书籍很好,甚至很棒,但是如果您将大部分时间都花在阅读上,而花在工作上的时间却更少,那么您将不会从这些书中获得一半的收益。

3
Wes Baker

对我而言,作为一个没有任何学位的初级开发人员,我努力工作和自我完善的意愿极大地帮助了我的职业生涯。我也注意到能够应付一些批评(积极与否)并能够跟进此事,我的上司对此表示赞赏。

至于新环境:我建议在第一周左右就顺其自然。我犯了一个错误的尝试,那就是not赞赏。

3
Zsub

很好的答案。根据我有限的飞行经验,我只想补充一句-您知道他们所说的飞行员执照吗?

学习许可证。

2
Mike Dunlavey

很多很好的答案。

即使我不为“大人物”工作而且我也不是一位上师,我也会加2美分。

对人好

尝试与您的同事进行社交,如果可能的话,每天与他们中的一些人在一起。偶尔与他们一起吃晚饭,和他们一起开怀大笑。

换句话说,如果没有一个社区,则尝试建立一个“社区”;如果确实存在,则尝试加入其中。

认识您的同事将帮助您更轻松地与他们相处。另外,赔率很好,您会乐在其中。

2
s.m

除了社区(上)提交的所有好东西之外,我还希望看到一些艰苦技能的证据。不是完美或极客能力,而是对基础知识和基本概念有很好的了解。您已经得到了工作(恭喜!),所以您就在那里了。

但是,刷新您的知识和/或紧跟公司使用的工具,语言和技术,这将意味着您将立于不败之地,并留下良好的第一印象。

假设的perfect初级开发人员会知道peramentals

  • 语言。
  • 输入输出
  • OO概念,例如继承
  • 对象接口
  • 数据库访问(尤其是关于在新代码店中如何进行访问)
  • hTTP模型
  • 的CSS
  • JavaScript/jQuery
  • 数据库设计
  • SQL和存储过程
  • 您将要使用的IDE
  • 相关框架(您提到了Spring)

等等。他将能够专注于掌握新技能,而不必停下来学习基础知识。他将能够随心所欲地(提出他喜欢的(明智问题)-大多数高级开发人员喜欢被问到明智技术问题)刚开始几个月,许多大三学生都会面对的在线表格和管理页面的常规费用。成为一名可靠的初级开发人员可能是您的第一个团队入门测试;-)

当我刚开始在一家大公司的Web团队中担任大三学生时,分配给我的大部分初始工作虽然没有什么启发性,但是却使我感到难以接受,使我每天晚上都无法读书,这样我便可以理解自己的打算必须做第二天。我完成了,但是那是我的硕士课程相对豪华之后的五到六个月的压力;-)

如果您可以高效地完成所有基本工作,则可以更快地获得更多有趣的工作,这当然将有助于您的职业发展。

呼应以上许多观点,计算机和代码的世界正在不断发展。您将需要隔天学习新知识。睁大你的思想,并尝试保持一开始就着手的原因-因为你<3。在未来的几年中,有时这将不在您的考虑之列。热情会带您渡过大部分的坎and和障碍。

说了这么多,我过去十二年左右的经验表明,大多数大三生不会永远留在第一家公司,所以不要对“完美”抱有太大的兴趣。犯错是整个过程的一部分,它将使您从初级到最终的目标。我已经这样做了一段时间,而且几乎-每年至少要删除几次生产数据库。

祝您事业顺利。

2
5arx
  • 对工作充满热情

  • 愿意学习越来越多..

  • 诚实

  • 一致性

1
Jigar Joshi

如果您遵循人们在这里所说的所有话,那肯定是个好答案,我相信任何人都会擅长于他/她的所作所为,

只想强调几点。

  • 谦虚,不要害怕发表您的意见,但是一旦分享了意见,请不要坚持下去,并准备向他人学习。
  • 与您的团队成员建立关系,我们想与聪明和成熟的程序员一起工作的人,我们仍然需要可以与之交谈的人,与您的团队成员保持健康的关系将极大地帮助您的事业。
  • 积极主动,不要等到工作,寻找工作,向环境提出新想法时,即使他们不被接受,这也会增加您对公司的价值。
  • 与他人分享您所学到的知识,这将提高您的理解水平,并增加您对公司和社区的价值。
  • 完成您的开始后,承诺是一种伟大的品质。
  • 当事情没有按计划进行时,要保持快乐,不要失望,会有跌宕起伏,但要坚持下去

一切顺利

1
Brian Paul

主动。我有很多人根本不这样做,总是等着被告知要做什么。如果您发现有待改进的地方,那就去做。您有想法要改进吗?提出来。需要其他技巧来改善某些东西吗?学习吧。

表明您关心自己的工作并想改善。

1
jmq

我认为很多Jr程序员都没有的一种技能,但是非常好的一种技能,就是能够创建自己的工具。您可以使用一些精心制作的自定义工具来节省大量时间和精力。而且它们不必花哨,我的大多数是3行Shell脚本,尽管有些更长。

但是,学会使事情自动化将使您的生活更轻松。 (当您做好事时,给同事留下深刻的印象)

1
Zachary K

根本不要吓scar您,但我要警告您的一点是,在我工作的每家公司中,都是肮脏的巨大滚动方法以及名称不正确的对象,它们使您不敢纯粹地打开源文件如此混乱的震惊和恐怖。通常会在对话框中的“确定”按钮或网页上的“提交”按钮的事件处理程序中找到这些位置。

我从心底里求你。请安装一个心理警钟,当一个方法开始看起来很大时,我的意思是说,超过10行左右,请考虑创建另一种方法...这么多方法以后,您将了解您正在开发的对象。

我建议的下一个警钟是某个方法中最多2-3个参数。如果您看到带有大约10个输入参数的方法,请以OO=语言...

抱歉,此响应中表达了些许挫败感,我只是无法大声尖叫,学习如何编写简洁的代码有多有益。

请获取 Robert。C Martins Clean Code 的副本。每周阅读一次,拿出来吃晚饭,在枕头下睡着,在厕所里放些副本,打印出几页并将其粘贴在天花板上,以便睡觉时可以先阅读你点头;)。

祝您事业顺利!在这一点上,您的热情已经表明您会做得很好。

1
Martin Blore

我能提供的唯一建议就是永不停止学习。这些摇滚明星开发人员到达那里的方式是花时间学习新技术和语言,这是他们自己的空闲时间。如果您在那里呆了10年真是太好了,但是当您出来时,您只会知道Java + Spring + Hibernate。这就是为什么在业余时间我会看.NET平台, Python和偶尔的C++代码保持活动状态作为在信息安全级上从事MS工作的人员,时间可能是宝贵的,必须明智地使用。

1
Woot4Moo

使用谷歌的能力。真。

并不是说我永远也不会帮助任何人,特别是初级同事。但是没有什么比让某人持续地不尽职尽责来解决问题更令人沮丧的了。

我给初中的建议。工程师将尽您最大的努力解决问题。当您不了解某些内容时,请勤劳而有条理地使用google,wikipedia或stackoverflow。

不要等太久再去找更高级的同事寻求帮助-这取决于组织的类型。在一家可以互相帮助的优秀公司中,如果您花了半天多的时间来寻找答案,请不要犹豫,停止自己的研究以寻求帮助。

在其他人总是互相尊重的组织中,您可能需要花费几天的时间(记录您所做的一切以及所研究的所有内容),然后才能寻求帮助。在这类公司中,记录您所做的工作会有所帮助,以便您可以向他们显示“您在Google上做了它”,因为这将是他们向您扔出的第一个反驳词。

但是无论如何,我在初级工程师中所寻找的本质是尽他的努力来尝试解决问题,而不是期望一直给他处理答案。简而言之,请告诉我您可以使用Google。

1
luis.espinal

(1)开放的思想。您不希望有人被制度化地在每个项目中使用语言X和环境Y。您希望某人能够在特定技术无法彻底解决问题并提供良好替代方案时有所作为。最重要的是,您希望有人可以挑战传统思维,并提出激发业务发展的解决方案。您可能自己会遇到这种情况,但是我发现人们已经习惯了一个流程,以至于他们没有改变它,但是他们仍然抱怨它给他们带来的痛苦。通常,当我到达时,我会研究如何改善这种情况并向经理提供解决方案。现在,我还要说,个人应该对他/她的建议“外交” :)

(2)良好的领域建模能力。我发现有些人忽略了这一相当大的数字。在我工作过的一些地方,对业务的了解正在“弄脏你的手”,人们回避纯粹的技术问题,例如将拼写检查器集成到版本控制中,等等,他们并没有花费很多时间来改善商业。能够查看业务并从中创建模型(简化)并将其传达给各种听众,无论是口头表达,视觉表达(UML,SSADM还是其他),或者两者兼而有之,您都希望拥有这种心态的人。

我可以推荐的两本书是: 热情的程序员实用的程序员 。这两本书都为初级和高级程序员提供了很好的建议。

1
Desolate Planet