0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

软件工程师如何走向成功

工程师人生 来源:wv 作者:简书网 2019-09-26 17:43 次阅读

众所周知,并不是每一个程序员都能成为优秀的软件工程师。许许多多发展潜力良好的“种子选手”,有着多年的的工作经验,并且曾为大型或者超大型的技术公司服务过,按时到且止步于面试。

我们可以肯定,应聘人员都是能力不错的软件工程师,甚至可能很擅长他们目前的工作。在面试中否决这些人,只是因为面试官不认为他们能成为一名优秀的软件工程师。而具备一些特殊的品质能让软件工程师更容易在创业环境中取得成功。同时这些品质在初创企业比在一个更成熟的公司更为关键。

因为在一家初创企业:

1.由浅及深,可以对产品、软件系统、文化及团队有一个更为深刻的认识。

2.成功源于团队的表现,而非个人之功。如果位于一家更大更成熟的公司,你的出色表现就会成为你向上爬的踏脚石,但是在一家又新又小的公司,这根本不值一提。

3.时间是控制因素,一是因为初创企业盈利能力薄弱,另外则是和那些盘根错节根深蒂固的老牌子公司相比,灵活敏捷是他们最大的优势。而时间有限就意味着必须马不停蹄、加班加点,不能拖拉磨蹭,也就是说没有太多的时间供你挥霍在需要解决的问题上。

而有着卓越的决策能力和熟练的技术,则是最有效率的软件工程师。这样的工程师大多内涵以下7种特质:

1.很大一部分时间其实是花在系统调试上的,而非技巧编程

当有用户报告紧急问题,尽快将其修复;当数据莫名遭到破坏,要尽快找出罪魁祸首;当服务器的CPU出现负载高峰,尽快找出原因等等,都是工程师的工作。而良好的调试技巧则能让企业干净利落地解决这些问题。

所以在调试时,应采用一种科学严谨的思维看待问题:先去假设出错的地方,然后用最小可重现的情况或者最有效的方法去验证。此外,调试过程还需要涉及各种的工具:缩小回归原因范围的git bisect、交叉分析现状的UNIX命令行、发现瓶颈的分析器、单步执行代码的调试器等等。当然,调试的应用范围不仅仅局限于技术领域。

如果产品的使用率和增长率趋于平稳,那么该如何假设和测试用户的行为以调试未来目标的重心?若一个团队完不成他们的项目目标,又该怎么调试才能知道导致项目流产的最终原因是团队沟通不畅,技能不足还是别的其他原因?关键:先从数据入手

2.对于未知勇于挑战。

面对未知作为一名软件工程师,需要经常专研那些又大又不熟悉的代码库。可能需要好好研究正在使用的开源工具的代码;又或者需要掌握其他团队成员写的代码等等。所以,能快速驾驭大型代码库和精通相关区域的能力显得至关重要。而这种能力一般来自于经验,通过阅读大量代码积累。另外则需要靠熟悉能搜索代码库、跳转到相关部分的工具,以及会查找有关提交历史中的版本控制——这些捷径都能减少了解新代码所需的时间。

若是在成熟的公司,这种未知也能让我受益匪浅,不过不同的是,工程师往往只需要专注并精通一部分代码库就能成果斐然了。当然,其他非代码领域有时候也需要你去探索。软件工程师常常需要与销售人员讨论客户要求的可行性、接待客户、给新的工程师培训,以及其他领域甚至完全没有接触过的事物。

3.在一家大规模公司决策的务实态度,在代码审查和单元测试坚持己见有助于改善组织平衡。

但在一家初创公司,关键因素是:务实。这能让团队快速完成任务。比如:知道什么时候应积极辩论,当一旦有了决策,即便你再不同意,也能一丝不苟地作为团队的一份子认真执行。而对决策的指导启发式评估应侧重于“是否最终能增加团队成功的概率?”。很多因素都会对这个问题产生效果:团队的文化、产品的选择、架构的侧重点、人才结构等等。在决策前最好限定讨论的时间,然后执行,参与人员各抒己见。

4.工欲善其事,必先利其器。

工具的合理运用能节约大量的时间,时间则是工程师最重要的资源。对于初创公司,工程师善用工具的能力越强,完成的任务数量就会越多。而高效的工程师常常是那些善于利用工具的人,这一点在刚创业公司尤为重要。一些大型的组织一般会有专门的工具团队。若这些工具也为其他团队成员所接受,那么团队生产力将会发生乘数效应。

5.高大上的多元化初创企业,早期出现的许多问题并不需要很专业的知识。

具备的技能越多,在解决问题时所遇到的瓶颈就越少,哪怕只对这些技能有一个最基本的了解,甚至还在熟悉摸索的过程中。如果前端Web工程师同时装备了基本的服务器技术(server skill),当下次再遇到与此相关的问题就不必去请服务器工程师了。而后端工程师,若会一些基本的HTML、CSS以及JavaScript技能,就能将其所制作的工具设计成一个Web界面,方便其他成员使用,不必因为缺乏Web设计师而裹足不前。一个在成长的工程师,应该能达到顺利使用基本的数据分析工具分析实验数据,而不必受制于数据分析员。不过,还有一种更欢迎“专家”的例外,如果是在利基、重技术的环境中,拥有更加精深的专业知识和工作效率。随着创业公司的不断发展,对于杂而不精的多面手,越到后期,替代品就会越多。

6.保持玩家心态,而非受害者心态

在《Conscious Business》一书中,Fred Kofman描述了人们对待问题采取的两种不同态度。一种就是玩家的心态,审视自己的能力,一旦确定能做补救,毫不犹豫投入。一种是受害者的心态,怨天尤人,责怪他人的不是,例如产品推出不当、项目时间太少、以及和队友之间发生争执等等,通通归咎于外部因素。在短时间内,受害者心态可能抚慰受伤的心情,但是从长远角度分析,拥有玩家心态的人可以不断进步和发展。而在创业公司工作压力是很大的,同时随着压力程度的增加,人们往往回顾,不去勇于承担个人责任,陷入逃避责任和互相推诿的怪圈。

7.不断学习与回顾,持之以恒。

研究发现,只要程序员有足够的激情和动力,上述品质是可以通过学习和培养后天养成的。坚忍不拔是一种专注于长远目标的激情和毅力。众所周知坚持梦想,坚持未来,不是一两天之功,也不是一周两周之效,更不是一个月两个月就可以实现,而是持续多年,不畏艰辛、勇往直前,为了目标而奋斗。随着时间的推移,不断进步,一定会成为一个更为优秀的软件工程师。

上述这些技能即便是在更为成熟的公司也是能助你一臂之力的,不过在初创公司发挥的作用更大。当然,并不是说不具备这些技能就能成为一个好的工程师了,这说明,可能你不大适合这种创业环境。但是,如果要立志成为一个优秀的软件工程师,不要让上面这7种因素限制发展。从现在开始,模拟一个学习计划来提高技能吧!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 软件工程师
    +关注

    关注

    8

    文章

    217

    浏览量

    20926
收藏 人收藏

    评论

    相关推荐

    Cognition发布首款AI软件工程师Devin

    据报道,Cognition公司今日公布了其首款人工智能软件工程师——Devin,掀起了打造软件模式变革的序幕。该产品在SWE-bench代码测验中展现出卓越表现,甚至超过了部分顶级人类工程师的水准。
    的头像 发表于 03-13 10:57 379次阅读

    企业老工程师和高校老师有啥区别

    电子工程师硬件
    电子发烧友网官方
    发布于 :2024年02月28日 17:50:00

    如何搞崩一个硬件工程师心态?试试对ta说这几句

    硬件工程师
    扬兴科技
    发布于 :2024年02月20日 18:05:49

    嵌入式软件工程师常用的

    最近我换工作了,看见不同嵌入式软件工程师用的平台都不一样,所以我整理了一下。PlatformIO:多平台支持:PlatformIO支持多种嵌入式平台,包括Arduino、ESP8266、ESP32
    的头像 发表于 12-24 08:00 233次阅读
    嵌入式<b class='flag-5'>软件工程师</b>常用的

    电子工程师第一天上班就暴揍师傅。。。#科普 #示波器 #电子工程师 #打工日记

    电子工程师示波器
    安泰小课堂
    发布于 :2023年12月18日 17:36:12

    嵌入式硬件和软件哪个好?

    ,如复位电路、常用滤波器电路、功放电路、高速信号传输线的匹配电路等;故障定位、解决问题的能力;设计文档的组织编写技能! 那对于嵌入式软件工程师来说: 嵌入式软件工程师领域较新,他的发展也是很快的,像
    发表于 12-05 15:17

    FPGA工程师需要具备哪些技能?

    工程师需要考虑时序约束、时钟网络设计、数据路径优化等因素。较常用的布局布线工具有ALLEGRO PCB和Orcad等软件。在使用EDA工具之前,FPGA工程师需要了解所需的电路元件,例如寄存器,计数器
    发表于 11-09 11:03

    【社区之星】彭仲维:扎实的基本功与时间的沉淀才是工程师成功的关键!

    入了电子行业。 社区小助手:作为一名从业多年的工程师,能否分享你的工作经历和一些比较成功工程项目或优秀作品?开发这个产品的整个过程,有什么记忆深刻的经历吗? 彭仲维老师: 一体式胎心项目,涉及到很多本人
    发表于 10-13 14:15

    嵌入式软件好还是硬件好?

    电路、功放电路、高速信号传输线的匹配电路等;故障定位、解决问题的能力;设计文档的组织编写技能! 那对于嵌入式软件工程师来说: 嵌入式软件工程师领域较新,他的发展也是很快的,像这类技术都是看经验的,经验
    发表于 09-18 15:31

    为什么嵌入式软件工程师需要掌握 Linux?

    ,都默认支持 Linux 操作系统。 可以说, 打开 Linux 这扇门,你才是合格的软件工程师 。如果不能
    的头像 发表于 07-21 18:15 1317次阅读
    为什么嵌入式<b class='flag-5'>软件工程师</b>需要掌握 Linux?

    热门推荐:硬件工程师必备工具

    硬件PCB产品顺利投产。 华秋DFM可制造性检查软件,在硬件开发流程中起到了非常关键的作用,对于广大硬件工程师来说具有很大的便利性和实用性。 华秋DFM软件下载地址(复制到电脑浏览器打开
    发表于 06-21 10:15

    电子工程师必看书籍推荐#知识分享 #知识科普 #交流#硬声创作季

    电子工程师
    也许吧
    发布于 :2023年05月24日 10:47:34