《java程序员上班那些事》读书笔记1----程序员就是一般人

时间:2022-03-22 13:18:10

最近在看钟声的书,<java程序员上班那些事>.有些感想,于是开始动笔写点东西,第一次先说这个程序员的性格吧。

    书中总结了程序员的一些特点,我先罗列出来:

             1. 逻辑思维推理能力强 
         程序员的工作性质决定了这个特性,开发应用程序过程中的每一个代码组合都是需要较强的逻辑思维推理能力将其堆叠出来。 

         2.有强烈的危机意识 
        开发应用程序的时候,能够时刻保持警惕,随时准备处理各种危机,面临困难镇定自若,冷静的处理困难,一步一步逼近各种技术难题,并将BUG赶尽杀绝。 

         3.有完美的控制意识 
        程序员们对解决方案最完美的追求可谓是发挥到了极致,如果有更好的解决方案,则会毫不留情的清除掉数千行耗时数日的代码,用新的解决方案来取代。 
程序员最瞧不起利用简单的临时程序处理关键问题的不负责任的编程行为,比如:为了解决守护进程调度的多线程程序中进程无法正常退出的异常问题,采用编写一个脚本在进程启动前KILL全部该名称进程的做法,是优秀程序员们嗤之以鼻的。 

         4.人生的战略规划意识 
        程序员们对自己未来的发展路径看得很清晰,对自己的每一个发展计划都有比较有高度的战略规划,能够在长期的应用软件开发过程中持之以恒,工作一直保持严谨的工作态度,有张有驰,忙而不乱。
(个人认为这跟程序员的工作特性有关系,毕竟这是一个需要不断学习的行业,想要生存就要不断的去主动寻找学习新的知识去完善自己,自然就会规划自己的人生路线,因为他知道自己下一步该学什么,该到什么职位) 

         5. 强烈关注开发细节 
        程序员们非常关注应用程序开发的细枝末节,对于人机界面中某一个按钮的摆放位置,或者对于代码中的拼写错误,排版不一致,甚至更小的看起来不影响程序运行的小的瑕疵都不能容忍。这正是一个优秀程序员所应该具备的品质。

 

这些都是程序员的“职业病”,或许看起来很好,但是,其实上会给你的生活带来很多变化,作为程序员的一份子,我是深有体会。先看看钟声写的。

         1. 逻辑思维推理能力强,但容易钻进牛角尖 
        程序员们的逻辑思维能力可以让他们在程序的世界中翱翔驰骋,多么复杂的程序在他们面前也都是小菜一碟,任何难题对他们来说都是无往而不利。然而正是由于他们具有较强逻辑推理能力,才使他们对无关紧要的事情也容易陷入逻辑推理惯性思维。(这个我深有体会,经常被身边人说,而且我从小就是“十万个为什么”,我认为对世界充满好奇和探索欲是一个好程序员的一个基本条件) 
        像这样在普通的无关紧要的事物上进行逻辑推理的现象,我们把这个称作是“钻牛角尖”,也正是因为此,才被别人误解为爱“钻牛角尖”的一群人。 

         2. 有强烈的危机意识,但总是患得患失 
        危机无处不在,为了应对一个可能发生但还没有发生的潜在危机,做出数种应对策略,划出多道马奇诺防线,这点用在程序开发上让程序员面对任何风浪都能拿出解决方案。然而,在生活中这种危机意识使程序员总是患得患失,总是在那些还没有发生的事情上苦恼,这也是常有的事情。(这个也是,我总是习惯性的考虑事情发生后的各种结果,就跟编程序时要考虑各种异常抛出一样,用if,while和switch去思考事情的解决方案,真是那句话,程序员眼中,万物皆对象) 

         3. 有完美的控制意识,眼睛里揉不得沙子 
        我们看到程序员们对解决方案最完美的追求可谓是发挥到了极致,这一点用在工作中绝没有问题,但是,在生活中却是一个绝对完美的追求者,不免让人产生有“眼睛里揉不得一点沙子”的感觉。有时候不能容忍一件事情的一点瑕疵,也是程序员们苦恼的来源。(这点我可惜没有,不过我身边的同学有,也是我们学校的,和他一起做过一次社团管理系统,真的是很认真的一个人,俗话说,“死犟死犟的”,呵呵,是夸他,这是好事,我也在努力朝这个方向进步) 

         4. 人生的战略规划意识,把人生当成编程 
        虽然程序员们对自己未来的发展路径看得很清晰,对自己的每一个发展计划都有比较有高度的战略规划,但是,程序员们往往把生活和人生也看成是编写的程序,生活的每一步都是按照预先设定好的程序运行的,人生如果变成了程序未免太缺乏乐趣了吧。(这个我只能说看个人了,毕竟有的人喜欢给自己一步一步的安排,或许他自己乐在其中呢?) 

         5. 强烈关注开发细节,忽略的自己的身体 
        程序员们非常关注应用程序开发的细枝末节,他们经常因为一个界面中的按钮位置而熬夜,因为一个代码的效率而忘记吃饭,为了一个程序运行的小的瑕疵而一天都不喝一口水。(这个情况相信大家也都知道,我现在已经实习,我这个公司,基本上一天工作12小时左右吧,周六加班存倒休。这是公司情况,具体到代码,我相信不是干开发工作的很难理解“废寝忘食”这个概念,其实跟画画啊,雕塑啊什么一样,我们是在创造一个东西,这是有惯性的,不一次性把他做到某个程度,真的是件很变扭的事情,但是我只会在做东西的时候陷入这种状态,真的会忘了时间,而且,确实晚上写代码效率高,或许是个人习惯,但也知道时间长了对身体不好,前一阵分享了一个睡觉的日志,有相同的苦恼的同学建议看看,自己把握度吧)

 

     有这么一个说法,语言是锻炼思维的工具,你常说英语就会有英语思维,比如“I”,你的下意识会告诉你,我很重要。日语呢,都知道日本人特别喜欢说“はい”,我们的技术经理在日本呆了10年回来,吉大毕业的,你跟他交流时,哪怕你说的是中文,你也会发现他的头是一直点的,他已经习惯日语的思考方式了。还有法语,这个我是听说,我没有学过法语,他们说法国人浪漫其实也是因为法语浪漫,如果有同学是学法语的,希望能就此补充下,谢谢了。

    另外说下汉语,其实汉语是很高深的,这个高深只得是语言成熟度,这个是我从电视上的一个大学生英语能力大赛上的裁判---一个大学语言学教授上听说的词,他说,其实汉语比英语的成熟度要高,英语当中有很多缺陷和硬伤,这是因为英语发展的时间短造成的。汉语是世界最难学的语言,不是我说的,联合国说的,你想把,你天天说的想的用的是世界上最难学的语言,所以说,中国人是很聪明的。

   到重点了,其实计算机语言也是一种语言,为什么?因为他也能和人交流啊,不只是计算机,你想把,语言都是人类思维的总结规律,计算机语言的反应其实是最抽象和直接的。条件就是条件,循环就是循环。我们现在的主流是面向对象的语言的么,我亲身经历发现,学习这种语言会改变的我的思维方式,即“万物皆对象”。“没有不可能解决的事情”,“没有不可能发生的事情”。

  万物皆对象

面向对象计算机编程语言,最贴近现实,最符合事物的客观规律,因为它是符合唯物主义哲学的世界是由物质组成的这一基本观点的。物质在现实世界里的具体对象是有形的,而把成千上万个对象归结到一起的这个“物质”是无形的,计算机语言的类也是如此。物质也好,类也罢,即使你对它看不见摸不着,它也是存在与天地之间的,它的存在和发展也是有规律可循的。

有时候话不必说的太多,太清楚,说的太清楚反而会使听者感到越不清楚。闭上眼睛,用自己的心去领悟吧:“天地本无形,万类性皆通。阴阳相生克,造化无始终。”

跟我默念,他是类他是类,他是抽象类他是抽象类,他是接口他是接口。。。。。


没有不可能解决的事情

编程序告诉我,电脑基本不会错,错的基本是我,如果是我的错,那么如果我改了,那结果应该就是对的。所以,没有不可能解决的事情,我们需要的只是良好的设计和足够的时间。程序员不怕麻烦,不怕困难,怕的是没有思路没有需求。


跟我默念,我要需求我要需求,我要分析我要分析,我要需求分析我要需求分析


没有不可能发生的事情


最恨的就是这个,程序员刚写完程序后第一次运行时最常说的是啥?“这不可能,为什么会报错?”。恭喜你,如果你看到报错了,那么的“不可能”已经变成“可能”并且“确实”发生了。俗称“BUG”。

这里顺便说下“BUG”的由来,估计很多人都不知道:

1947年,计算机还是由机械式继电器和真空管驱动的,机器有房间那么大。体现当时技术水平的MarkⅡ,是由哈佛大学造的一个庞然大物。当技术人员正在进行不整机运行时,它突然停止了工作。他们爬上去找原因,发现这台巨大的计算机内部一组继电器的触点之间有一只飞蛾,这显然是由于飞蛾受光和热的吸引,飞到了触点上,然后被高电压击死。


前面也说了,程序员有强烈的危机意识总是会提前估算一些事情,当然,限于经验,能力的限制,我们往往并不能完全估算出事情的结果,如同发现“BUG”一样,我们会下意识的说“这不可能”。实际上,他已经发生了,所以,对于已经发生的事情,不要去做无用功,比如伤心,悔恨,踌躇,懊恼,抱怨.尽快的分析分析问题,解决问题,进行我们的“DEBUG”,这才是我们应该做的,而且,还要注意,下次不要再犯了。

 

跟我大声念,我能解决我能解决