漫谈程序员系列:千奇百怪的程序员

时间:2023-01-08 19:02:33

干开发时间长了,遇见好多好玩儿的程序员。

看看你躺枪了没。

留一手

有个哥们儿,在一合资公司做程序员,能力挺强,写代码很神的。

他的代码我看过,深得 MFC 的精髓:大量的宏,很多函数就两三个宏,一个BEGIN_XXX,一个END_XXX,中间再夹另外一个宏。诺,这就是汉堡包了。

我碰巧看他的代码(题外话,没和他在一个公司一块儿待过),那个头大啊……这玩意儿也能记得住嘛,厉害,真是厉害。

就是这么厉害个人儿,项目组数他牛 B ,他的代码只有他能看懂,他的地盘他做主,没人敢进去改东西。

这都不是真正的牛 B 之处,最牛逼的是,这哥们儿代码里有不少 BUG ,每个版本都不改完,故意留上两个,要是项目经理急了,就把旧的改完,埋两个新雷进去。

因为没人动得了他的代码,他就这么一直搞着,项目经理恨得牙根痒痒,可愣是没办法。

全局变量控

看一段代码:

[cpp] view plain copy
在CODE上查看代码片派生到我的代码片

/* Exported variables */  

char hfile_name[MAXARGLEN+1], location[MAXARGLEN*2], *ppm = NULL,
*gif = NULL, tzfile[MAXARGLEN+1], units[MAXARGLEN+1],
units_abbrv[MAXARGLEN+1], tadjust_tzname[MAXARGLEN+1];
char next_ht_text[20], next_ht_date[20], next_lt_text[20],
next_lt_date[20], *geometry = NULL, loadunits[80];
char *fgrise_color_arg = NULL, *fgfall_color_arg = NULL,
*fgtext_color_arg = NULL, *fgmark_color_arg = NULL,
*fgmllw_color_arg = NULL, *fgmiddle_color_arg = NULL;
int Usetadjust=0, Itadjust = 0, tadjust = 0, utc = 0, list = 0, checkyear = 0, text = 0, skinny = 0,
now = 0, graphmode = 0, httimeoff = 0, lttimeoff = 0, tstep = 180,
middle = 0, mark = 0, mllw = 0, lines = 1, PPMWIDTH = 960,
PPMHEIGHT = 300, hinc = 0, tinc = 0, loctz = 0, iscurrent = 0,
curonly = 0, toplines = 0, hincmagic = 0, calendar = 0, banner = 0,
weekday = 0, hairy = 0, linegraph = 0, ps = 0, noampm = 0, uutc = 0,
have_offsets = 0, Ihttimeoff = 0, Ilttimeoff = 0, newload = 0, subproc=1,OnlyTCD=0, datemdy=0, mapZoom=0;
double llevelmult = 1.0, hlevelmult = 1.0, Illevelmult = 1.0, Ihlevelmult = 1.0;
time_t next_ht = 0, prev_ht = 0, next_ht_adj = 0,
prev_ht_adj = 0, faketime = 0, epoch = 0, mark_time_adj = 0;
double amplitude = 0.0, htleveloff = 0.0, ltleveloff = 0.0, DATUM, marklev,
absmax = 0.0, absmin = 0.0, fakedatum = 0.0, fakeamplitude = 0.0,
Ihtleveloff = 0.0, Iltleveloff = 0.0;
double next_ht_amplitude, next_lt_amplitude; //mgh+
int num_epochs = 0, first_year = 0;


恐怖吗?这是我在一个项目中的一个源文件里看到的,还有很多类似的源文件……

话说,有些程序员就爱这口,特别喜欢全局变量,只是,代码写完的第二天,他就可能被自己的全局变量们给吞噬了……

别想看我的代码

还有的兄弟,对于自己的代码,非常之在意,他把自己的代码当作圣姑了,虽然必须行走江湖,但是我就是要给它戴个斗笠蒙个面纱,就是不让你看。有时候你看他一直埋头电脑前,噼里啪啦的击键之声不绝,可是就是不知道他写了什么。他从来不让别人看他的代码,谁看给谁急。不知道是怎么想的,我有时候只能猜测,他啪啪啪敲键盘,其实是在聊 QQ 了,他之所以不让人看,完全是因为,半个月过去了,一行代码还没写呢。当然还有一种可能,他的代码比较凌乱,不想让人看出来……我们也可以往好的方面猜猜,此君自视甚高,认为自己的代码高深莫测,怕别人看了自惭形秽,怕打击别人柔弱的小心脏;或者此君认为自己的代码太优秀了,怕别人偷学了去……

不管怎么样,死捂着代码不放,终归不是个办法。

祥林嫂

“祥林嫂”原本是鲁迅小说《祝福》中的人物,是旧中国农村劳动妇女的典型。而“祥林嫂”这个词儿本身,现在又有了特别的含义,我只取其“牢骚满腹”、“不断 goto 当初”之意。

有个别程序员,对自己的技能比较珍视,采用二分法,认为这些技术是好的,是灵丹妙药,认为那些技术是坏的,是穿肠毒药。尤其是产品技术方案没有选择他认为好的那个技术时,他会很长一段时间不能接受,但凡项目执行过程中遇到点儿不顺,就会唠叨:“要是当初选择 XXX ,肯定没这些问题”。类似的话,会不断从他嘴里说出来,循环往复,一咏三叹,简直让人崩溃。

我能干我不干我很忙

也许你遇见过这样的队友:分解任务时,说到哪个模块,都能头头是道,看起来没有他不懂的,可是你让他干时,哪个都不愿意干,老推说我已经 take 了多少少 task 。到最后,他基本上没什么 task ,还是很简单的,但当你跟踪进度时,他却总是说遇到了这个问题,还得多长时间,遇到了那个问题,又得多长时间,你要帮他看看时,他又说不用自己能搞定。

未来战士

未来战士们对新的技术和工具特别热衷,每个领域的前沿技术他都知道,都能说出个一二三,而且这些技术更迭时他也都知道,比办公室里的其他人都知道得早。对于那些新技术,一旦他和你说起来,就神采飞扬,唾沫星星子四溅,此时即便你有事儿都不好意思走开。

未来战士所开发的软件所使用的 SDK 、 工具 ,只要有新的版本出现,一定要更新。哪怕是昨天刚刚更新过,今天也要更新。你不让他更新他就坐立不安,一定要来说服你,新版本有千般好,旧版本性能差、漏洞多、使用不便、编译缓慢等等问题都会被他找出来。

未来战士的哲学思想非常明确:新的就是好的。

石器时代的守护神

与未来战士相反,另有一些程序员,对自己掌握的技术、对既有产品所采用的技术坚定不移的维护,你要想让他把软件依赖的框架版本升级一下,那是比登天还难:Run得好好的,为毛要升级?用现在的版本可以应付一切!

石器时代的守护神具有很强的韧性和对抗一切新技术的定力,只要旧系统还可以用,他就可以旷日持久的坚持、维护下去,因为他们的原则就是:只要将就能用,不到万不得已一定不要去更新,因为任何新的技术新的改动新的设计新的重构都是怪兽,不知道会带来多大的破坏。

老子不需要帮助

见过没?有的程序员就爱自己搞,就算是我被一个问题绊住,吭哧吭哧搞上一星期还搞不出来,你也别想帮助我!他们的信条是:老子能搞定,老子不需要帮助。

这种类型的程序员特别敏感,特别害怕别人瞧不起他,当然有时也有些自卑、多疑,担心别人的帮助里夹带着嘲笑,他们的敏感、多疑、骄傲、自卑等等复杂情感驱使他们拒绝接受别人的帮助,也驱使他们忘记时间盒的存在。

快来帮帮我吧

嘿嘿,这种类型的程序员,最爱说的就是:哎呀搞不定了,谁来帮帮我。

只要你一帮他,这活儿就成你的了,他们会让你觉得帮人不到底你好意思吗你,还会让你觉得送佛不到西天就是你的罪过……我天,他们遇到问题都不想的,直接拉你过来调代码。

他们是“老子不需要帮助”的反面。

别让我读代码,我是文盲

我懂得一门语言的所有语法,关键字认得,控制结构懂得,继承知道,多态了解,设计模式我也清楚,可你别让我看代码,看不懂,真心不懂。

这也是一类程序员,他们能够了解编程语言的所有语法和细节,可就是看不懂别人的代码。

精雕细琢的艺术家

咦,这里该不该断行?

代码编辑器里,到底这种字体好看还是那种字体好看?

这里的条件判断,到底是三层 IF 语句嵌套好还是三个 IF-RETURN 好?

……

这些艺术家们把代码当作一门艺术,从编辑器开始打磨,一直到每一行代码到底多少个字符合适,花括号是放在行尾还是行首……都要仔细斟酌研究。对他们来讲:美观是高于一切的。

孤独的人

有些人选择软件开发,就是因为:再也不用和别人打交道了。

所以,他们会回避任何与别人交流的机会,谈话、电话、邮件、即时通信、微信……总之,他们理想的工作环境里只有代码没有人类。与同事或客户沟通,对他们来讲是巨大的负担,感觉说一句话就会耗费他们一辈子力气。