前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >软件工程师,如果你只会写代码,你就完了

软件工程师,如果你只会写代码,你就完了

作者头像
needrunning
发布2022-03-18 10:58:33
3240
发布2022-03-18 10:58:33
举报
文章被收录于专栏:图南科技图南科技

过完春节了,还有一场将近 10 厘米雪天和零下几度的天气,这是北京最近两周的天气。

或许是配合冬奥会的盛况。

这篇文章的思路主要来自《这就是软件工程师》以及最近的输入思考。

这是一本小书,看清楚啊不是小说,是小书。

你也许拿到这本书一个小时就翻完了,不过负责的说,真正理会书中的道理,需要几年甚至是十几年的行业经验。

那就开始听我分享解读几个关键点

我们软件工程师的终极「职业任务」,就是围绕需求做业务。

面对需求时,向上两个维度多问几个为什么,看看真正的需求和试图解决的问题是什么。

01 识别 X-Y 问题

书中专门说了 X-Y 问题。

有人想解决问题 X,他觉得 Y 可能是解决 X 的方法,但不知道 Y 该怎么做。于是他去问 Y 该怎么做。

Y 问题就是对真正的 X 问题的干扰,是一种噪声。真正的能识别这种噪声就是你的能力所在。

在软件工程师的认知里,在代码的世界里,1 就是 1,0 就是 0,非黑即白,没有灰色地带。

而实际世界里,充满了灰度,平衡,博弈等等。

在软件开发过程中,边界问题 ,比如极大值,极小值。必须定义的非常清楚。

而实际生活中,确实可以糊里糊涂,含糊不清的。

始终牢记,软件技术是解决实际问题的,要靠近商业的前沿,要「经济实惠接地气」

02 抽象能力是核心能力

在众多的实例,案例中归纳总结出通用的方法和规则,是抽象的核心思想

软件开发本身就是一个不断抽象的过程

有多年工作的工程师,经常会说 「这都是一个事」。因为他们抽象出了共性,经验和专业告诉他们,

只需要打通几个关键的核心路径,这事儿就能成。

设计分为原型设计和架构设计

软件设计分为原型设计和架构设计

前者对应产品经理,后者对应开发人员,再往上是 CTO。

对于软件工程师来说,一般都不会这么想。

更多的第一答案是需求概要和需求详细设计

而概要和需求设计是技术设计的两个大的步骤。

之前写过一篇抽象设计的文章 软件思维模型 1/100 抽象

产研一体

一套软件,一个解决方案从 0 到 1.产品经理负责原型设计,软件开发人员负责架设设计。架设设计层面包含技术实现。

那开发和产品经理坐在一起,那会聊什么呢?

如果他们单各自坐到一起又会聊什么呢?

我开玩笑的说,很多产品经理坐在办公室做需求,不了解市场。

很多开发者用直男思维做软件,写逻辑(比如某个时刻的我)

相互嫌弃和自以为是是真的。

对于软件来说,我们说产研不分家,也就是产品和研发是一体的。

一致的目标才有可观的产品。

03 成本在当下还是未来

软件开发是一门工程类学科,在大学里一般有软件工程专业。整体来说,软件的成本分为开发成本和维护成本。这里假设前期的需求调研也属于开发成本。

之前有这么一个观点,如果你给别人提供服务,比如说年费。

这时候虽然你拿到了钱,但是你是属于「负债」。你得用你之后的服务和时间还债。

有很多年度社群,他们的产品模式是这样的

提供服务清单,收取年度会费,之后客户入群。定期有课程,服务。

这种模式就是先收钱,后服务。最大的风险在于很难完整的交付,不了了之。

软件工程中的维护成本就是把成本放到了未来

而这个成本是很大,而且充满不确定性的。这也是软件越来越复杂的一个原因。

周末和朋友说,软件开发的任务很多时候不是一个量化的工作,开发之前的评估和实过程中的实际总会有差距

这个差距就带来了工作任务的增加和复杂度的增加,如果你想在规定的时间线内完成任务,那就要用多余的工作时间来换。

出入职场的新手和刚刚切好技能(比如变换开发语言),更多会遇到这种情况。

04 火车头模式

需求任务总是一个接着一个,为了需求能够按时完成上线。有很多软件开发中的项目管理理论模型,敏捷开发,瀑布模型等等。

书中提到一个软件项目管理的思路值得借鉴,叫做火车头模式。

在一个的开发迭代周期内,两周三周。时间一到,即刻上线。只是我们把需求像积木一样,一块一块的归类。

如果时间到了,需求还没完成,那么把完成的先上线。对于没有完成的任务,等待下个周期结束。

这样的做法就是相互影响的粒度更小,总体来说还是在控制项目的延期。

05 专业深度和职业精神

之前听一个主播老师讲,为了直播,自己准备了 5000 多字的逐字稿,下午码字,晚上直播。

而主播本身已经是将进十年经验的讲课老师。

按理说随机讲解和以往积累足以应付不到两个小时的直播,那为什么还要另花时间备课?

这个小事情也在提醒我,专业上靠谱,谦卑和追求精进。

开发过程中犯的错误很低级,回头想想都是没有遵守最基本的原则。

专业性就是你比别人更细致一些,多想一步。

06 持续学习,按需学习

最后想简单写一写软件工程师这个工作常规职业规划。

首先都是在经历,「入门,初级,高级,精进,拓展和觉醒」。

每 5 年是一个阶段点。

其次软件行业不是一个经验积累越老越香的行业,相反是年龄递增,加速度递减的行业。

越往后,拼的是软实力,行业理解,组织管理能力商业嗅觉等等。

对于行业外人来说,软件开发是一个大的行业。跟其它行业类似,软件行业有很多分支,大家熟悉的互联网行业就是软件行业的一个行业分支。

技术上的职位划分和分离,最近十年更是越发的清晰和完善。意味者竞争更加激烈。

随着近年来各行各业增速放缓,整个需求池有萎缩。

所以回到了题目,如果你只是会写代码,你会死的很惨。

两个建议

  • 持续的学习

开放的心态,看着外部的市场的需求,然后按需学习和优化。

  • 靠近市场前沿

多多关注软件价值,靠近市场前沿,看看具体能解决哪些问题

以上共勉。想起了《上月记》里的一段话

我深怕自己本非美玉,故而不敢加以刻苦琢磨, 却又半信自己是块美玉,故又不肯庸庸碌碌,与瓦砾为。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-02-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 图南科技 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 01 识别 X-Y 问题
  • 02 抽象能力是核心能力
    • 产研一体
    • 03 成本在当下还是未来
    • 04 火车头模式
    • 05 专业深度和职业精神
    • 06 持续学习,按需学习
    相关产品与服务
    云直播
    云直播(Cloud Streaming Services,CSS)为您提供极速、稳定、专业的云端直播处理服务,根据业务的不同直播场景需求,云直播提供了标准直播、快直播、云导播台三种服务,分别针对大规模实时观看、超低延时直播、便捷云端导播的场景,配合腾讯云视立方·直播 SDK,为您提供一站式的音视频直播解决方案。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档