加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 移动互联 > 正文

揭秘程序员在「外包」、「技术导向型」和「业务驱动型」公司的日常生活

发布时间:2019-07-02 19:34:35 所属栏目:移动互联 来源:无精疯
导读:一、写作背景 二、各类型公司的环境氛围 三、各类型公司的开发流程规范 四、如何提高在公司的核心竞争力 五、一些中肯建议 一、写作背景 本人在大学期间有过三段实习,大二在一家外包公司,大三去了技术型公司,现在待在一个业务驱动型公司。认识我比较久
副标题[/!--empirenews.page--]

揭秘程序员在「外包」、「技术导向型」和「业务驱动型」公司的日常生活

 一、写作背景

二、各类型公司的环境氛围

三、各类型公司的开发流程规范

四、如何提高在公司的核心竞争力

五、一些中肯建议

一、写作背景

本人在大学期间有过三段实习,大二在一家外包公司,大三去了技术型公司,现在待在一个业务驱动型公司。认识我比较久的读者应该知道,我经历了一次优秀实习生,两次提前转正,最近这份工作原本半年的试用实习期,只实习了一个月就提前转正。

写这篇文章有三个目的:

1. 纯粹地分享这三家的工作经历。

2. 分享的同时,给在校生和未在这些公司中从事工作的同学一些参考。毕竟在自己没有真正经历过之前,都只是别人口中所说,也是所谓的「围城」。

3.由于本人有阶段性复盘的习惯,对这三段工作的表现自认为还可以,这边也会针对不同类型的公司分享一些提高核心竞争力的经验。

二、各类型公司的环境氛围

①外包

我们当时团队有10个人,入驻到一家国企里面进行开发,分配给我们的只有一个小房间,而且这个房间之前还是仓库,在公司的最角落。

房间里面的氛围「很符合」开发气氛,只有到饭点了有人喊吃饭了才有声音,其他时候一片寂静。

这家国企有自己的食堂,他们的员工都是包餐的,人手一张卡。但是这家企业给到我们团队的只有一张卡,也就是我们团队共用一张卡,所以到食堂之后我们得排在一起轮流刷。吃完饭之后,团队的每个人需要给CTO转12元作为中午的饭钱,CTO收完之后统一转给该企业财务,也就是我们不包餐。

轮流刷卡,不包餐这些都还好,毕竟外包团队嘛,也能理解。但是食堂有时在节假日特意煮了汤或者其他什么的,一看到我们团队来了,就直接说我们没有。有一次中秋节,人事部在食堂门口发礼盒,团队的老员工要去领,人事部的人由于对我们比较陌生,于是问了一下基本信息,一听到我们是技术部的,赶紧挥了挥手说没有。

虽然这家外包996,一个月只发我800工资,而且还用支付宝转账,但我还是挺感激给予我这样的机会让我学习,没有「归属感」和「认同感」也告诉我仅仅只能实习,这两种感觉相信在外包的朋友都深有体会。

②技术导向型

这家公司是真正意义上的技术型公司,公司产品的核心竞争力就是技术,解决市场上其他竞品解决不了的。

该公司的创始人及管理层全都是技术人员出身,企业内部还设了一个大学,上面有必修课和选修课,上完课之后要参加考试,考试成绩作为年终绩效指标之一。上到HR,下到底层研发人员都得接受大数据知识的洗礼,随口就是各种Hadoop、Spark。除此之外,公司还会经常外界技术人士来公司分享,企业内部也会经常性做分享。

这种技术氛围也是每个技术人所向往的,遇到什么难题,内部员工头脑风暴一下就能解决。

这种企业里的技术人员是具备核心地位的,核心部门也必须是开发部,并且针对不同的技术,内部分工会分的比较细,具体到哪个模块,哪个功能。

③业务驱动型

在这种公司,开发部门正常都不是核心部门,但同时又是不可缺少的。拿我现在的电商公司来说,数据部门主要是为了给运营部提供一些数据让他们更好地去定价,定制活动等。

公司的核心竞争力应该是产品,其次是模式,而模式包含着运营、销售等。技术只是作为辅助这种模式建立的一份子,搭建一个平台,或者出一些指标数据,都是为了更好服务业务。

市面上大部分互联网公司都是业务驱动型公司,这类公司会把部分边缘业务外包出去,重点做核心业务,对于核心业务的技术又没像技术型公司一样苛刻,谋求最佳性价比。

三、各类型公司的开发流程规范

①外包

「不管是烂代码还是冗余代码,只要能实现功能的就是好代码」。大部分的外包公司或者说基本所有的外包公司都不会做code review,只要能把功能实现交给客户就行。

大二的时候,我们团队虽然驻扎在一家国企里面,但真正做该企业项目的只有我一个人,其他人都在做不同的项目。我那时既自豪又感概,自豪地跟同学说我自己一个人搞一个国企项目,感慨公司心真大,把一个国企项目交给我的一个实习生来做。

那时也不懂什么叫好代码,都是冲着功能实现去的,各种调包,copy & paster,if else while for常常写出「死亡三角」,没人批评我说代码写的丑,没人让我封装,都是夸我功能实现的快,就是bug多了点。

产品经理时不时地走到我身边,跟我说要加哪些功能,哪些不要,业务逻辑都是freestyle,现场画逻辑图。刚开始不懂,认真地听产品经理说,然后拿小本本记。后来我的leader跟我说:「别听产品经理的,有不懂的问我就行」,到后来国企的运营部也来找我提需求,真的是人人都是产品经理啊!

团队里没有专门的测试同事,都是上线那天一起加班,国企运营部的人帮忙测试,我们开发就在旁边实时解决测出来的问题,顺利的话当天发布,要是有遇到解决不了的bug就结束加班,明天继续。

这个项目经过我手之后写的是又大又烂,现在的我也看不下去那些代码了,这个项目在我走之后也下线了。

在这家公司,我从跟甲方博弈,到跟产品经理撕逼,再到前端后台数据库服务器,全搞了一遍。不得不说这也是一个难得的学习机会,但是我在下一家公司尝了这家公司带给我的苦。

②技术型公司

一年后来到了这家公司,这家公司是数仓行业的标杆,产品是To B的,客户都是各领域的KOL,又是中国第一个Apache顶级开源项目,无论是技术还是开发流程规范说领先的应该不过分。

先看看我们的开发流程和规范:

1.PRD/issue

如果是新功能,而且相对比较大的,需要产品经理画出原型图以及详细说明清楚;如果是bug或者比较小的功能,需要在github的issue上说清楚。口头说的永远无效,如果产品经理口头对我们说什么,我们都会要求他给文档、发邮件或者在issue上说明清楚,也是保留证据,防止互相甩锅。

2.本地Reproduce

本地重现bug。也就是出现bug的时候,我们开发要进行本地重现,只有重现出来才能从根本上解决问题。这一步是最难的,也是耗时最长的。如果连bug本地重现也重现不出来,后续工作基本难以进行。

3. 定位Root cause

对于Bug,我们要先找到引起的根本原因,这块最考验综合能力。mentor给我的箴言就是:「大胆假设,小心求证」。 把所有可能性列出来,然后一个个去证实。只有定位了Root cause,你才能开始去写代码。

4.Design review

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读