有关软件工程师职业发展的文章并不少,甚至可以说是泛滥。很多人都能在这个话题上说两句,三五年工作经验的编程老鸟、架构师、技术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://my.oschina.net/u/870898/blog/1814195

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

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

    原文:https://my.oschina.net/huangyong/blog/1633257 社区中并不缺少有关软件工程师职业发展的文章,甚至可以说是泛滥.很多人都能在这个话题上说两句,三五年工作 ...

  2. 23中北大学计算机/软件考研必知

    23中北大学计算机/软件考研必知 一.学校简介.学院简介及师资力量.学科排名 中北大学(North University of China),位于山西省太原市,是山西省人民政府与工业和信息化部.国家国 ...

  3. Python开发工程师必知十大机器学习库

    Python是一种面向对象的解释型计算机程序设计语言,具有丰富和强大的库,再加上其简单.易学.速度快.开源免费.可移植性.可扩展性以及面向对象的特点,Python成为2017年最受欢迎的最受欢迎的编程 ...

  4. 电子工程师必知必会——矢网史密斯Smith Chart圆图测试阻抗

    史密斯圆图是由很多圆周交织在一起的一个图.正确的使用它,可以在不作任何计算的前提下得到一个表面上看非常复杂的系统的匹配阻抗,唯一需要作的就是沿着圆周线读取并跟踪数据. 本期视频贝贝就带大家学习矢网的史 ...

  5. 软件工程师必学的9件事

    本文是html5tricks原创翻译,转载请看清文末的转载要求,谢谢合作! 三年前,我还在巴塞罗那的神经科学实验室工作,忙着研究脑电波.教授心理学上的认知系统课程.而今天,我以设计和写软件为生. 你或 ...

  6. 软件工程师必须知道的20个常识

    作为一名优秀是软件开发工程师,以下的这些常识你知道吗?在实际工作中有没有总结过呢?小编就带大家一起分享这20个软件开发常识. 1.针对面向对象的设计与分析:为了让软件有更好的可维护性,重用性以及快速开 ...

  7. c语言goto语句用法_硬件工程师必知的10个C语言技巧

    硬件设计师最常见的工作内容是通过写代码来测试硬件.这10个C语言技巧(C语言仍然是常见的选择)可以帮助设计师避免因基础性错误而导致某些缺陷的产生并造成维护方面的困扰. 为了成功的推出一个产品,软件开发 ...

  8. 干货 | 播音主持必知的五十个知识

    我们都知道,任何一项学科或专业都是系统的.已成体系的,其中或深奥.或复杂,但它们都是有迹可循,有一定学习的规律的.播音主持专业也是这样,看似简单的"说话"专业,掌握起来却并不容易, ...

  9. 跟光磊学Java从小白到架构师-001软件开发必知必会计算机基础

    1. 计算机基本介绍 1.1 什么是计算机 计算机(Computer)俗称为电脑,计算机是一种高速计算的电子机器,计算机可以进行数值运算,逻辑判断,接收或者是存储信息数据(文本.图片.音频.视频),按 ...

最新文章

  1. 一文彻底搞懂快速幂(原理、实现、矩阵快速幂)
  2. Java反射机制在UI自动化测试中的一个应用
  3. 从Spring开始,Java EE 6必须具备哪些附加功能?
  4. JavaScript操作大全整理(思维导图七--字符串函数)
  5. python3如何安装selenium_Mac-Firefox浏览器+selenium+Python3环境安装
  6. TikZ学习笔记(三)图形的标记与交点
  7. 我正在参加年度博客之星评选,请大家访问活动页面,帮我投票打分
  8. 关键词组合工具_SEO学习:如何挖掘行业关键词?关键词挖掘策略和工具推荐
  9. C#网络编程技术教程pdf 文档分享
  10. 超靠谱,一文教会你如何注册申请安徽省实用新型专利
  11. Java如何使用IP代理
  12. vue怎么改logo_vue项目添加网页logo
  13. JPSE问题诊断指导四——hprof
  14. 网络爬虫中Json数据的解析[以时光网为例]
  15. Android 11 功能和 API 概览
  16. vue3基础 —— 子传父
  17. VMware之EXSI安装-yellowcong
  18. 基于Arduino IDE开发的LD3320语音识别模块
  19. java 导出excel打开报错_java导出excel文件报“失败-网络错误”
  20. Dimensionality Reduction

热门文章

  1. html5 粒子动画效果制作,8款惊艳的HTML5粒子动画特效
  2. 全文检索第一篇lucene的使用
  3. 商城系统建设:如何搭建自己的网上商城平台
  4. js数组查找最接近_js 2种方法从数组里面找到最接近某个数值的值(小于该指定值,并且大于其他值)...
  5. 做互联网多年,还不知道什么是软著?软著有什么用?
  6. linux 可变 大小 磁盘6,Linux下调整磁盘大小后的基于LVM的磁盘扩容
  7. 快速提升SEO关键词搜索排名的5大伎俩
  8. win10双显示器 鼠标移动总感觉到另一屏困难
  9. 第四届橙瓜网络文学奖评选仙侠排行,辰东《遮天》竟然不是排第一?
  10. VMware的几种网络类型