我最鄙视的程序员

今天在技术群里看到关于优秀程序员特质的话题,让我想起多年前的一个同事,一个我最鄙视的程序员。

他的名字叫李伟(化名),是入职没多久的员工,我所在的开发二组和他在的一组,以前没有过工作交集。某一天上级安排我们两组人合作开发一个小额贷款项目,在基础服务上构建一个可以灵活对接多个贷款渠道的系统。

我最鄙视的程序员
  • 渠道对接层:承接渠道的原始数据,解密并解析为我方可以处理的格式和字段。每个渠道对应一个独立的微服务,调用业务融合层的接口,完成业务流程。
  • 业务融合层:处理渠道编号和订单、还款等业务映射关系。融合多个流程整合到一个接口中,对外提供标准化的接口,类似中台的概念。

一组的组长安排他做了几个重要的事情,具体是定义订单、还款等接口,调用更底层的业务接口实现自己的接口业务。我们对接流量渠道,调用他定义的接口完成业务流程。通常新人做事难免磕磕碰碰,但是项目的时间很充裕,做一些重要的事情也能更好的展示自己的水平。我认为他的组长的安排没有问题。

我们先开会学习和讨论了产品流程,目的是让每一位开发人员都知道数据结构和走向。为了确保我们的进度,我建议他先给出接口定义,再找个会议室,双方评审一下接口,确认无误后通过maven发布依赖包,这样我们就可以填充代码了。他答应了先给接口定义,但是拒绝评审接口,理由是这个东西很简单,不用大费周章。我考虑了一下,等他给出接口定义,我们认为有问题就指出来,算是非正式评审。整整过了一周,他的接口终于来了,总共4个接口,每个接口里面有6、7个方法。这个事情拖延了一周,让我有点不快了。

他给接口的方式让人耳目一新,直接把接口源文件甩了过来。公司有一套采用RAP2搭建的API管理系统,还是他们一组牵头做的。作为一个新人,应该先熟悉公司有哪些辅助开发的系统,就算同事不告诉你,也要主动问。更妙的是,他的源码一行注释也没有,好在代码的英文单词都是常见的,我们勉强能看懂。

我们内部评审之后,发现有几个方法的入参有9个之多,于是建议他封装在一个JavaBean里面。

List queryLoanOrder(String channelId, String orderId, Integer userId, Bigdecimal minAmount, Bigdecimal maxAmount, Date startTime, Date endTime, Integer pageSize, Integer pageNo);

他有些不悦,认为意义不大,缺了参数继续加就行。毕竟不是我管理的人,我不想花心思教育,只说这是公司代码规范,希望他务必改一下。他不情愿地改了入参,结果都变成了JSONObject。

List queryLoanOrder(JSONObject jsonObject);

我问他为什么要用JSONObject,得到的回复是:这样更灵活,往JSONObject里面 put key / value 就能增加参数。我直接来个灵魂三问:1. 必须要看文档才知道key是什么,value的类型是什么,而你又不给文档;2.采用不明确的入参,Hibernate Validator肯定用不了,打算怎么做参数校验;3. JSONObject有什么特别之处?用Map也是一样的。在我的拷问之下,他又屈服了,改成了JavaBean。如果他有足够的理由说服我,我倒是敬他是条汉子。

进入接口联调阶段,我们的同事事先跟他约好周二下午四点联调订单接口。到了周二下午,我们调了几次订单接口,发现返回结果不理想,把数据发给他看看。

“接口实现我还没写好呢,结果当然不正确。”
“那你为什么答应联调呢?”
“只是联调,调通了就行,为什么一定要完全正确?”
“什么时候可以完全正确呢?”
“提测之后,测试人员测出问题了,我就改改。”

我意识这个人不行,马上跟他的组长反馈了问题。再与他沟通的时候,表现的更不积极了,无论事情大小,都要一催再催。我有查阅所有相关项目代码的权限,闲来无事看了看他的代码。在一个订单接口实现里面发现这样的写法:

if(orderId == null || orderId.length == 0) {
    throws XXXX;
}

我友好的提醒了他:StringUtils的运用是基本功,这个写法可以改成 StringUtils.isBlank(orderId)

“不是一回事吗?”他淡淡的回了一句。
“代码能跑,只是底线,不是及格线”,我终于愤怒了。

后来,一组组长让他走人了,没过试用期。这是我见过基本功最差、态度最不端正的程序员。我不知道他怎么被招聘进来的,招聘流程肯定有问题,他的组长也有失职之处。

Original: https://www.cnblogs.com/xiaoyangjia/p/16414604.html
Author: 编码砖家
Title: 我最鄙视的程序员

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/578105/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • OrchardCore Headless建站拾遗

    书接上回,OrchardCore的基本设置写了,但是有一说一,这个东西还是挺复杂的,如果需要构建一个简单的企业网站,还需要干点别的活。 本文考虑在尽量少编程的基础上,完成一个Hea…

    Linux 2023年6月6日
    0100
  • django解析POST过来的json时,Unterminated string starting

    结论:我遇到的问题是与号( &), 分号( ; ), 等号( = ) 都会成为字符串分割符。导致后端解析json参数失败 1.bug产生背景 handsontable插件实…

    Linux 2023年6月8日
    099
  • LeetCode-349. 两个数组的交集

    题目来源 题目详情 给定两个数组 nums1 和 nums2 ,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。 示例 1: 输入: n…

    Linux 2023年6月7日
    081
  • Linux 查看端口被占用

    端口被占用网上很多,这种频繁操作的命令容易忘记,写这边文章的目的主要是加深操作命令的印象, Liux 查看端口占用情况可以使用 lsof 和 netstat 命令。 lsof ls…

    Linux 2023年6月6日
    089
  • 【Leetcode】64. 最小路径和

    给定一个包含非负整数的 m x n网格 grid,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。 说明:每次只能向下或者向右移动…

    Linux 2023年6月6日
    0100
  • 1:文件与目录

    CD 切换当前工作目录 mkdir 创建目录 re -dir 删除目录 pwd 打印当前工作目录 绝对路径和相对路径 硬链接 和软链接 CP拷贝 MV 移动 dirname 和 b…

    Linux 2023年6月7日
    0140
  • 红警快捷键图示

    最近,实验室的同学们 周末偶尔会玩一玩红警,回忆一下童年,挺愉快的。下面记录一下快捷键,方便操作; 看到B站上红警08,还有对应的快捷键教学视频,也可以直接学习一下; https:…

    Linux 2023年6月14日
    0127
  • linux学习记录

    查看所有系统服务 systemctl list-unit-files –type service -all 查看服务状态 sudo systemctl status servic…

    Linux 2023年6月7日
    081
  • Xshell 设置右键粘贴功能

    参考链接:百度经验 活在当下, 从零 出发; posted @2018-04-27 09:38 半天的半天 阅读(266 ) 评论() 编辑 Original: https://w…

    Linux 2023年5月28日
    095
  • 在VS code使用Remote-SSH远程连接Linux 开发C++ 配置详细介绍

    VS code 远程连接服务器,编译C++ 一、前期准备 1、VS code安装 Remote-SSH插件 2、Windows安装SSH。 3、Linux服务器连接测试。 a.接通…

    Linux 2023年5月27日
    0150
  • shell: 获取每行文本的最后几个字符

    tail方式 tail参数-c就可以获取最后的几个字节 -c, –bytes=[+]NUM output the last NUM bytes; or use -c +NUM t…

    Linux 2023年6月7日
    0115
  • Ubuntu16.04部署django+nginx项目

    项目使用django+nginx部署。这个项目断断续续地部署4遍了。感觉每次部署都挺费时间的(找各种配置的资料),于是写一个博客总结一下。 安装vsftpd $ sudo apt-…

    Linux 2023年6月7日
    066
  • 以STM32和FPGA为核心的多组件协调工作系统

    posted @2019-06-09 22:04 xutopia 阅读(709 ) 评论() 编辑 Original: https://www.cnblogs.com/xutopi…

    Linux 2023年6月14日
    0124
  • Java 内功修炼 之 数据结构与算法(二)

    一、二叉树补充、多叉树 1、二叉树(非递归实现遍历) (1)前提前面一篇介绍了 二叉树、顺序二叉树、线索二叉树、哈夫曼树等树结构。可参考:https://www.cnblogs.c…

    Linux 2023年6月11日
    083
  • Python 练习题:用索引取出LIST中的值

    请用索引取出下面list的指定元素,分别为Apple,Python,Lisa -*- coding: utf-8 -*- 请用索引取出下面list的指定元素 L = [ [‘App…

    Linux 2023年6月8日
    098
  • 【原创】Linux中断子系统(四)-Workqueue

    背景 Read the fucking source code! –By 鲁迅 A picture is worth a thousand words. –…

    Linux 2023年6月8日
    0102
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球