软件工程之美
宝玉
Groupon资深工程师,微软最有价值专家
立即订阅
6700 人已学习
课程目录
已完结 54 讲
0/4登录后,你可以任选4讲全文学习。
课前必读 (3讲)
开篇词 | 你为什么应该学好软件工程?
免费
特别放送 | 从软件工程的角度解读任正非的新年公开信
学习攻略 | 怎样学好软件工程?
基础理论 (9讲)
01 | 到底应该怎样理解软件工程?
02 | 工程思维:把每件事都当作一个项目来推进
03 | 瀑布模型:像工厂流水线一样把软件开发分层化
04 | 瀑布模型之外,还有哪些开发模型?
05 | 敏捷开发到底是想解决什么问题?
06 | 大厂都在用哪些敏捷方法?(上)
07 | 大厂都在用哪些敏捷方法?(下)
08 | 怎样平衡软件质量与时间成本范围的关系?
“一问一答”第1期 | 30个软件开发常见问题解决策略
项目规划篇 (8讲)
09 | 为什么软件工程项目普遍不重视可行性分析?
10 | 如果你想技术转管理,先来试试管好一个项目
11 | 项目计划:代码未动,计划先行
12 | 流程和规范:红绿灯不是约束,而是用来提高效率
13 | 白天开会,加班写代码的节奏怎么破?
14 | 项目管理工具:一切管理问题,都应思考能否通过工具解决
15 | 风险管理:不能盲目乐观,凡事都应该有B计划
16 | 怎样才能写好项目文档?
需求分析篇 (5讲)
17 | 需求分析到底要分析什么?怎么分析?
18 | 原型设计:如何用最小的代价完成产品特性?
19 | 作为程序员,你应该有产品意识
20 | 如何应对让人头疼的需求变更问题?
“一问一答”第2期 | 30个软件开发常见问题解决策略
系统设计篇 (4讲)
21 | 架构设计:普通程序员也能实现复杂系统?
22 | 如何为项目做好技术选型?
23 | 架构师:不想当架构师的程序员不是好程序员
24 | 技术债务:是继续修修补补凑合着用,还是推翻重来?
开发编码篇 (7讲)
25 | 有哪些方法可以提高开发效率?
26 | 持续交付:如何做到随时发布新版本到生产环境?
27 | 软件工程师的核心竞争力是什么?(上)
28 | 软件工程师的核心竞争力是什么?(下)
29 | 自动化测试:如何把Bug杀死在摇篮里?
30 | 用好源代码管理工具,让你的协作更高效
“一问一答”第3期 | 18个软件开发常见问题解决策略
软件测试篇 (4讲)
31 | 软件测试要为产品质量负责吗?
32 | 软件测试:什么样的公司需要专职测试?
33 | 测试工具:为什么不应该通过QQ/微信/邮件报Bug?
34 | 账号密码泄漏成灾,应该怎样预防?
运行维护篇 (6讲)
35 | 版本发布:软件上线只是新的开始
36 | DevOps工程师到底要做什么事情?
37 | 遇到线上故障,你和高手的差距在哪里?
38 | 日志管理:如何借助工具快速发现和定位产品问题 ?
39 | 项目总结:做好项目复盘,把经验变成能力
“一问一答”第4期 | 14个软件开发常见问题解决策略
经典案例解析篇 (7讲)
40 | 最佳实践:小团队如何应用软件工程?
41 | 为什么程序员的业余项目大多都死了?
42 | 反面案例:盘点那些失败的软件项目
43 | 以VS Code为例,看大型开源项目是如何应用软件工程的?
44 | 微软、谷歌、阿里巴巴等大厂是怎样应用软件工程的?
45 | 从软件工程的角度看微服务、云计算、人工智能这些新技术
“一问一答”第5期(内含彩蛋) | 22个软件开发常见问题解决策略
结束语 (1讲)
结束语 | 万事皆项目,软件工程无处不在
软件工程之美
登录|注册

27 | 软件工程师的核心竞争力是什么?(上)

宝玉 2019-04-30
你好,我是宝玉。软件工程师,是软件项目重要的人员组成,从设计到编码实现以及上线后的运行维护,都需要软件工程师的参与。所以大家都很关心的一个问题是:软件工程师的核心竞争力是什么?

软件工程师的核心竞争力

其实我在微博上问过“软件工程师的核心竞争力是什么?”这个问题,得到很多答案:技术、代码、天赋和激情、经验、想象力……
我思考过这些答案,觉得很多答案挺好,但是不够突出核心竞争力,或者没有突出软件工程师的特点。
比如说技术和代码的能力,属于基础能力,而不属于核心竞争力;天赋和激情其实放哪个职业都可以这么说,何况天赋也不是决定性因素,聪明人不是好程序员的例子也很多;
经验是很重要,但是不能说明太多问题,有些号称有三年开发经验的程序员不过是把一年的经验重复了三次罢了;想象力是很重要,但我觉得更适合科学家或者艺术家,因为他们要通过想象力在未知的领域去探索,而工程师更多是利用已有的知识去打造产品,想象力算不上核心竞争力。
我觉得软件工程师的核心竞争力,不是单一能力的体现,而是几种能力和价值的合集。学习能力、解决问题能力和影响力构成了软件工程师的核心竞争力。

学习能力

对于软件工程师来说,最基本的要求是技术和代码。如果你看招聘网站上招聘软件工程师的要求,都需要能掌握一门或者多门编程语言,会熟练使用工具、框架。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《软件工程之美》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(16)

  • Felix
    经济基础决定上层建筑,我认为的核心竞争力是一个人的软素质(做事态度)和方法论(做事方法)
    软素质:
    1.自驱动意识
    2.沟通协调,刨根问底
    3.经常自省
    4.敢于担责
    5.ownership
    方法论:
    1.二八原则
    2.时间管理四象限
    3.SOP
    4.ARCI
    5.敏捷迭代

    作者回复: 谢谢分享🤝

    2019-04-30
    7
  • bearlu
    我个人觉得除了技术能力,还要培养其他方面的能力也是很重要,有时候思考如果我不做程序员,我还能做些什么?努力培养综合素质。

    作者回复: 是的,技术之外的能力也很重要,比如沟通能力、产品能力等,而且和技术还可以互补。

    2019-04-30
    4
  • hua168
    技术和思想一样重要,思想可以引导技术水平的提升,学习技术可以体会其中的思想。
    形而上者谓之道,形而下者谓之器。道在器中,以道御器。

    作者回复: 赞,谢谢分享!

    2019-04-30
    4
  • 谢禾急文
    在看到这篇文章标题的时候,我就在笔记本上列出了几条,我认为的核心竞争力:1、理解、抽象、解决问题的能力;2、学习的能力;3、沟通的能力;4、规划执行的能力。我非常认可老师讲得影响力是一个非常重要的能力,我没有考虑到这一点,也是因为我自己在这方面做得不够好。我一般很少主动的去分享技术、帮助别人,除非有人主动向我寻求帮组。所以,在以后的工作工程中,有必要和同事多分享交流自己的想法,主动的帮组他人,从而提升自己的影响力。

    作者回复: 👍赞!
    学习之前有思考,学习有总结,学习之后有行动!

    2019-06-16
    3
  • 庄小P
    一直有在思考自己的核心竞争力是什么?因为核心竞争力是你区别于其他人的一个法宝!现在是做算法研究的,不是leetcode那些哈,之前研究雷达在无人驾驶中的一些应用,然后网上没找到解决方案,论文也没几篇可以拿来参考!跟老师说这怎么做,老师说研究生就要学会探索未知东西!总感觉被忽悠了,不过确实,现在做的东西一大堆在网上都找不到答案,相比于自己本科的学习,感觉自己在研究生思考的机会多了(我也不想的,这谁顶得住😨😨)!
    前一个月开始在知乎上写一些分享,看到粉丝从几个变成100多个,还有读者来信,内心还是很开心的!!!

    作者回复: 加油,只要坚持多分享,肯定会越来越好!

    2019-04-30
    3
  • fei
    保持持续学习的能力,但是要注意学的东西要想办法用一用,把它编织在自己的知识图谱上。

    作者回复: 👍

    2019-07-03
    2
  • 纯洁的憎恶
    快速学习能力、解决问题能力、影响力,不只是软件工程师的核心竞争力,更是这个时代个体的核心竞争力。通过高效学习和实践,持续产出发现、分析、解决各种问题的能力,解决问题能力借助影响力网络的放大,距离成功也就不远了。

    作者回复: 👍是的,现在网络给了很多人放大影响力的机会。但学习能力和解决问题的能力还是属于很基础的,打好基础才能让影响力更持久!

    2019-05-09
    2
  • 纯洁的憎恶
    先单点突破,在横向拓展。

    我有个疑惑。我现在在央企从事采购和物资管理工作,技术不技术、管理不管理、行政不行政的,我不太确定单点突破的方向。

    作者回复: 这个问题我觉得首先是你个人的职业规划的问题,你是否有打算在技术方向深入发展,或者只打算泛泛拓展知识面,还是想管理或者其他方面发展。

    如果你是想技术方向发展,想在技术上单点突破,那么首先需要自己选定一个技术方向,web也好、iOS也好、安卓开发也好,每一种都有前途,但最好选择和对你未来职业发展有帮助的,这样才好坚持,才能尽早进入正循环。真不知道选啥,就先选流行的,好过在纠结中浪费了时间。

    技术的学习,在做中学是最好的,也是必不可少的。

    如果能在工作之内学习自然是最好的途径,但是大多数时候工作并不能给你创造这样的机会,那么你就需要考虑工作之外的学习途径了。

    尤其是公司不忙,可以考虑做一点side project,是很好的锻炼途径。比如对我来说,当年业余时间参与了一个Asp.Net的开源项目Community Server的本地化工作,对我技术成长帮助很大。还有我自己做过一个网站,也有不少用户,业余时间维护这个网站也给我很多技术上的成长。

    所以你可以考虑是不是有你选择的技术方向的项目可以在业余时间参与的,开源的或者自己做一个产品,都是不错的选择。

    2019-05-09
    2
  • 果然如此
    学习、解决、影响,总结的很精辟,可以套用到很多领域(我小学数学还可以,善用数学公式套用法,呵呵)
    我也用.net,java也用,Python写过对某新闻客户端自动点击换取积分小实验(修改的自动跳一跳源码)、白露引擎写过微信小游戏、js、Android、php、asp、c、汇编、……
    另外,程序逻辑思想能套用很多领域,

    作者回复: 确实,其实很多道理都是相通的,在一个领域适用也能应用于其他领域,所以我觉得程序员这个行业,只要是真能构建好知识结构,年龄大并不是障碍,反而是优势。

    2019-05-07
    2
  • nigel
    就学习能力而言,“祭海先河,尤务本原之学”,重要的是对基础知识的掌握。就像侯捷先生说的“基础的东西不易变,不易变的可重用”。

    作者回复: 👍赞,说的很有道理。

    像数据结构、算法、面向对象、设计模式、包括软件工程都属于软件开发的基础知识

    2019-05-02
    2
  • Charles
    讲的太好了,期待下篇。

    通篇边听边看下来,从似懂非懂到老师的系统化总结出竞争力金字塔,感觉自己对竞争力的理解和努力方向更明确了,感谢!

    顺带总结下自己:
    1. 学习能力,在自己熟悉的领域(后端),去学习一门新语言或框架之类的,感觉还好,也能适应过来,但是如果跨度比较大就会很吃力,比如区块链、人工智能、大数据之类,自己可能也清楚这个应该是基础不够扎实

    2. 解决问题的能力,自我感觉还好,可能相对项目规模较小,基本用一些“土”办法就解决掉了,和大厂可能没法比

    3. 影响力,主要停留在帮助人的层面,积累了一些口碑,像老师这样系统性的整理出知识去分享很欠缺

    另外一个我理解的还有一个竞争力,老师好像没提到,就是沟通、口头和文字表达能力,身边很多人相对比较闷,喜欢埋头做事 ,这个好像不利于整个项目或自身的发展



    作者回复: 谢谢分享
    竞争力也可以算是影响力,埋头做事结果就是影响力要低一些。

    2019-04-30
    2
  • 胡云阳
    老师好,请问一下您当时是怎么学习asp.net的 可以说一下学习路线和学习心得吗?

    作者回复: 这个说来话长,这里我简要说一下供参考。

    当时学习的时候,给我帮助最大的是AspNetForums(后改名Community Server)这个项目,我基于这个项目做了很多次二次开发工作,在二次开发的过程中,让我知道了一个设计良好的项目架构是什么样的,知道了如何应用Asp.Net的知识去构建一个复杂系统。

    这一步之后,我又尝试自己模仿AspNetForums的架构去设计系统,这一步其实走了不少弯路,因为为了去模仿某个设计模式而经常脱离业务需求去做设计,但还是让我学习了很多设计知识,也让我有了很多过度设计的教训。

    再后来设计开发系统,会更多结合业务需求,选择适合业务需求的架构,做刚刚好的设计。

    2019-11-01
    1
  • 小老鼠
    1、在美国的软件工程师与国内的软件工程师有什么区别,若有区别,区别在哪儿?2、如何对发现的性能问题进行分析与解决?

    作者回复: 1. 这个很难比较,毕竟我了解的样本还不够多,我个人的感觉上,技术上差别不大,做事情上,美国工程师职业素质要高一些,善于表达,敢于表达。

    2. 发现性能问题,找到原因是关键,比如说可以通过:
    - 逐步缩小代码范围,找出代码位置
    - 分析内存、分析请求日志,找出异常信息

    2019-09-23
    1
  • kirogiyi
    竞争力金字塔、金三角理论,指明了我们技术和管理方向上需要具备的能力和素养,使我们的眼光和格局也会得到很大的提升,有种高屋建瓴的感觉。

    很多做技术的人,工作到一定阶段的时候,会发现遇到不可逾越的瓶颈,除了重复的工作,技术和能力上没有多大的提升,做事的心思越来越散乱,埋怨公司没给平台没给成长空间,特别焦虑,考虑换行什么的。最近公司有一小伙子,不善言谈,技术人形象,初级软件工程师,觉得软件行业太苦了,要换工作做销售(钱多),我只能叹息一下,不作过多表示,因为墨菲定律会告诉我们一些不需要去改变的事实。

    宝玉老师讲述的发现问题、分析问题、解决问题、学习能力,不止存在于软件行业,其他行业同样适用。程序语言、技术框架等等都是有保质期的,一旦过了保质期就废掉了,得重来,“耗电”得很,这就是计算机技术学也学不完的原因。换句话讲,这是真正“码农”的思想,永远在技术的包围中转圈,无法突出重围。而发现问题、分析问题等能力,只要持续不间断的去改善,保质期就是无限的,还不怎么“耗电”。

    现在我有一种感觉,计算机技术也不是那么难,也不存在学得完学不完的问题,至少比以前轻松得多,不过多去专注于技术细节,而去专注于方法和理论、眼界和格局,以及提升自己的层次,逐渐发现很多东西都有它的捷径和本质。

    作者回复: 感谢总结分享!
    是的,多站在大局上看问题,多学习方法论,多思考,多实践,多总结

    2019-04-30
    1
  • 上善若水
    这篇关于软件工程师的核心竞争力的文章让我大有所获,工作也有十几年了,一直在学习,学习能力毋庸置疑,解决问题的能力也不错,但是总觉得自己缺少点什么,原来就是少了影响力,接下来就是需要学习这个作者的思路,如何提高自己的影响力,让好公司、好工作来找自己。

    作者回复: 加油,下一篇也会给一些如何提升影响力的建议。但最关键还是要意识到这个问题

    2019-04-30
    1
  • 纯洁的憎恶
    软件工程师的核心竞争力:学习能力,解决问题的能力,口碑信用和影响力。这三点在很多领域中也都具有共性。

    作者回复: 是的,往上走相通的就越来越多了

    2019-04-30
    1
收起评论
16
返回
顶部