干货 | 软件工程师必知之事 —— 如何定义自己的职业路线?

有关软件工程师职业发展的文章并不少,甚至可以说是泛滥。很多人都能在这个话题上说两句,三五年工作经验的编程老鸟、架构师、技术VP、CTO,都有各自的看法与实践经验。没有哪一套方法是适用于所有人的,这一套软件工程师职业发展纲要,也不过是在你踽踽前行的路上,迷茫时可用来参考借鉴。你的核心竞争力,永远是你的自身实力。切记!

一、专业技能学习捷径

1 爱上你的编码神器

众所周知,软件工程师要做的工作就是写代码,准确地说,你的目标应该是写出满足业务需求并且无法找出 Bug 的代码,而不是写一大堆没用的文字。既然你的任务是写出高质量的代码,那么你首先应该训练的就是打字速度,你需要掌握键盘盲打技能,甚至还要爱上你的“编码神器”,并做到将此工具的用法烂熟于心,闭上眼睛都能正确敲中你想要的快捷键。

2熟悉底层技术原理

当你完全驾驭了计算机的输入设备以后,你需要进一步了解计算机的内部工作原理,不是让你把机器大卸八块,而是你需要全面了解计算机的组成结构与工作原理。如果你不是计算机科班出身也没关系,在网上买一本关于计算机组成原理的书自学。你无需做到精通,能全面了解即可,因为接下来你需要在编程的世界中,慢慢去体会计算机的工作感受,你就是计算机的管理者。

3深入一门编程语言

好了,现在是时候学习一门编程语言了,最好的选择是 Java,为什么呢?原因很简单,因为市场需求量最大,我敢保证,你学 Java 肯定比学 PHP 更容易找到工作(希望 PHP 程序员们淡定一些,其实我始终认为 PHP 是世界上最好的编程语言)。当你在学习 Java 时,首先需要掌握它复杂冗长的编程语法,此时没有什么比写一个“Hello World”来得更爽快一些。随后你需要深刻理解的是 Java 的面向对象概念(每次我说到面向对象,总会被吐槽,其实我想说,对象是可以 new 出来的),这些概念看上去比较虚,但是它们却能撑起一个强大的软件架构。所以,在面向对象技术上面花再多功夫都不为过,因为它能训练我们对业务的抽象能力,就像当初我们学习数学一样,它能训练我们的逻辑思维能力。

4选择一位对的老师

看书、看视频、看源码、看技术文档,其实这些都是较为低效的学习方法,掌握编程技能的捷径就是拜一位资深的程序员为师,你可以尊称他为“码神”,其实一个微笑外加一顿小龙虾,他就能被你征服。

一定要看他写的代码,思考为什么他会这样写,将你不理解的地方记录下来,并且在下班之前将问题都弄懂。所谓“师傅领进门,修行在个人”,你需要比你师傅更加努力,甚至十倍于他人的付出,才能在编程之路上尝到甜头。此时你需要学习更加高深的武功,研究更加优秀的源码,实践更有挑战的项目,还需要花整块时间,系统地看技术文档以及技术参考书。

5乐于分享你的技能

要让自己变成一位豁达开朗之人,千万不要吝啬,一定要懂得分享你所学的专业技能。可以尝试做点自己的开源项目,并让这个开源项目变得更加开放,不妨结合开源,写点技术博客,并厚着脸皮给你身边的朋友阅读。这件事情一定要持之以恒,不要担心有人吐槽你,你肯定会被吐槽,那是因为大家在关注你,此时你需要更加努力,让自己变得足够专业。当你成为真正的“大神”时,你将得到的是无限的膜拜和称赞。在学习专业技能之路上,多一点自信,多一点勤奋,多一点思考,再争取一点机会,你就会成功。

二、不可或缺的软技能

1软技能 ≠ 务虚

如果将专业技能比喻为“硬技能”,那么在我们的职场中,与专业性无关的技能就可以归纳为“软技能”了。

软件工程师每天都在和机器打交道,机器是没有感情的,你告诉它是0,它一定不会认为是1。但我们与人打交道却不一样。与人打交道,正是软件工程师们最为欠缺的方面,有些软件工程师甚至害怕与人交流,害怕在公开场合讲话,害怕抛头露面,害怕做一些组织性的工作。如果你也有以上这些心里负担,那么恭喜你!因为你即将从本文中找到克服这些困难的灵丹妙药,至少我希望是这样。

需要强调的是,软技能是一种职场必备的核心技能,我敢直言,如果缺乏这方面的技能,你的职业生涯将会变得非常糟糕。软技能包括的方面非常广泛,沟通、协调、组织、气场这些都是最基本的软技能,甚至情商也是一种软技能。那么我们不妨先从沟通这项软技能开始吧,因为我认为他是软件工程师最重要的软技能之一。

2

口语流利 ≠ 会沟通

很多人都容易将沟通理解为讲话,一个人口若悬河,夸夸其谈,其实并非他的沟通能力很强。我认为,沟通可以理解为两方面,即“沟”和“通”。“沟”指的是你将心中所想很清晰地表达出来给对方听,考验的是你的表达能力;“通”指的是让你确信对方是否真明白你所表达的意思,考验的是你的倾听能力。所以,我们很多时候都是在“沟”,往往忽略了“通”,从而形成了“沟而不通”的情况。

当领导交给你一项棘手的工作,但你不知道如何开始进行这项工作,此时你应该如何应对当前的挑战呢?绝大多数人会硬着头皮去做,他们希望通过自己的努力,可以顺利完成任务,但结果往往却无法让领导满意。少数人会主动向领导咨询,以寻求领导对自己的帮助。此时应该如何与领导对话呢?似乎并非很多人都清楚。下面这段话是我的套路,仅供参考。

我:勇哥(他是我的领导),最近我遇到了一点麻烦的事情,想听听您的看法(勾起领导的兴趣,让他认真听我说下去,记得一定要说“您”,而不是“你”)。

领导:哦?说来听听(证明领导此时不忙,他有时间让我占用,如果他此时很忙,你应该能感受出来的)。

我:感谢您对我的信任,昨天您交给我一项任务,回到家我一直都在想这项任务,我在想……(一定要对领导表示感激,是他给了我这次锻炼自己的机会,并强调我是“回到家”都在思考,而不是只在在公司里思考,道理你懂的)

领导:可能是我没说清楚,你把这项任务想复杂了,其实……(可见这是一位 nice 的领导,跟着他,你能学到很多东西)

我:我还想再清楚一下,您期待这项工作的结果是怎样的?(一定要明确领导想要的结果,他只会为结果买单)

领导:我希望……(领导娓娓道来,此处省略1万字,你千万不要打断领导的讲话,他讲累了自然就会停,你只需要认真听他怎么讲)

我:好的,我明白了,您希望我……(一定要学会复述领导讲过的话,而且要用自己的理解来表达,不要当复读机)

领导:没错,就是这样。(领导表示认可了,此时你应该表示给领导一个微笑,让他感到欣慰)

我:感谢勇哥!如果我在执行过程中遇到问题,可以再向您请教吗?(一定要感谢,而且要表现出虚心向领导请教,为下一次求救做好准备)

领导:当然,随时交流。(你真心拿他当领导,他才会无条件帮助你,你不懂得用好这位领导,那是你自己的损失)

沟通是不是很有趣?其实沟通是一门学问,我们花一辈子时间都在学习,都在改进自己的沟通方式,目的仅为愉快地和身边的人一起“玩耍”,让此生感到愉悦。

当你已经掌握了必备的专业技能,也具备了让你脱颖而出的软技能,那么接下来你将思考的是自己该走哪条路了,继续做软件工程师,还是做软件工程师的 leader?下面这段话将告诉你答案。

三、正确制定职业路线

1给自己提几个问题

当你正走在职场的十字路口徘徊,思考走技术,还是走管理?我的答案只有一个:根据你自己的优势来决定。合理利用好自己的优势,会让自己走的更加顺畅,让自己无怨无悔。

2转管理之前,先理解管理

当我们在纠结是否应该转管理时,不妨首先理解一下什么是管理?以及什么是管理者?只有当我们正确理解了这些概念以后,再来思考自己是否具备这样的特征,才能顺利帮助自己转型。

管理(management)是协调和监督他人的工作,从而使他人的工作可以有效率且有成效地完成。效率(efficiency)指的是以尽可能少的投入,以获得尽可能多的产出,效率常常被说成“正确地做事”,即不浪费资源。成效(effectiveness)常常被称为“做正确的事”,即做那些可以实现目标的工作活动。管理者(manager)就是完成所有管理工作,并使组织目标能够实现的人。管理者的工作包括计划(planning)、组织(organizing)、领导(leading)和控制(controlling)四种职能。

以上都是管理学告诉我们的知识,如果你想成为一名管理者,那么你必须首先正确理解这些概念的真实含义,才能完全驾驭管理者的岗位。

如果你想成为一名优秀的管理者,那么你需要做些什么呢?

  • 亲自且专业地给团队激励
  • 激励团队完成你无法独立完成的任务
  • 对问题提供指导和指引
  • 对团队的表现给予反馈
  • 帮助团队改善绩效
  • 使团队对组织的改变知情
  • 改善团队小伙伴们的生活

如果团队和你共事过,那么团队应该觉得他们是幸运的,因为你能够让他们更加愉快和高效地工作。

写在最后

不论选择技术还是管理,在任何时候都不要放弃你的硬技能,因为它是你的“生存之本”,同时你也需要具备强大的软技能,因为它是你的“发展之源”。

学习硬技能其实是有捷径的,你无需一味地学习这些知识点,更多的其实是与人交流以及加以应用。软技能其实是可以训练的,你只需抓住一切可以抓住的机会,有意识地加以训练和反思,你就能悟出很多宝贵的经验。软件开发是一门艺术,你需要能够静得下心,不断地优化和雕琢你的作品,因此你需要具备工匠精神。如果你想成为一名工匠领袖,那么你就应该比他人思考得更多、更高、更深、更全面,你需要更多的软技能。你只有认识到自己的优势,才能正确地选择自己的职业路线。

以上内容来自特赞科技  CTO 黄勇老师的博客,黄勇老师将作为讲师参加MPD工作坊(上海站),他将为我们讲述《技术管理者需要知道的事儿》。

MPD是Make Professional Discovery的缩写,MPD工作坊是一个围绕岗位角色发展的实践课堂,是由全球软件、互联网企业教练、一线研发团队带头人联合开发的角色胜任能力模型,是一种持续实践、创新驱动的团队管理提升培养项目。

除黄勇外,其余20位技术老兵,将从产品运营、团队管理、架构技术、自动化运维等领域进行深度分享,并带领学员进行现场实操,帮助研发团队突破研发壁垒,寻找解决方案。现场除了深度学习外,MPD工作坊届时也会有抽奖活动!奖品很丰盛,不信你看:

一等奖:价值4200元的A2M门票

二等奖:价值1399元的TicWatch S

三等奖:价值299元的小米 AI 音箱

看到奖品的你是不是已经迫不及待了?点击官网即可登录官网报名,享受更优价格的同时还可参与大抽奖活动。

原文地址:https://www.cnblogs.com/msup/p/9051581.html

时间: 2024-10-23 06:35:24

干货 | 软件工程师必知之事 —— 如何定义自己的职业路线?的相关文章

[ 学习路线 ] 2015 前端(JS)工程师必知必会 (2)

http://segmentfault.com/a/1190000002678515?utm_source=Weibo&utm_medium=shareLink&utm_campaign=socialShare 上次我写<前端工程师必知必会>已经是三年前了,那是我写过最火的文章了.三年了,我仍然会在Twitter上收到关于这篇文章的消息. 从2012年到现在,一篇文章都没发过让我觉得有点羞羞哒.三年是一段很长的时间,很多东西都发生了改变.2012年,我鼓励同学们去学习浏览器开发

嵌入式工程师必知必会 —— 读书笔记1、需掌握的知识

<嵌入式工程师必知必会>,Lewin A.R.W.Edwards 著:张乐锋等译. 很多人推荐这本书,最近也一直在看,把觉得有用的东西记录下,以后自己可以看看,也希望能给想学习嵌入式的朋友带来一点帮助. 一.嵌入式工程师应该掌握的知识 这里给出了一些理论知识与实践技能,我个人认为这些理论知识与实践技能是嵌入式工程师必须掌握的. 1.至少要对印制电路板中电源的走线有基本理解,了解糟糕的布局布线对对电源质量造成什么样的严重后果. 2.同样,你还应该对印制电路板的布线如何影响信号传播有基本理解. 3

2015 前端[JS]工程师必知必会

2015 前端[JS]工程师必知必会 本文摘自:http://zhuanlan.zhihu.com/FrontendMagazine/20002850 ,因为好东东西暂时没看懂,所以暂时保留下来,供以后参考! MrSunny · 12 天前 上次我写<前端工程师必知必会>已经是三年前了,那是我写过最火的文章了.三年了,我仍然会在Twitter上收到关于这篇文章的消息. 从2012年到现在,一篇文章都没发过让我觉得有点羞羞哒.三年是一段很长的时间,很多东西都发生了改变.2012年,我鼓励同学们去

15分钟带你了解前端工程师必知的javascript设计模式(附详细思维导图和源码)

15分钟带你了解前端工程师必知的javascript设计模式(附详细思维导图和源码) 前言 设计模式是一个程序员进阶高级的必备技巧,也是评判一个工程师工作经验和能力的试金石.设计模式是程序员多年工作经验的凝练和总结,能更大限度的优化代码以及对已有代码的合理重构.作为一名合格的前端工程师,学习设计模式是对自己工作经验的另一种方式的总结和反思,也是开发高质量,高可维护性,可扩展性代码的重要手段. 我们所熟知的金典的几大框架,比如jquery, react, vue内部也大量应用了设计模式, 比如观察

软件测试工程师必知:如何做好接口测试

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Georgia; color: #323333 } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Georgia; color: #323333; min-height: 19.0px } li.li1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Georgia; color: #

软件工程师的属性与发展

工作近十年了,[软件工程师] 一直是我职业 title 的中心词,只是前面的修饰语在不断变化,从初级.中级.高级到资深. 其实 [软件工程师] 是一个很泛化的定义,工作现实中软件工程师是被具体分工的,形成了具体定义的工程师. 定义 软件工程师是下面这些具体工程师的总体概括: 开发工程师 测试工程师 UI工程师(又称设计师) 产品工程师(虽然现在多称产品经理,但实际的工作内容更偏向工程师性质) 运维工程师 也许还有些其他分工的具体工程师定义,这里就不一一列举了. 我只是偶然发现所有这些具体分工的工

每个软件工程师都应该尝试的5件事

回顾我的职业生涯(其实我还没那么老,不过入行确实不少年了),确实有几次人生拐点帮我更具职场智慧,并鞭策我成为软件工程师或程序员,成为那种要么热衷于提高自己的技艺,要么对混入管理层有兴趣,要么只是简单的期望扩大自己的知识面的人.我意识到,鉴于每个人目前的工作情况,有些建议可能并不适合于每一个人,尤其是假如你工作在一家对“谁可以和客户谈话”这种事都作出严格定义的公司的话.所以如果你现在做不到全部这些,也不必烦恼.也要注意,有时,你需要的只是开口去问! 贡献到一个可行的开源项目 除非你与世隔绝,否则一

图解 &amp; 深入浅出JavaWeb:事务必会必知

图解 & 深入浅出JavaWeb:事务必会必知 转载自http://www.bysocket.com/ 事务,大家所熟悉的事务(Transaction),基本上会就往Spring事务靠.其实Spring事务管理基于底层数据库本身的事务处理机制.数据库事务的基础,是掌握Spring事务管理的基础.这篇总结下数据库事务. 一.数据库事务 它的思想:we are 伐木累.就是多个SQL语句(一个团队),要么所有执行success,不然就fail. 它最终的目标:数据不会被破坏.即事务操作成功,数据的结

作为软件工程师,你必须知道的20个常识

1.针对面向对象的设计与分析:为了让软件有更好的可维护性,重用性以及快速开发, 简短的 OOAD 与它的 SOLID 原则对于每一个软件工程师来说都是该牢记的. 2.软件品质因素:软件工程的好坏与软件的品质因素是绝对关联的.请在开发过程中深刻的理解这一点. 3.数据结构与算法:深刻理解像数组,列表,栈,树,图,集合等这样的基本数据结构 ,并在软件开发过程的关键部分使用好的算法.这样整个软件逻辑就会很清晰了. 4.Big-O符号来标记算法复杂度:在开发过程中,请务必使用 Big-O 符号来比较两个