程序员的自我修养——远离“外包思维”

*************************************优雅的分割线 **********************************

分享一波:程序员赚外快-必看的巅峰干货

在我们做开发的日子里,不免会进行跳槽,跳来跳去公司无非就分成两大类——互联网公司、外包公司。当然我们本次讨论的并不是外包公司,而是一些外包公司所培养出来的“外包思维”。
什么是 “外包思维”呢?简单来说,就是由多年外包经历所影响,逐渐总结出来的一些工作经验。事实上并不是所有的工作经验都对大家有帮助,有些工作经验反而只会坑到你。那么下面我们来看看有哪些常见的“外包思维”吧。

技术是为业务服务的

单看这句话其实说的并没有毛病,但是不少程序员却对这句话进行了曲解。
每个技术的出现都有它的适用场景,比如MongoDB是为了解决高负载的读写,solr和ES是为了解决全文检索,ELK整个技术栈的出现是为了解决日志收集,消息队列则是解耦、解决高并发,redis则是解决缓存、分布式下的共享。。。等等等等。应对不同的业务场景,采用最合适的技术去进行解决,这才是“技术是为业务服务的”这句话本来的意思。
而现在的一些程序员,尤其是常年在外包公司工作的开发者,则对这句话产生了不同的理解。往往他们认为 ,业务是占主导,只要实现了功能,用什么技术都无所谓。你可以在拦截器中每次都查表校验用户token是否准确,你也可以每次加载省市区县数据的时候都从数据库里查出这3000多条数据,你还可以将大量的日志都存到数据库中,在应对全站搜索时,你也可以用一个 where title like '%哈哈哈%' or content like '%哈哈哈%' 这样简单粗暴的方式扫描一张几十万数据的表。功能实现就行。往往带有这种思维的程序员,更容易面临30危机而考虑转行,因为技术更新换代是非常快的,你永远也想不到当年火的一塌糊涂的 delphi 现在却变得无人问津。尽管现在很多框架的底层实现是Servlet,但是不可否认的是,已经没有什么项目是用纯Servlet+JDBC开发的了,如今这些排斥SpringBoot的程序员,会不会像当年那些排斥Ejb、Struts的程序员一样被淘汰呢。

稳定最重要

单看这句话其实说的也没什么毛病。技术用的天花乱坠,结果上线经常宕机,用户使用起来很卡,数据也存在问题,这是非常可怕的。开发一个系统,最重要的就是稳定,上线要平稳运行,要能应对突发的流量,数据要有灾备,出了问题可以快速恢复。因此,才需要用ELK从多维度分析日志,才需要用主从复制来进行灾备,才需要用MQ应对突发的流量,才需要用缓存来存储频繁访问的大量数据。这些技术栈的引入,就需要有专业的架构师来进行维护 、调配,以保证其的稳定。对于有恶性bug的框架(如Struts2),应当及时废弃,采用更加轻量、高效、学习成本低的技术进行替换,才能保证系统的稳定运行。
而现在不少外包程序员对这句话的理解,则不是系统的稳定,而是框架的“稳定”,简单来说,就是接到一个类似的系统之后,用现有的框架复制粘贴再稍作修改就可以交付,这样能够快速完成一个项目。长期使用一套框架,只要核心人员不变,就能快速上手。“新技术不稳定”这种说法也是因此而来,因为核心员工不会,又不愿意学,拿来做项目无法应对里面的一些小坑。比如从Struts2转到SpringMVC,如果不知道SpringMVC是单例的,直接把成员变量写到Controller里,出现线程安全问题之后大谈“SpringMVC不稳定”,谁能有办法。因此你会发现不少的外包技术都很老,甚至于是SSH、Struts1、EJB、JFinal,而前端则是extjs、easyui,以及各种估计70后才知道的UI框架。因为他们觉得,这样技术复杂度不会提高,即使他们使用的技术已经可以称之为“古墓派框架”了。毕竟很多电网项目满天飞的bug都无法修复,最终客户只能接受当做特性来看待,你跟我谈稳定?

进了公司都是CRUD

这个我是完全否定的。
外包公司的工作说白了是流水线工作,只需要实现功能,性能、稳定性、可维护性、扩展性、代码可读性等完全不顾,来了新项目就用现有的框架改改就写,确实做来做去都是CRUD,程序员技术得不到提升,这也是大部分互联网公司不喜欢招外包经验开发者的原因之一。
而互联网公司则不同。初中高级开发者涉及的领域就有所区别。高级工程师虽然有时候也会写crud,但是更多的时候是参与到架构搭建、技术选型、框架和中间件的研发、高并发问题解决等工作,而在外包公司,初中高级工程师的区别仅仅是薪资的区别,搞来搞去都是CRUD。

框架源码没必要读,上班用不到

就拿Mybatis来说,不看一遍Mybatis源码,拿头写Mybatis插件。

传参和返回值都用Map

你最好把文档写清楚了,详细到每一个方法的Map都有哪些参数,不然我怕你离职了被下一个接手的人追着砍。

存储过程、触发器好用

好用你妹啊,数据库迁移的时候拿命搞,其他开发者冷不丁就踩个坑,业务放到代码层面处理会死哦。

遇事不决Oracle

Oracle是一个高性能的大型商业数据库,这个是很多人对Oracle的第一想法。早期的大型项目,现在的一些金融项目基本都是Oracle数据库,这也奠定了大多数人对这个数据库的偏爱,但是就目前来说,Oracle的优势已经不行了。大厂逐渐的开始去IOE,早在2008年,阿里巴巴就提出了“去IOE”的想法,很多企业觉得痴人说梦,毕竟不存在哪个系统离得开Oracle。而现实却给了这些企业一个狠狠的大嘴巴子,去IOE很成功,事实上也证实了现在确实需要去IOE。
Oracle的流行,是因为这是个商业数据库,虽然使用免费,但是提供技术支持需要高昂的费用。早期Oracle在世界各地都有技术支持,一旦你的数据库出了问题,基本上你都可以在当地找到技术人员来支持,这样可以保证系统的相对稳定。而前两年发生的Oracle裁员事件,至少在国内基本没有多少Oracle的人了,而这个数据库也就失去了技术支持,它的低位变得比较尴尬——没有官方的技术支持;不开源。
就数据库来说,现在更加推荐的就是MySql,如果是大型数据库的话,可以考虑PostgreSql。都说Oracle性能比MySql好得多,但是比性能没规定必须比单机性能,一台MySql性能比不上Oracle,两台呢?三台呢?现在随便一个开发者,基本都会自己搭建MySQL集群,搞个主从复制、读写分离等,也就是说,使用MySql基本都是会集群的,即使现在没有集群,将来集群也没什么成本。而Oracle,我想大部分中小型企业都是没人会搭建集群的,这就意味着使用Oracle只能使用单机版。
至于现在的金融系统还在使用Oracle,那就是历史遗留问题了,毕竟这类项目,还有电网项目等,都是外包公司做的,这也就印证了上面外包公司认为的“稳定”。换了MySql可能会导致现有的框架不能复制粘贴改改就用,得重新写,这样“不稳定”。

结语

实际上,大家所听到的一些外包思维言论不止这些,这里只是举了一些常见的例子。找工作、水群的过程中远离外包思维很重要,长期被这种思维所影响,会使人变得倦怠,从而排斥新事物,最终会消亡在旧事物中,终将迎来30危机。
这里并不是排斥外包公司,只是想说,外包公司只是个起点,或者说只是个体验,不能作为终点。如果你不幸进了外包,可以在工作之余继续学习、养精蓄锐,下一波跳槽跳到更好的互联网企业脱胎换骨。

*************************************优雅的分割线 **********************************

分享一波:程序员赚外快-必看的巅峰干货

如果以上内容对你觉得有用,并想获取更多的赚钱方式和免费的技术教程

请关注微信公众号:HB荷包
程序员的自我修养——远离“外包思维”_第1张图片
一个能让你学习技术和赚钱方法的公众号,持续更新

你可能感兴趣的:(随手笔记,java,编程语言,大数据,人工智能,数据库)