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

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

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

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

技术是为业务服务的

单看这句话其实说的并没有毛病,但是不少程序员却对这句话进行了曲解。
每个技术的出现都有它的适用场景,比如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荷包
在这里插入图片描述
一个能让你学习技术和赚钱方法的公众号,持续更新

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/536990.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

英特尔为 Kubernetes 推出分布式深度学习平台:Nauta

2019独角兽企业重金招聘Python工程师标准>>> 随着人工智能的发展,深度学习的价值不断增长,但实现它可能是一个复杂耗时的过程。英特尔(Intel)正寻求通过其在 Kubernetes 进行分布式深度学习的新开源平台来改变这一状况,该深度学习…

pytorch梯度下降函数_Pytorch中常用的四种优化器SGD、Momentum、RMSProp、Adam

来源:AINLPer微信公众号编辑: ShuYini校稿: ShuYini时间: 2019-8-16 引言很多人在使用pytorch的时候都会遇到优化器选择的问题,今天就给大家介绍对比一下pytorch中常用的四种优化器。SGD、Momentum、RMSProp、Adam。随机梯度下降法(SGD&#…

python计算无穷级数求和常用公式_傅里叶变换(二) 从傅里叶级数到傅里叶变换...

在上一部分当中,得到了利用三角函数表示周期函数的方法,但是对于非周期函数就...凉了。所以有什么办法吗?没办法(划掉)。这时候我们就需要拿出来我们的黑科技——傅里叶变换。一、傅里叶级数的推广当然这东西肯定不是凭…

中鸣投篮机器人怎么组装_1000余人参加洛阳市青少年机器人竞赛

机器人智能识别地面上的黑色线条,并沿着线条来到指定位置,放下“快递包裹”;无人机在空中飞舞,时而钻过圆环,时而来个空翻,犹如跳芭蕾般在空中划过一道优美曲线;橘红色乒乓球从筒道中送出&#…

Exchange队列优先级介绍和配置

一、场景 在日常办公环境中所有邮件都会存在重要与非重要的情况,并且不同的邮箱的使用人的级别也不一样,不一样的职位级别要求不一样的运维等级,以及发送邮件要求的速度也不一样。这就导致了邮件需要按照重要性进行分类,重要的邮件…

Mybatis源码阅读(一):Mybatis初始化1.3 —— 解析sql片段和sql节点

*************************************优雅的分割线 ********************************** 分享一波:程序员赚外快-必看的巅峰干货 如果以上内容对你觉得有用,并想获取更多的赚钱方式和免费的技术教程 请关注微信公众号:HB荷包 一个能让你学习技术和赚钱方法的公众号,持续更…

添加请求头 retrofit_RxJava 与 Retrofit 结合的最佳实践

前言RxJava和Retrofit也火了一段时间了,不过最近一直在学习ReactNative和Node相关的姿势,一直没有时间研究这些新东西,最近有个项目准备写,打算先用Android写一个Demo出来,却发现Android的世界发生了天翻地覆的变化&am…

Mybatis源码阅读(二):动态节点解析2.1 —— SqlSource和SqlNode

*************************************优雅的分割线 ********************************** 分享一波:程序员赚外快-必看的巅峰干货 如果以上内容对你觉得有用,并想获取更多的赚钱方式和免费的技术教程 请关注微信公众号:HB荷包 一个能让你学习技术和赚钱方法的公众号,持续更…

k8s边缘节点_边缘计算,如何啃下集群管理这块硬骨头?

导读边缘计算平台,旨在将边缘端靠近数据源的计算单元纳入到中心云,实现集中管理,将云服务部署其上,及时响应终端请求。然而,成千上万的边缘节点散布于各地,例如银行网点、车载节点等,节点数量甚…

Mybatis源码阅读(二):动态节点解析2.2 —— SqlSourceBuilder与三种SqlSource

*************************************优雅的分割线 ********************************** 分享一波:程序员赚外快-必看的巅峰干货 如果以上内容对你觉得有用,并想获取更多的赚钱方式和免费的技术教程 请关注微信公众号:HB荷包 一个能让你学习技术和赚钱方法的公众号,持续更…

搞懂toString()与valueOf()的区别

一、toString() 作用:toString()方法返回一个表示改对象的字符串,如果是对象会返回,toString() 返回 “[object type]”,其中type是对象类型。 二、valueOf( ) 作用:valueOf房啊发返…

oracle入库的速度能到多少_倒车入库别练复杂了,其实就这两点

教练总会让学员反复练倒车入库,但不少学员都会有这样的疑惑:为什么每一次倒库结果都不一样,倒车入库的练习重点是什么?倒车入库是科二的重点及难点,但只要掌握以下两个关键,顺利通过真不难:01方…

Mybatis源码阅读(三):结果集映射3.1 —— ResultSetBuilder与简单映射

*************************************优雅的分割线 ********************************** 分享一波:程序员赚外快-必看的巅峰干货 如果以上内容对你觉得有用,并想获取更多的赚钱方式和免费的技术教程 请关注微信公众号:HB荷包 一个能让你学习技术和赚钱方法的公众号,持续更…

kdj买卖指标公式源码_通达信指标公式源码MACD背离KDJ背离指标

N1:5;N2:10;N3:21;N4:60;牛熊:EMA(CLOSE,N4),COLORGREEN,LINETHICK3;DIFF:EMA(CLOSE,12) - EMA(CLOSE,26);DEA:EMA(DIFF,8);A1:BARSLAST(REF(CROSS(DIFF,DEA),1)); B1:REF(C,A11)>C AND REF(DIFF,A11)DRAWTEXT(IF(B1>0,1,0),L-0.1,MACD底背),COLORGREEN;RSV:(CLOSE-LLV(L…

Mybatis源码阅读(三):结果集映射3.2 —— 嵌套映射

*************************************优雅的分割线 ********************************** 分享一波:程序员赚外快-必看的巅峰干货 如果以上内容对你觉得有用,并想获取更多的赚钱方式和免费的技术教程 请关注微信公众号:HB荷包 一个能让你学习技术和赚钱方法的公众号,持续更…

gridview获取选中行数据_Word转Excel,不想熬夜加班,那就掌握这个数据清洗方法...

私信回复关键词【福利】~获取丰富办公资源,助你高效办公早下班!小伙伴们,大家好,我是专治各种疑难杂「数」的农夫~今天,我就为大家介绍一种高效的数据清洗方法,助你告别熬夜加班,拥抱美好的夜晚…

Mybatis源码阅读(三):结果集映射3.3 —— 主键生成策略

*************************************优雅的分割线 ********************************** 分享一波:程序员赚外快-必看的巅峰干货 如果以上内容对你觉得有用,并想获取更多的赚钱方式和免费的技术教程 请关注微信公众号:HB荷包 一个能让你学习技术和赚钱方法的公众号,持续更…

list最大容量_Java 基础(四)集合源码解析 List

List 接口前面我们学习了Iterator、Collection,为集合的学习打下了基础,现在我们来学习集合的第一大体系 List。List 是一个接口,定义了一组元素是有序的、可重复的集合。List 继承自 Collection,较之 Collection,List…

Mybatis源码阅读(四):核心接口4.1——StatementHandler

*************************************优雅的分割线 ********************************** 分享一波:程序员赚外快-必看的巅峰干货 如果以上内容对你觉得有用,并想获取更多的赚钱方式和免费的技术教程 请关注微信公众号:HB荷包 一个能让你学习技术和赚钱方法的公众号,持续更…

Shell学习之结合正则表达式与通配符的使用(五)

Shell学习之结合正则表达式与通配符的使用 目录 通配符 正则表达式与通配符通配符通配符的使用正则表达式 正则表达式正则表达式的使用通配符 正则表达式与通配符 正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配。grep、awk、sed等命令可以支持正则表达…