‘壹’ 程序员都有哪些强迫行为
来源:知乎
程序猿可能是所有工种当中强迫症最多的群体,由于一个不经意的大小写字符疏忽或者空格字符的差异,都可能导致严重的BUG或程序失败,所以很多程序猿在工作当中慢慢养成了近乎偏执的编程习惯,也就是强迫症。程序猿都会有哪些常见的强迫症行为?今天,小慕就带大伙儿来梳理一下,看看你有没有中招!
1、注释变态
注释一直以来都是一个最具争议性的编程问题。有人认为要有清晰的注释,有人认为好的程序是自解释的,无需注释。对大多数程序猿来说,除了遵循公司的注释标准,通常仅仅在特别重要或者不好理解的语句上才会注释。但是总有那么两种牛掰的人,一种是在每个可注释的地方都有注释,另一种就是在任何时候都不写任何注释,你问他为嘛这样,他会轻描淡写地来一句“我习惯了”,好吧,习惯与强迫症不分家。
2、字体强迫症
小慕曾经见过一个程序猿,由于长时间的编程生涯,患上了编程字体强迫症。每次看到别人的代码总会欠揍地用他那大碴子味十足的口音来这么一句:“哎哟~看的我两眼昏花啊,你能换个好看点的字体吗?”对编程字体有着超强悍偏执的强迫症倾向――必须把每个编辑器、终端的字体调节成他自己喜欢的Monaco字体才能安心编程,所以无论是在mac还是windows编程,他首先要做的第一件事情就是替换字体。Emmmmm这确实是件非常重要的事,因为小慕也是这样的人??.
3、IDE圣战
江湖没有争斗的话还叫江湖吗?还会有大虾出现吗?使用什么样的IDE,可能是与编程人士交流最危险的话题。这里Vim党、emac党、VS党、IntelliJ IDEA党、Sublime党甚至还有notepad党,可以说是热闹非凡。
选择什么样的IDE已经成为程序猿们的一种信仰,你可以鄙视我的编程,但你不能侮辱我选择的IDE,等等,背景还得再调成我喜欢的颜色。如果你不是一个随便的人,如果你必须使用某种已经习惯的IDE才能安心做码农,小慕恭喜你,你已经踏进强迫症大门,成为IDE圣战江湖里一名忠诚的勇士了!
4、空格强迫症
如同男孩子从小到大都在女孩堆儿里玩,长大后容易变成妇女之友一样,如果你写Python程序写的多了,很有可能会患上空格强迫症,以致于在写任何其他语言程序的时候,都喜欢把缩进由TAB换成空格。其实在除了Python之外的大多数语言里,两者是可以通用的,不过在接触Python以后,他们更喜欢用空格。
5、不断的beautify code
完美主义者,Beautiful code强迫症,每隔一分钟就使用编辑器的格式化代码功能美化代码;总觉得还可以用更好的代码,不断地推翻已有成果从头来过。狂热的完美代码爱好者,如果没有满意的代码,整个项目就无法往前推进,为了这点儿追求,熬夜赶项目进度几乎是这类程序猿的常态。“看成败人生豪迈,只不过是从头再来”就是他们的激励之歌。
小慕一直觉得完美主义没有错,如果一定要说有错,那就是过于追求完美导致的拖延症并发症!如果你是个视金钱若粪土的程序猿,可以忽略工资的存在(因为总是拖延项目进度,被BOSS扣光了),小慕支持你在代码的江湖登峰造极,令狐冲不就是凭借一套独孤九剑独步武林、娶了江湖美女任盈盈嘛,你一定会更强!
6、不断手动CTRL+S
曾经写代码过程中断电或者系统崩溃,好不容易写的代码功亏一篑,从此留下后遗症,极其没有安全感:总是担心万一系统崩溃怎么办,万一断电怎么办,设置成每隔10S就自动保存,在写任何长一点的代码的时候,包括网页,都会下意识地使用CTRL+S手动保存。这没毛病,可问题是必须按三次CTRL+S才能安心!一段代码下来,无数次CTRL+S,堪比曾经被学校老师忽悠着买的复读机啊!这可真是就算是自带保存功能的编辑机器都无法拯救的强迫症!
7、专属背景强迫症
如果一个程序猿买衣服一直买黑色的,配饰是黑色的,使用的物品也是黑色的,那么他的IDE的背景一定也是黑色的。除了黑色背景,他会找不到写代码的状态。所以,好多程序猿在写任何代码之前,一定要把任何IDE的背景调成专属的背景色才可以,一点点色差都不行。其实,不仅程序猿,很多人也都这样的症状吧?电脑桌面壁纸只觉得现在这张最好看,换了电脑也要把电脑桌面壁纸换成自己习惯的,这也是背景强迫症的表现。
8、多余空白不能忍
代码一定要美观,不能有不相关的因素出现,包括空白。看着别人发过来的代码,内心无比痛楚纠结,暗暗叫骂,“怎么会有这么多空白?写代码的程序猿在想什么?”必须移除多余空白才能满意。虽然不移除对程序没啥影响,但对心情有极大影响。这样的习惯绝对是完美强迫症的一种,不要狡辩,狡辩就是掩饰,掩饰就是事实,强迫症的帽子你戴定了,没有商量的余地。
9、严格遵循80栏字符限制强迫症
不能容忍任何一行语句的长度超过80字符限制,如果显示器的分辨是2k的,也不能容忍编辑器后面有大量的空白。这种大屏幕电脑高分辨率电脑显示器,一行可输入的字符数远高于80字符时,那对这些程序猿简直就是地狱般的折磨;在语句长度不超过80字符与不能有太大留白之间百般纠结,千方取舍,万般痛苦地做决定。即便某些情况下分行存在技术难度,也执着的寻求解决方案,永远相信自己一定能够找出解决方案。
其实,在程序猿的世界里,有强迫症都很正常啦,适度适量的强迫症是工和严谨的表现,是在与Bug的长期斗争中而形成的,甚至程序猿们可以骄傲地高声呼喊,没有强迫症的程序猿不是好程序猿。
不过话又说回来,有些强迫症益于工作,也有些会拖累工作,取舍适当方是完美的关键,这其中火候的把握可以说是一门需要自己慢慢探索的一门艺术了。
‘贰’ 程序员的工作和生活状态是什么样的
这个按照个人能力和公司的要求不一样,活的也就不一样。有的人比较拼,敢于承担更多的责任,那么就在办公室的时间比较长。有的人爱玩/有家等等原因,就没有那么多时间放在工作上了。除此之外,还取决于你对工作的态度。有的人拖延症严重,那么就是每天加班在赶白天没有做完的工作;有的人没有拖延症,那么在顺利的情况下总能给自己留出不短的时间,看你怎么分配。毕竟项目经理在预估研发周期的时候,都不是卡的很死,会给很多不可预料的事情留出一定的额外时间。下面举三个例子
同事A研发Leader
项目组内所有的关键节点基本都是交给他做的,家里两个孩子。基本都能按时完成所有工作,去年还抽时间考了项目管理师。从来没有由于个人原因拖延过整体的项目计划。今年公司级优秀员工。
同事B研发转项目经理
本科刚毕业三年,单身。做事认真,身兼数职,基本上和他能有点关系的,他最后都会成为事情的主导。同时作为一个90后,去年一年他看了50多部电影,我们公司附近所有的大小餐厅都去吃过,公司羽毛球队的主力。业余生活十分丰富多彩。
同事C测试
研究生毕业4年,单身,妹子。做事几乎没啥激情,工作仅处于能够完成的阶段,4年内基本没有看到什么成长。业余时间也没有什么可以说的,以宅为主。之前曾经和经理商量是不是再招一个测试替换她。这是三个同事。实际上,同事C的事情的空间性是最大的。但是实际上她的工作完成度在我们看来是最差的。而A和B的工作压力非常大,但是很多事情并没有落下。所以,程序员的日常生活与工作是什么样的,看你对待生活的态度。在这件事上,和别人无关。
‘叁’ 为什么很多程序员都喜欢熬夜,而且感觉在后半夜工作效率异常高
不管我是不是程序员做什么工作也好,其实我都是个夜间活动物种,夜猫子一个,可能是大学期间通宵习惯了,白天没有精神,只要是到了晚上12点就精神百倍,两眼发光的这种,我相信很多小伙伴都跟我一样吧。
‘肆’ 编程究竟难在哪
1. 难在思路的构建
你学了很多语法,很多 API,但是当给你一个实际问题,让你通过编程实现,不是简单地罗列 API 即可完成,而是需要你对问题进行分析,理清解决问题的逻辑,然后再通过各种算法、数据结构和 API 等进行编程实现。
2. 做出来容易,做好难
当你解决了思路构建的难点,解决了一个问题,但是你是否使用的最好的方法,这就是所谓的做出来容易,做好难。
写的程序能够解决问题且没有 bug 是基本要求。这里的做好不是指功能正确,而是写的程序容易理解,能够很容易让其他接手的程序员(水平不差)看懂为什么这么写。
正确是现在怎么写不会挖坑害将来的人,现在怎么写能让别人1年后看你代码时候不可能理解错你现在的意图,现在怎么写能在别人将来犯错的时候提示他你错了。
编程是给未来的未知人讲故事,你无法知道将来这个人是谁,他都懂什么,他经历过什么,这个系统将来已经是什么样子了。我们需要在这种无知,缺乏信息的情况下做决定,从千万种把这件事做出来的方法里,选出你觉得最能把这个故事给讲好的那种方式,把故事写下来。
编程是一种沟通,用程序跨越时空之沟通则是一门属于程序员的特有的艺术 —— 阿莱克西斯
3. 规范性好,有良好的可扩展性
并且程序的可扩展性,规范性高,后期维护难度小。整体功能实现的过程中,各种情况考虑规范。其实学习编程和学习其他内容一样,没有什么太大差别。心态放好,用对方法,你就能够学好。重要的是学知识的人是什么样子,而不是学的是什么。
在这给你一些学习编程的建议,希望对你有用。
1. 让编程成为一个习惯
想要培养一项技能的最好的办法,就是将他融入到我们的生活并成为我们的爱好。其实说白了,就是让这个爱好成为一个习惯,一天不去做这件事情,都会觉得少了什么。在不知不觉中,这个习惯会像滚雪球一样积累起来。
对我来说,养成这种习惯首先就是要对“拖延症”说不。比如,你想锻炼下自己的写作能力时,但是没有好看的本子,没有好的灵感,没有安静的环境....总之就是找各种理由一拖再拖,最后就不了了之了。
为自己设定一下,每周拿出几天,每天拿出几个小时,编程学习就这样慢慢步入正轨。
2. 将每天的学习过程拆分成小块
对待编程学习,我们没必要像健身狂人那样一口气做到筋疲力尽。与其直接编程2小时,我们完全可以先做40分钟、然后休息5分钟,整个过程重复4次。很明显。
‘伍’ 要做程序员需要学会什么
其实简单来说,程序员的工作就是使用编程语言,根据需求写出一个程序。
但是,在这个过程中,涉及如下几个方面:
使用的编程语言 程序员需要选择一门或者多门语言来编程,不同的语言适合编写不同的程序,目前主流编程语言包括,Java、JavaScript、Python、C++、php以及其他小语种等等,每种编程语言适合开发的程序有所不同。目前从程序应用分来,主要可以分为三类a 企业应用,主要用于解决企业业务。各种企业管理后台系统,银行系统,公安系统,图书管理系统等等。
b 互联网应用,面向互联网用户,为互联网用户提供各类服务。比如现在的京东淘宝各类电商系统等。
c 移动应用,各类在移动端使用的APP,有面向互联网用户的APP,也有面向企业内部的APP。
目前相对而言,在移动应用和互联网应用方面,资本投入比较热的风口,程序员的薪资较高。企业应用,发展了很多年,相对平稳。
2. 明白需求,实现需求
需求就是编写程序的要求。一个程序要编写成什么样子,具备哪些功能,都是由需求来具体说明。程序员要需要能看懂需求文档,并且能准确地使用编程语言,根据需求中的要求来编写成程序。企业开发的项目,往往会由该程序的架构师提供一个程序框架,程序员在该框架的规范下进行编程,实现需求的功能,以确保程序的规范、可读,以及可维护性。
3. 日常工作写程序
一个软件开发一般流程是产品经理根据用户需求做一个项目出来,然后UI设计师做一些图片设计,前端开发编写页面,后台开发编写核心编程,然后介入一些大数据和人工智能,通过测试之类上线实施,后期还有运维进行相关维护。
程序员一般大多指的是前端和后台写代码程序的开发人员,除了编写代码,可能还需要通过接口和其它系统对接,实现系统间的数据交换。像单体测试,是程序员对自己写好的程序单元进行测试,检测这个程序单元数据输入和数据输出是否符合预期等等。测试出来的问题,需要修改正确,然后再测试,直至没有问题。和同事共同开发的时候也需要联合测试,以及用户测试过后如果存在BUG继续进行修改。
‘陆’ 程序员有哪些强迫症
数数永远从0开始数……