【Twinkle】软件工程师的职业路线

2023-10-27

   社区中并不缺少有关软件工程师职业发展的文章,甚至可以说是泛滥。很多人都能在这个话题上说两句,三五年工作经验的编程老鸟也好,架构师也好,技术 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、给自己提几个问题

  首先要澄清的是:我并非职业导师,更不是人生教父,所有的路都由你自己选择,我的责任是告诉你,我认为行之有效的方法。

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

  前段时间有位朋友在微信上私聊我,他也遇到了这个问题,继续做技术,还是转管理?我当时是这样问他的,但我希望你可以用这样的方式来问自己。

我:你工作多久了?

朋友:时间不长,写了10年的代码。

我:那相当资深啊,现在还对写代码有激情吗?

朋友:喜欢写,周末有时都会宅在家里写。

我:那你还在纠结什么呢?

朋友:我都工作10年了,身边的人要么当 CTO,要么做总监,自己却还在撸代码,我现在到底该不该转管理?

我:你为什么会考虑转管理?说说你在管理上的优势吧。

朋友:我觉得自己对技术有一定深度,可以帮助团队解决一些技术难题。

我:如果你团队中有位小伙伴遇到一个很棘手的技术问题,没辙了,你会做些什么?

朋友:撸起袖子,就地帮他解决掉。

我:建议你走技术专家路线,这条路也许更加适合你。

朋友:……

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

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

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

  以上都是管理学告诉我们的知识,如果你想成为一名管理者,那么你必须首先正确理解这些概念的真实含义,才能完全驾驭管理者的岗位,否则你会从管理岗位上摔下来,自己一定伤得不轻。

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

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

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

写在最后

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

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

  祝你成功!


看到的一篇关于软开成长的文章,写的很好!希望对自己说和大家有用!

原文:软件工程师必知之事 —— 如何定义自己的职业路线?  黄勇 发布于 03/12 11:23 - 开源中国

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Twinkle】软件工程师的职业路线 的相关文章

  • C# 爬虫遇到EventStream数据时该怎么获取值

    声明 本文只作学习研究 禁止用于非法用途 否则后果自负 如有侵权 请告知删除 谢谢 今天调用某个网站的接口时发现数据格式是这种的 第一次遇到 正常的应该是这样的才对 有个 响应 然后响应里面是一些返回过来的数据 而这个就很奇怪 没有 响应
  • 07模板学习之模板类的static数据成员的归属问题

    07模板学习之模板类的static数据成员的归属问题 1 模板类的static数据成员的归属问题分析 从上面的图分析 先看类模板中的static int a 若类模板中声明了static数据 那么该a是属于类模板还是属于具体类呢 假设属于类
  • 菜鸟入门Docker

    菜鸟入门Docker 说明 一 什么是Docker 1 虚拟机和Linux容器 二 Docker用途 三 Docker安装 1 设置仓库 2 安装 Docker Engine Community 3 验证安装成功 四 Docker启动与停止
  • Linux必杀(十八):VI、VIM编辑器

    题记 基本上VI共分为3种模式 分别是一般模式 命令行模式和编辑模式 一 一般模式 以Vi打开一个文件就直接进入一般模式了 在这个模式下 可以使用上下左右按键来移动光标 可以删除字符或删除整行 也可以复制 粘贴文件数据 二 编辑模式 在一般
  • Dubbo中的一些常见问题?

    关于dubbo是用的什么协议 在使用dubbo的时候会配置
  • ubuntu 防火墙基本设置

    查看防火墙状态 ufw status 打开防火墙 sudo ufw enable 重启防火墙 sudo ufw reload 开放指定端口 ufw allow 8080
  • 使用C语言打印不同星号图案(矩形 平行四边形 三角形)

    献给大一或大二的学弟学妹们和在自学 C语言的同志们 打印自定义行数的矩形 打印效果 参考代码 include
  • echarts 图表无数据为空时显示“暂无数据”

    如标题所述 我们希望 echarts 图表在没有数据时显示 暂无相关数据 字样 操作 需要对返回的数据做判断 如果有数据则正常显示图表 如果没有数据 我们将此 div 的内容改为文本 暂无相关数据 并设置样式即可 HTML div div
  • 从感知机到Transformer,一文概述深度学习简史

    关注公众号 发现CV技术之美 本文转自机器之心 作者 Jean de Dieu Nyandwi 机器之心编译 这篇文章从感知机开始 按照时间顺序回顾了深度学习的历史 1958 年 感知机的兴起 1958 年 弗兰克 罗森布拉特发明了感知机
  • Java中的异常

    Java中的异常 1 什么是异常 2 异常的类结构 3 运行时异常的特点 4 编译时异常特点 5 对受检异常进行处理 5 1 try catch 捕获处理 5 2 finally子句处理 5 3 finally子句 5 4 throws抛出
  • java案例之制作系统

    java案例之制作系统 案例 需求 定义一个方法 可以接收中奖号码的数组 用户选号的数组 根据命中红球数和篮球数判断最终的结果并输出 分析 系统需要三部份 第一部分是 生成随机产生的7位数双色球数字 其中前6位是红球 第7位是蓝球 红球范围
  • 使用MySQL Workbench建立数据库,建立新的表,向表中添加数据

    点击上图中的 加号 图标 新建一个连接 如上图 先输入数据库的账号密码 帐号默认为root 填好密码后 点击 OK 连接就建立好了 建立完成后 会出现一个长方形的框框 双击它 出现下图所示页面 点击图中的红圈里的按钮 新建一个Schema
  • 图的深度优先遍历(递归与非递归算法)和广度优先遍历

    老师的题目 实验内容 已知某地区的公路网以图表示 图中的顶点表示站点 任意两站点间的路段以带权的边构成的邻接矩阵表示 矩阵中非零元表示两个站点间存在直接的路段 否则没有路段 打开E Test文件夹中的exp06 cpp文件 补充编写所需代码
  • html做成小程序,微信小程序——简单静态网页的制作

    一 前言 需要知识 HTML CSS 注意 微信小程序的语法与HTML和CSS不太相同 但本质是一样的 要求 进入开发者工具并且创建一个测试小程序 选择建立快速模板 在pages目录底下新建一个first的文件夹 其中包括指定的四个文件 并
  • react 组件逻辑复用

    组件逻辑复用 React为什么设计成组件化的形式 其实最大的原因就是为了方便复用 然而组件的复用虽然方便 逻辑的复用却很麻烦 因为state的存在 逻辑被锁死在组件内部 很难分离出去 下面以一个可以改变背景色的步进器为例 展示react中常

随机推荐

  • 复制PDF文字时去掉换行符

    问题描述 当我们在pdf上复制文字时 每行总会出现换行符 乱糟糟的 解决方法 注意 windows推荐开源软件cpoy gihub copy 临时使用 推荐网页 文字替换在线处理工具 在快捷指令中新建 快捷服务 选择执行shell脚本 写这
  • 苹果开发者ADP协议第3.2(f)节违反

    相信很多开发者都遇到过 ADP协议第3 2 f 节违反 导致账号被封 遇到这种情况基本没戏 不用再联系苹果了 基本没戏 以下是被封的邮件信息 Hello xxx This letter serves as notice of termina
  • DSP CCS 12.00运用, 产生正弦波的图像 芯片:F28335

    1 首先建立新的项目 工程 2 参数选择 3 设置数据 保证与芯片得连接 4 整理思路 信号频率 1000 HZ 采样频率 20000 HZ 采样点数 128 5 代码 头文件的定义 include stdio h include math
  • vue-aplayer在手机移动端的时候默认没有总时长,点击播放才显示总时长问题

    前言 在移动段使用vue aplayer这款音频播放组件的时候 发现他默认的时候看不到总时长 只有点击播放才能看到 我的数据是从后台直接拿来的 观察官网没有这个问题 既然出现问题就得解决问题 这里分享下我的解决办法 解决办法一 尝试过但是不
  • C语言中 char str[] 与 char *str 的关系

    首先 我们得明确 在C语言中 没有真正的字符串类型 所以 就诞生了 字符串数组 这么个类型 于是 当我们想申明一个字符串变量时 大体上有下面两种方法 char str hello char p hello str 它定义的是一个字符串数组变
  • golang-- 字典树

    一 前言 看了百度团队在 infoq 上发表的一篇 如何在秒级完成词表匹配 https xie infoq cn article 97b2df7e41456335627ce4cd4 的文章 文章业务背景介绍的很清楚 里面有提到字典树 看到结
  • __attribute__((aligned(n)))和__attribute__((packed))

    绪 attribute 是GUN C中极具特设的一大机制 可以用来设置 函数属性 Function Attribute 变量属性 Variable Attribute 类型属性 Type Attribute 这里我们主要阐述用 attrib
  • Win10禁用驱动签名,进入测试模式

    以系统管理员权限打开CMD控制台 执行 bcdedit exe set TESTSIGNING ON 点击 开始 gt 设置 打开 windows设置 对话框 在搜索框中输入 更改高级启动选项 点击 高级启动 下面的 立即重新启动 按钮 然
  • python中class类的可迭代实现以及迭代函数

    当定义一个普通的类时 指向类的实例默认情况下是不可迭代的 如下 In 3 from collections import Iterable In 4 class Fruit object def init self self item li
  • 【C语言】typedef struct和直接struct的区别

    例一 struct char a int b x 这里 创建了一个变量 包含两个成员 一个字符 一个整数 例二 struct STUDENT char name int age 这里 创建了一个标签 tag 为成员列表提供了一个STUDEN
  • TSNE—聚类结果可视化

    文章目录 一 TSNE参数解析 二 案例 TSNE的定位是高维数据可视化 对于聚类来说 输入的特征维数是高维的 大于三维 一般难以直接以原特征对聚类结果进行展示 而TSNE提供了一种有效的数据降维模式 是一种非线性降维算法 让我们可以在2维
  • 机器学习之二分类模型评价指标

    机器学习之二分类模型评价指标 一 二分类模型衡量指标 1 1 混淆矩阵 Confusion matrix 1 1 1 原理 1 1 2 实现 1 2 精确度 Accuracy 1 2 1 原理 1 2 2 实现 1 3 准确率 Precis
  • c++中标识符常量表示方法

    什么是标识符常量 标识符常量又称符号常量 它是指用一个符号来代替一个数值 我们为什么要用它 对于一个在程序中常常出现的数值 我们可以定义一个符号来表示它 好处是修改方便 代码可读性高 例如 在程序中用到了常数 pi 如果每次都写 3 141
  • Java 发送http GET/POST请求

    摘要 HttpURLConnection是一种多用途 轻量极的HTTP客户端 使用它来进行HTTP操作可以适用于大多数的应用程序 HttpURLConnection是Java的标准类 它继承自URLConnection 可用于向指定网站发送
  • 获取逻辑回归LogisticRegression模型的重要特征

    获取逻辑回归LogisticRegression模型的重要特征 模型训练之后 想要得到比较重要的特征 可以通过python的sklearn包来实现 python实现代码如下所示 LogisticRegression py coding ut
  • XeLaTex 下运行 InkScape 帮助文档的 includesvg 命令出现 undefined control sequence 错误

    解决办法 添加下图的第 5 行 引入 pdftexcmds 包即可 2022年5月5日补充 使用 xelatex 来编译后 发现不能自动更新矢量图 才知道是什么原因 第8和第9行的 pdffilemoddate 不能用 具体为什么我也不知道
  • Jmeter系列-环境部署、详细介绍、安装目录介绍(1)

    环境部署 官网下载Jmeter http jmeter apache org 下载最新版本的 JMeter 解压文件到任意目录 安装JDK 配置Java环境 1 下载 注意选择操作系统对应的位数32 64 官网 http www oracl
  • Spring Boot入门系列(二十一)如何优雅的设计 Restful API 接口版本号,实现 API 版本控制!...

    前面介绍了Spring Boot 如何快速实现Restful api 接口 并以人员信息为例 设计了一套操作人员信息的接口 不清楚的可以看之前的文章 https www cnblogs com zhangweizhong category
  • 服务器主板能配固态硬盘吗,主板没有M.2接口能使用M.2固态硬盘吗【使用方法】...

    固态硬盘与主板接口都是必须想配对的 那么主板没有M 2接口可以使用M 2固态硬盘吗 主板都没有M 2接口是不可以安装M 2固态硬盘的 接口都没怎么装 这还用吗 主板没有M 2接口还可以使用M 2固态硬盘吗 其实对于一些入门主板或者一些较旧的
  • 【Twinkle】软件工程师的职业路线

    社区中并不缺少有关软件工程师职业发展的文章 甚至可以说是泛滥 很多人都能在这个话题上说两句 三五年工作经验的编程老鸟也好 架构师也好 技术 VP 也好 CTO 也好 都有各自的看法与实践经验 没有哪一套方法是适用于所有人的 这一套软件工程师