对于一名程序员来说,在大公司和小公司的工作体验差别还是挺大的,比如:

关于大小公司的划分,在此我们暂且把BAT这类公司理解为大公司,把大部分创业型的公司理解为小公司。大公司的标签多为规范可循的工作流程、充足的人才、稳定的福利待遇、清晰的发展规划等,而小公司的标签则是工作多且杂,一个萝卜好几个坑,福利待遇更灵活,发展机遇与挑战并存等等。

先来看一下大小公司的程序员自己的感受:

大公司的程序员A初入公司:

  • 每天的工作内容固定且狭窄,甚至不知道我做的东西最后被用在了哪里;
  • 我基本不太容易遇到那种很有意义的难题,因为这些难题在领导给我分配任务之前就已经有人搞定了;
  • 公司大牛太多了,遇到了难题,随时可以在项目组内求助,通常很快就可以得到解决。

小公司的程序员B初入公司:

  • 每天的工作内容好多啊,总有一种被别人拿着鞭子逼着快跑的感觉;
  • 没有几个人能帮到我,主要得靠我自己,这样虽然很辛苦,但是能感到我的技术进步很快,而且各个方面的技术我都接触过;
  • 回想半年前刚入职的时候我还什么都不懂,现在已经基本明白我们公司的项目是在做什么了,大概的架构也很清晰;
  • 加班加点是常事,谁让我很多东西还不熟练呢?

结论:对于新手来说,进入大公司更容易切入工作状态,因为在技术大牛众多的大公司,新人往往负责的是部分模块的部分内容,同时也会有更多机会接受技术大神的专业“洗礼”;进入小公司则需要快速成长为面面俱到的多面手,掌握各种技术点甚至架构层面的东西,几乎没有技术大牛可以依赖。

接下来,我们从几个具体方面分析一下大公司和小公司程序员的差别:

1.工作内容:小而精VS大而广

大公司的组织架构非常清晰,每一个职位都有明确的职责描述。甚至很多大公司的前端开发又细分了 CSS 和 JavaScript 两个部分。常常会有程序员说,在大公司,每个程序员更像是一颗螺丝钉,大部分时间都只是负责自己职位内的那一小部分工作,接触其他工作内容的机会很少。

相较于大公司,小公司通常没有完善的组织架构,对于程序员岗位的职责描述非常笼统。在小公司,往往更强调的是请更少的人,花更少的钱,实现更强大的效果。因此,多数时候一个程序员要兼顾多个角色,前端写后台,后台写前端也是常有的事情;甚至一个程序员包揽了整个业务模块的开发工作(没错,就是传说中的全栈开发)也是可能的,有时甚至还包括 UI/UX 设计;更悲催的是某些小公司的程序员还兼顾了修电脑、拉网线的活。所以说,在小公司奋斗的程序员,工作内容比大公司的程序员要宽泛的多。

2.工作量:加班皆常有,主要看进度

从工作量上来说,无论是大公司还是小公司,程序员的工作量都不小,二十四小时都在改bug的事情(没错,连做梦也在改bug)虽然不是常态,但总是会发生的。

大公司的程序员并不会因为工作职责更明确而工作量变少,BAT 的加班现象也很常见,具体还要看团队的交付能力以及项目进度。

3.流程/规范/工具:完备VS简单

大公司有非常完备的流程和规范,流程包括但不限于项目立项、产品设计、需求pk、技术方案评审、接口设计、DB 设计、开发、单元测试、集成测试、联调、构建、发布、回滚、监控等;规范包括但不限于PRD 规范、编码规范、接口规范、数据规范、安全规范、checklist 规范、bugfix 规范、日志规范等;工具包括但不限于交付平台、工作流平台、构建平台、mock系统、文档系统、代码版本系统、发布平台、监控平台……

小公司在这方面的内容普遍比较简单,基本上能有产品设计、开发、测试、上线就算不错了。对于文档规范、代码规范、设计流程、交付流程、上线流程、回滚流程等都没有做到自动化,缺乏对应的工具或平台,很多靠人工操作,比较容易出错。对于线上系统也缺乏监控手段,主要靠人工看日志debug等。在业务规模相对比较小的初创阶段,这样还能勉强应付过来,一旦业务规模扩大,改变架构升级流程是不可避免的。

所以对于程序员来说,在大公司有很多现成的东西可以“拿来主义”,让工作更加高效;而在小公司可能就需要花费额外的精力去解决这些问题。

4.发展空间:主要是平台差别

大公司的程序员,在自己专属的领域本来就有兜底的技术,再加上长期专注研究,技术深度会达到一定水平,成为团队中该领域的权威人物;同时,大公司的规范流程与团队协作等可以让程序员的整体素养得到提升;另外,在大公司接触大型项目的机会更多,随着程序员资历的不断提升,将有机会接触到大型项目整体的技术细节,这种能力提升的机会更是难能可贵。

小公司程序员,会接触到不同的技术领域,可能不会对某一个专属领域进行深挖,但是所掌握的技术非常之广,同时将锻炼到自己快速学习的能力,能够不受各种条条框框的限制而达到快速高效解决问题的目的,但常常会让习惯了大公司规范流程的人有一种“野路子”的感觉。

综上所述,对于新人求职,推荐大公司,因为大公司的工作环境、技术氛围等因素会让你养成更规范、更高效的工作习惯;当在大公司的工作可以游刃有余地完成时,如果想要跳槽,无论是大公司还是创业型小公司都是可选的,只要明确了自己内心想要什么,选择便不存在问题。

对于程序员来说,活到老,学到老永远都不是一句空话。无论此时身处大公司还是小公司,持续的学习,不断地汲取新知识都是非常重要的,这样不仅能够提升认知水平与决断能力,让自己不可替代,还可以积蓄改变现状的力量,提高每一次选择的成功率。