不要做被业务代码写废的程序员
作为程序员,我们在选择公司时甚至会不加思考的认为进大厂更有利于我们以后的发展。大厂不仅能给我们带来丰厚的薪资,更能让我们接触到一批技术大牛,有了技术大牛的指导与栽培,我们成为大牛似乎也是顺理成章的事情,此外,大厂的IP也会给我们再次就业加分添彩。大厂技术架构成熟而稳定,小厂技术杂而不精。大厂在经历了多年发展之后,技术体系不断完善成熟,为了提高工作效率,专门的人做专门事,也就是因为如此,大部分的程序员会被成熟的技术体系框在一个小圈子里,如果自身没有学习与钻研的精神,思想很容易会被这个圈子所束缚,从而沦为了业务程序员。
在日常的工作中,我们经常会听到”写业务快写废了“,”除了增删改查一无所知“等等的吐槽。沦为业务程序员不仅会让技术无法匹配自己的工作年限,还会影响到后期跳槽面试的表现。慢慢的将会被淘汰。为了定义清楚什么是业务程序员,我将技术分为三大类:外围技术、业务能力、工作经验
一. 外围技术
这里的外围技术指的是即便我们不会,不了解其原理,也不会影响到我们对需求的实现。例如服务器的维护、存储计算分布式系统的搭建与维护、各类中间件、网络安全知识等,我们并不需要懂,这不会影响到我们项目的开发与上线。
回忆一下我们项目开发的流程,创建一个web项目,申请线上机器(机器各种环境都已经配置好了,完全不用担心),设计数据库表提交工单(DBA负责创建,分配DB节点,数据备份冗余安全等问题不需要我们考虑),配置监控、日志功能,接入公司MQ、Redis,RPC,统一配置平台等。一切配置之后,就可以进行业务代码的编写,编码完成之后经由测试通过发布平台进行发布。服务成功启动,为了能让外部用户访问,然后配置下NG。
到此整个项目完成,除了编写业务代码,其他都是企业已有的成熟的技术体系,配置即用,作为程序员貌似完全没有必要去学习这些外围技术。此外,大厂都有一个通病,就是每一个公司几乎都有自己的一套完备的外围技术,换工作时很大一部分成本也是在学习这些技术如何使用。
二. 业务能力
项目环境搭建完成之后,就可以开始业务代码的编写。业务能力也相当的重要,但是与技术的关联性并不高,不再展开。针对业务逻辑不同层次的程序员实现也不同。一般的程序员就是对业务代码进行简单拼凑。优秀的开发者会使用一些设计模式的思想将业务代码进行抽象,使应用低耦合性、高稳定、可扩展。但不管设计好坏,两者都可以实现最终的业务需求功能。而领导主要关注结果,不会因为后者设计的有多好会对后者有所褒奖。技术水平一般却能与技术好的人得到一样甚至更好的待遇也是促使很多人沦为业务程序员的一大原因。
三. 工作经验
在编码过程中,我们会经常碰到一些并发、线程安全、事务、分布式、一致性等问题,虽然这些都是在写业务代码的时候碰到的,但是我更倾向于将这部分技术归为工作经验。因为这些技术只要在项目中接触到,就会去被动学会,属于必备技能,关键问题是在项目开发中有没有碰到过,碰到的越多,掌握的就越多,工作经验就越足,这也就是为什么程序员工作年限越长越值钱的原因。
总结
业务能力除了在公司内部工作时用来讨论,在面试(面试同业务方向除外)或者技术分享上几乎见不到他的影子。而在面试中最重要的便是工作经验,工作经验的考察主要体现在基本技能的考核和项目两点上,懂得外围技术的核心思想也是面试的加分项。所以作为程序员我们要认清楚自己的角色,不要将自己置身于从技术角度来讲最无关紧要的业务代码中。我们应该有自主学习的能力,对于所使用的的中间件等外围技术不能仅仅停留在会用的阶段,去了解了内部实现机制,真正的去认识它,不仅仅能让我们可以和业务程序员拉开差距、在面试再就业时有一个较大的优势,还有利于我们编写出更加健壮稳定的代码。
都说程序员是一碗青春饭,虽然有点夸张,但这并不是空穴来风,等我们慢慢老去,我们开始不能熬夜,不能加班,市场竞争力就会变低。突然有一天意识到自己还是一个程序员,想去搭建一个网站自主创业的时候才发现离开了公司的技术体系外,自己除了能写业务代码外,什么也做不了。所以趁着还年轻,保持积极主动的学习心态,不要让大厂完善的技术体系限制了自己的成长。