软件工程:真实项目的特点 / 我的位置 / 尽快融入

更多
2021年11月07日 20点29分 作者:叶飞 修改

说明:本章所指项目,不包含非企业级应用,以及尚处草创阶段的、或者由大佬组合开发的“超现实主义”项目。

和我在学校写的项目相比

规模更大

代码量:10万行代码的都是微型项目。

做个比喻:我的爸爸 -> 三体 (都是玩具)

团队成员:10个人以内的都是小微团队,可以有 50 / 200 / 1000 / 10000……人

《参考》: 阿里现在有多少开发人员?层级分布情况大概是什么样子的?行癫: 具体人数我也不知道,大概五六万人,中间层P7/P8最多。   

https://tech.ifeng.com/c/87vOSbakUuZ

为什么这么大的规模?因为业务逻辑复杂。这个世界从来不缺复杂度的,是不是?

时间更长

你的毕业设计项目用了多久?2个月,1个月,半个月,……还是直接淘宝?

真实的项目,10年20年的祖传屎山代码,一堆一堆的。

@想一想@:这会带来什么问题?

另外,我着重想强调的:deadline,真实项目一定是有时间要求的,某个功能什么时候上线,不能拖!

PS:虽然很多时候事与愿违。时间一到,硬着头皮都要上,上线就崩,验收演示会上崩是常事,这点都是和你的毕设答辩很相像……“按时交付(on time dilivery)”是软件工程/项目管理里面的老大难问题……

技术更杂

不要问“你们公司用的什么语言”这种没有逼格的问题,大型项目都会混合使用多种语言/技术。飞哥以前公司的代码:C + VB + Java + C# 齐活……

原因两个方面:

  • 历史原因:时间跨度长,以前老语言老技术写的代码总不能扔了吧?重写……呵呵,钱谁出,出事了谁背锅?
  • 项目规模:不同的技术适用不同的场景。最简单的例子,很多项目是微信小程序、网页、APP、工业平板、windows上都要能跑的,所以……
  • 其他:团队(很多技术选型是就是项目老大决定的)、风险分摊、节约成本……

另外,大多数项目都是用“搭积木”的方式实现的,即:各种第三方组件组合、配置、删改,将就着用。很少从0开始构建的,因为轮子太多了,自己再造一个不划算。(但是呢,轮子也不是那么好用的……)

是不是要求更高?

照理说,应该这样。但是……

要是要求真的高,哪来的“屎山代码”呢?

我们源栈的要求也很高呀,不管是上课还是作业点评,但你就不那样做,我有啥办法?

真实项目受限于规模、时间和复杂度……,质量其实非常堪忧。

为什么把这一点说出来(以前都吓唬大家)?让你不要抱怨!天下乌鸦一般黑,踏实做好自己的事就行了。


我,菜鸟的位置

你应该会被分到项目组(事业部/project/team),项目可以:

  • 纵向划分:一般按功能,比如:用户权限管理是一个项目组,文章发布是一个项目组,……
  • 横向划分:典型的前后端分离、分层架构(UI+BLL+DAC)……
  • 按技术划分:.NET/Java/Python/C++……
  • 其他:比如地域。为什么讲这个?比如在外企,需要跨时差协作,这会给项目管理带来挑战;还有慢慢开始流行的在家办公(Work From Home)

规范一点的,一个项目组会有2个老大:

  • 项目经理(Project Manage):负责需求衔接、项目的进度、交付等和技术无关的事
  • 技术负责人(Tech Leader):技术上搞不定的事你就问他。

如何尽快融入

问:怎样才能装得像个老鸟一样?

答:尽量像个菜鸟一样,给人“扮猪吃老虎”的错觉。

装,你是装不出来的,除非报星爷“演员的自我修养”培训班……

或者,条件允许的话,不要写代码。否则,行家一出手,就知有没有。

所以,尽快的恢复“真”我,然后多沟通:该问的问,不该问的也可以问。

注意:一定要有deadline的意识。

明天下班之前能不能完成?

我试试吧……

然后明天下班之前你没完成,你应该怎么做?你闷着,“我说的是我试一试呀,又没说我一定能完成……”

为什么要抛异常?

你为什么会被开掉?

一般不会,招人很不容易,开人是有成本的,大概率都是捏着鼻子认了

  • 人皆有恻隐之心,大家都这么过来的
  • 幻想(其实也是事实)你会慢慢成长起来。

除非:

  • 面试很草率:以为你是王者,结果是个青铜
  • 填坑的项目:工期紧任务重,大家都在加班,你是个累赘
  • 人菜还很拽:半壶水响叮当,那是工作一两年之后。这个阶段,最大的问题是:不明白“响鼓不用重锤”,听不懂弦外之音……(举例:五一请假

但无论如何:宁愿等着被开,也不要主动辞职!扛过去就好。

  • 有一些压力,是你幻想出来的压力。甩你一份文档,看不懂,看不懂很正常;问了一个很傻逼的问题,没人觉得你傻逼(老鸟才能不耻下问)……
  • 多干一天活多长一天的经验多拿一天的工资:化压力为动力嘛
总结:你唯一能把控的,就是你的“态度”。

究竟要怎样才算态度好?

我态度已经很好了呀……

这句话有两种理解:

一种如前文所说,你根本就没有理解到所谓的人情世故。脑回路的问题。像陈佩斯小品里一样,用别人的牙刷,还说:“我又不嫌你脏”。结果就“愤青”,因为觉得自己老是被针对?一个建议:不要太自我中心,试着理解别人。你就不要推己及人啦……

另一种好一些,已经发现了自己的问题,但苦恼于没有解决办法:

我真的已经很卑微了,但还是像个透明人一样,大家都不喜欢我…… 我知道我给大家添麻烦了,大家都很照顾我,我也很想表达我的谢意,但我真的不知道怎么去表达

我完全能够理解,你想请你们老大同事吃个饭,你有这个意识。但接着就有个问题:怎么请,才不会让大家尴尬?于是你思前想后每天都焦虑……直到最后离职,你都没有请成这顿饭。

问题在哪里?这里面确实需要技巧,但是关键的关键:你要去练习。练习,就不要怕尴尬。就像学走路一样,你总是会摔跤的。没有什么“社死”,社死的人其实最后都活得好好的,你太过于敏感了。

社交,其实也是一种技能;技能,就一定是通过练习获得的。有天赋有性格的因素,但普通人完全可以训练到及格线以上的。技术人,及格就够了……

现实主义做不大,理想主义走不远(动)

可以替换一下:技术 = 现实主义;非技术 = 理想主义。

95%的场景,走向高位,最终靠的不是技术。

大佬的共同特征是什么?能吹。

复习:软件工程,本质是什么?管理,管理最精华的是什么?是管人。
真实项目 软件工程
赞: 0 踩: 0

打赏
已收到打赏的 帮帮币

你的 打赏 非常重要!
为了保证文章的质量,每一篇文章的发布,都已经消耗了作者 1 枚 帮帮币
没有“帮帮币”,作者无法发布新的文章。

全系列阅读
评论 / 0

编程基础


项目管理相关

需求发布、开发规划、部署、测试,源代码版本管理(git)等……

逸闻史话

认识计算机

编程语言

数据结构和算法

Web开发基础

全部
关键字



帮助

反馈