logo

如何确定自己是否适合做程序员?

2017-03-17 12:34:30来源:知乎精选

话题: ,,,
载入中...

【ershou的回答(1249票)】:

贴一篇曾经引发过许多讨论和转载的旧文,希望对你有所启发。

理想的程序员

我算是靠坑蒙拐骗进了程序员的门,然后一路狂奔。26岁之前几乎没有任何写代码的经验,研究生毕业却意外选择了一家不可能提供培训的初创公司,在每日担忧公司倒闭、害怕被炒鱿鱼以及同事冷落白眼的三重压力下逆流而上,一年半后离职,已是拥有500万用户产品的后台主程。从前我对计算机技术心怀畏惧,认定技术高人一定有佛光笼罩,昼夜不息运键如飞日吐代码上万行。现在也算见过一些世面了,回首那段忐忑不安宛如初夜的过程,我却不发觉有任何的励志意味,而是视为一种理所当然。理想的程序员,和理想的建筑师、理想的财务师、理想的按摩师没有任何的差别,他们本质上都是一群手艺人。我相信理想的程序员人人皆可成为。

近三年总在互联网圈厮混,我认识过一些程序员,共事过一些程序员,领导过一些程序员,又面试过一些程序员。他们学历不同,有的来自北大,有的来自北大青鸟,有的是博士,有的是高中肄业;资历也不同,有的来自BAT,有的来自某破产基金公司(还是一个销售);年限也从0到15年不等。但我认为程序员只需分三类:天才的程序员、理想的程序员、平庸的程序员。天才的程序员我只敢说接触过3个,这是天命。7分由你是颗精子的时候就已决定,拥有绝佳的数学天赋、冷静致密的逻辑、为解决难题宁愿不眠不休而深以为乐的技术热情;3分来自起步要早早早,恨不得同龄人玩泥巴的时候就得开始玩电脑,大学毕业前就突破一万小时法则,后面的已是游戏人生。

天才的程序员可遇不可求,更不能长有,我看到的90%仍是平庸的程序员。IT时代的膨胀,已让程序员如同文艺复兴时的印刷匠一样的普通,多数投入祖师爷门下的人,仅是为了更大的饭碗,更高的待遇,更好的生计。平庸的程序员编写腐烂的代码,没有规范和一致性,固守旧世界的语言,还好谈论大的架构和性能,说的比做的漂亮。而毫无例外的,他们认定技术没有出路,做产品、营销和管理的是更高大上的手艺,而他们当中的99%,又会自然的流露出自己恰巧具备了那方面的天赋,至于进程为什么会崩溃这样的小问题是不屑于去了解的。

而我最喜欢和理想的程序员相处,恨不得与他们同吃同住,如果允许,我希望我的队伍能插满他们的旗帜。理想的程序员心眼儿不坏(他们从来都不是办公室政治的宠儿,是一群单纯明亮快乐的手艺人),有天真烂漫的好奇心(他们的眼睛里经常闪着「哇,这个是怎么做到的!」),永远精益求精(他们的口头禅是「我再研究一下」),还乐于分享(他们活跃于GitHub、各大问答社区和你的身边,舍得将宝贵时间用于帮助新手)。是的,他们不需要被管理,只需要给一个大的方向,总能回报以意想不到的结果。

理想的程序员与平庸的程序员只有一墙之隔。两者的差距只有6个一点点,而人与人的差距,正是在这日积月累的一点点中,被永远拉开了。有意思的是,我发现这6个一点点都和意识有关,也就是程序员和其他一切新兴产业的工种一样,只需要意识加上时间的锤炼,人人皆可达到理想的阶段。理想的程序员必然也是一个优秀的problem-solver。

第1个一点点:专注眼下

见过太多心猿意马的程序员,我不得不把「专注眼下」作为天字第一条。他们往往有各式各样的小梦想,比如做个小茶农、做个小鹅贩、做产品、做销售、做投资,却被程序员的高薪或是没有转行的魄力「耽误」了,而因为不专注,他们不在意做好自己的本分,不在意锤炼自己的技能,不在意学习新兴的技术。不可否认,这世界上存在着伟大的产品(像乔老爷)、伟大的销售(像埃里森)、伟大的投资客(像彼得菲),而他们毫无例外都是程序员出身。可你听说过巴菲特评价盖茨的话么,比尔盖茨如果转行去卖狗,那他一定是全世界最大的狗贩。我坚信除了少数的天才外,冥冥众生均可以在多个领域取得成功,只要保持足够的专注。而哪怕你下一年就想卖狗去,程序员的经验仍然能训练你强大的逻辑、谨慎和耐心,放在哪个行业都是相当可观的竞争力。

第2个一点点:思考力与推动力

我认为处理bug、崩溃、调优、入侵等突发事件比编程本身更能体现平庸程序员与理想程序员的差距。当面对一个未知的问题时,如何定位复杂条件下的核心问题、如何抽丝剥茧地分析问题的潜在原因、如何排除干扰还原一个最小的可验证场景、如何抓住关键数据验证自己的猜测与实验,都是体现程序员思考力的最好场景。是的,在衡量理想程序员的标准上,思考力比经验更加重要。

有时候小伙伴跑过来,问我「提交了一个任务被卡住了,怎么办」的时候,我总觉得他可以做得更好。比如,可以检查试验别的任务,以排除代码自身的原因;可以通过Web UI检查异常(如果没有账号,可以让我提供);可以排查主机日志或删除缓存,再不济,总应该提供任务ID和控制台日志给我。理想的程序员永远不会等事情前进,他们会用尽一切方法让事情前进。

第3个一点点:Never Say No

记得从前厂离职之前,找老板谈话,他说我最大的优点就是从来不和他说这个做不到。后来我发现在很多团队里,都存在一种技术和产品的对立,程序员往往以「技术上无法实现」来挡产品的需求,而产品也往往以「Facebook可以为什么我们做不到」来奚落程序员。这两句话应该属于禁语,从根本上都不利于程序猿和产品狗的相亲相爱。

一句「技术上无法实现」是容易出口,可有多少人在说出这句话的时候,心里是100%肯定的?如果不肯定,为什么不能回去谷歌一下再回答?原本我以为程序员是充满想象力,在因为有想象力,才能诞生那么多改变我们生活的软件和互联网产品。见识多了,才了解大部分程序员已经在与bug的对抗中变得保守而不愿担当风险,与此同时许多团队也不愿意宽容失败。于是「Say No」变成一种习惯性的抵触,还记得曾国藩为什么解散湘军么?他说那支军队已「暮气渐深」,不能打仗了。要做理想的程序员,就不能给自己滋生暮气的机会,如果面对不合理的需求,可以把时间成本摆出来,把曲线救国方案亮出来,简单粗暴「Say No」是不可取的。

第4个一点点:投资未来

程序员是一个非常残忍的职业。你所学所用的语言、框架、模式,很可能在数年内就成昨日黄花了;你现在嘲笑的另一群程序员,可能马上就能转身来嘲笑你了。所以理想的程序员除了做好自己的本分,还要花费时间来投资未来。什么是「投资」?投资就是你现在投入的时间,在未来会以更多的时间或者金钱(看看早几年学习iOS的程序员现在的薪酬!)回报你。举我自己的领域 -- 数据挖掘为例,08年左右Hadoop开始兴起,一时「大数据」概念火热,Hadoop工程师万金难求,各互联网公司纷纷把数据统计、数据分析和数据挖掘的业务切换到分布式平台上。这几年眼看Hadoop还在不断迭代,Spark又异军突起,一举刷新了Hadoop保持的排序记录,以内存存储中间数据带来的性能优势和丰富的数据结构让人爱个不停,各种奇异的小bug和陡峭的学习曲线又让人打退堂鼓。那么,明眼人都知道Spark是未来的趋势(内存会越来越便宜),在主业务放在Hadoop的条件下,就可以适当把一些小模块切换到Spark上,同时留意Spark社区的发展。很快从Spark获得的性能收益就能把之前投入的学习时间挣回来。

第5个一点点:善用工具

善用工具可以分为4个层面:

我刚入行那会,一个计算机专业却当了公务员的朋友问我,你一点都没学过编程,平时怎么写代码?我说,谷歌,于是遭到无情的耻笑,以至于我在哪里的账号都叫2shou,告诫自己是一个无耻的二手程序员。这是一个笑话,但如果现在问我,我还是要回答谷歌。程序员的成长就像膨胀的圆饼,外面是无边无际的大海,圆饼越大,与大海接触的面也越大,懂的越多,不懂的越多,而计算机科学又是一门更新换代异常迅速的学科,同时也是知识互联网化最好的学科,很难利用传统的科班式有教有学的方法,相反通过搜索引擎则很容易获取到最新的知识。

不相信重复,大师的话叫DRY原则(Dont repeat yourself),代码写多了,会有人为的直觉判断好的和烂的代码,我的标准是简洁和规范,简洁并不是美感上的标准,重复越少,给自己出错的机会也越少,后期维护的成本也越少。

如果你不幸丢了三周前的代码,也许你能凭着过人的记忆力把脑子里残余的片段复写出来,但如果丢的是三个月前的代码,恐怕就没有那么好的运气了。理想的程序员会着力找寻有效的资料保存方式,把工作里灵光闪现写下的代码、脚本、配置、经验等短的片段保存起来,以便任何时候都能复查。

理想的程序员必须懒惰。对他们来说,重复的步骤和重复的代码一样丑陋,如果意识到一项工作有可能长期要重复,那么自动化的时间总是越早越好。

第6个一点点:管理时间

之所以管理时间会对程序员这个行当特别重要,是因为在完成任务时你必须像荒野里的狼一样,「独行」。没有外界约束的情况下还能稳定控制自己,保证能高效率地工作和学习,那么日积月累你肯定会变得比一般人厉害。

程序员干的是高强度的脑力活,一般每天集中4-5个小时应对本职工作就足够了,但工作之外,一定要安排时间用于学习。除了学习,留点时间放空自己也是必要的,利用泡茶或者喝咖啡的间隙,把弥足珍贵的时间留给自己,往前想往后想,事半功倍。

说了这么多,想必有人会问,费劲心思成为一个理想的程序员,又有什么用处?会有高薪吗?不。能升职吗?也不见得。迎娶白富美呢?不如去卖狗。 稻盛和夫曾经说过一个故事,明治时期的手艺人被天皇召见,虽然都是不读书的乡下人,但一辈子兢兢业业地做一件事情,自然有一股高贵的气质。理想的程序员,应该就是循着这种高贵的气质而去的吧。

更多精彩内容,欢迎关注微信公众号「极客思享」(codingcoffee)

如何确定自己是否适合做程序员?

如何确定自己是否适合做程序员?

【phodal的回答(39票)】:

程序员的基本能力是:Tasking和学习能力

当好程序员的能力是:用更好的方法来实现功能

Tasking和学习能力

虽然这看上去是一件很难的事,但是也不是一件很难的事。这也不依赖于你是否对某一个技术栈的理解,这只实际上只是学习能力的一种体现。

如何确定自己是否适合做程序员?

在扯这些废话之前,先让我们来看看我们是如何实现一个功能、应用的。这也是在Growth里提到的Tasking:

  1. 有一个明确的实现目标。
  2. 评估目标并将其拆解成任务(TODO)。
  3. 规划任务的步骤(TODO)
  4. 学习相关技能
  5. 执行Task,遇到难题就跳到第二步。

以本文的写作为例,细分上面的过程就是:

  1. 我有了一个中心思想——在某种意义上来说就是标题。
  2. 依据中心思考我将这篇文章分成了四小节。
  3. 然后我开始写四小节的内容。
  4. 直到完成。

而如果将其划分到一个编程任务,那么也是一样的:

  1. 我们想到做一个xxx的idea。
  2. 为了这个idea我们需要分成几步,或者几层设计。
  3. 对于每一步,我们应该做点什么
  4. 我们需要学习怎样的技能
  5. 集成每一步的代码,就有了我们的系统。

所以,实际上这并不是考验你技术能力的点,而是考验你如何划分任务和学习能力的点。在我不断地实现一个个系统的时候,最后我才意识到了这一点——学习能力和Tasking才是最重要的。换句话说,你现在学会什么并不重要,重要的是你以后有没有学习的能力。

有了一直想着过安逸的生活,所以就会安乐的死去。不过反正人生在世,自己开心就行,不要管别人怎么说。随后,我发现大部分我想到的都可以实现。

那么问题来了:

  1. 用铅笔写字也是写,用钢笔写字也是写,用电脑打字也是写——到底要用哪个工具来写。
  2. 用楷体来显示也是显示,用宋体显示也是显示——到底要怎样的实现。

这实际上就是:用更好的方法来实现功能。

用更好的方法来实现功能

对于这一步来说,有太多的东西值得去探索:

  1. 更好的架构
  2. 更好的工具
  3. 更好的语言
  4. 。。。

对于语言这一点上来说,Python和Ruby是两个不同的极端,不过看上Ruby是继承Perl的思想的基础上,就不多说了。Python,一个问题只有一个方法;Ruby,一个问题有几个方法。因而在这两个语言来,想要快感就用Ruby,还有近年来流行的Scala。想要便捷就是Python,不容易出现别的问题。

而这些只是我得到的结论,每个人都会得到不同听结论的。因而,探索是一件很有意思的事~~,如图:

如何确定自己是否适合做程序员?

所以实际上,这一步是去探索一个更广阔的天空。我们需要知道不同的语言和技术栈的一些优势,了解并知道如何去应用即可。

如,以前我用的是Django的RESTful方案Tastypie管理来解决问题。后来,又发现了Django REST Framework,又用它实现了原来的逻辑。大四时,我发现PHP语言中的Laravel在RESTful这件事情上,似乎很有表现力,并且更容易“部署”——LNMP。接着实习时,发现Java在部署上更不错,它只需要一个Java包。而这个过程,只是出自于部署方面来考虑问题的。

即使现在我是一个使用Node.js的人,我还是觉得Java的打包就是优势。

在探索的过程中,我们就知道挖掘技术哪家强

【SimonS的回答(104票)】:

当我还在婴儿,刚学会抓东西的时候。

爸妈会拍一段录像,我憨厚地在床上爬着、翻滚着。

床上会陆续摆着一些东西,我记得在录像带里,有一张百元大钞、一盒香烟、一块手表、一条金项链、一本书、一盒磁带和一个计算器。

没错,我看见我毫不犹豫地抓起了计算器。

你以为这样就结束了?

我妈拿起了百元大钞,塞到我手里,被我无情地扔了。

我继续摆弄着手里计算器。

舅舅从烟盒里抽出一根烟,硬是塞到我嘴里,未遂。

我继续摆弄着手里计算器。

外婆拿起金项链在我面前晃荡,我抓了一下下,就不理了。

我继续摆弄着手里计算器。

……

我爸仿佛看见了胜利,因为这些摊着的东西,是他们自己拿出来调戏我的,我也不知道他们在那时有没有押什么筹码。

大概是我妈看见了我爸嘚瑟的笑容,一把夺走了我手里的计算器。

我TM……哭了。

我爸就把我抱了起来,把计算器塞回了我手里哄我开心。

我TM……笑了。

所以说,不是三岁看老,三个月就能看老了。

===========================================================

在百度搜了好几页才搜到那个计算器的图,因为那计算器在家里用了好久,还是挺有印象的。

大概就是长这样的:

如何确定自己是否适合做程序员?

如果不想让你孩子成为码农的话,最好让这些有魔性的东西离他们远一点。(比如归零

【毛文强的回答(1842票)】:

看完了大部分回答,不禁有一种知乎药丸的赶脚,这么好的问题居然罕有很理性的讨论分析,看来知乎已经是段子手和机灵鬼的天下了。

虽然我也觉得有些机灵抖得很精妙,但是作为一个还有点责任感的小V,还是要来点干货的。

----------------------------------干货分界线-----------------------------

身为创业者,带过技术团队,也曾经阅猿无数。 @aidy liu 的答案给了我一些启发,来分享下。

程序猿最重要的能力是什么?

解决问题的能力!这个很多IT从业者都是赞同的,应该没有太大异议。

那么如何从“解决问题”的角度看自己是否适合做程序猿呢?

我认为有两大标准可以用来衡量——“探索精神”和“逻辑思维”

1 探索精神

探索精神从宏观角度上讲是人类文明不断进步的源泉;具体到每个个体,则是个人成长的动力。一个人从呱呱坠地起,对未知的世界总是充满好奇,从雨雪冰霜的物质转换到喜怒哀乐的情感变化,都会激发探索精神。而这其中,适合做程序猿的这一批人,是对“物体运行原理”具有探索精神的人。这里的“物体”既包括电子设备的软硬件,也包括机械、化工、生物等学科的研究对象。

在创业之初,我们没有那么多资金找更多技术大牛,甚至技术熟手,过来面试的大多数都是没有工作经验的应届生。所以我衡量的标准只能是潜力——是否值得培养。除了基础的编程知识外,我常会跟面试者们聊这些问题:

有没有自己搭过一个网站?

有没有学习过一些最新的技术?

你的电脑配置如何?cpu是哪个型号,内存多大?

有没有拆开过电脑?

手机是iOS还是Android?

iOS怎么删除应用,怎么禁止应用联网?

Android root过吗?root过之后为什么安全性会降低?

如果是机械相关行业的,我还会聊:

汽车是如何启动的?

公交车的折叠门是怎么实现的?

变速自行车是怎么变速的?

另外,游戏玩不玩,玩的好坏也可以作为参考哦~

如果面试者带了电脑,我也会看一下他常用的软件:

用IE的,呵呵~

有梯子的,不错~

github,有为~

百度全家桶,这个……

这种衡量方式,从我们的实践效果来看还是不错的。我们公司的技术骨干基本都是自己培养起来的,而且有一半并不是科班出身。

就像踢球有球感,说话有语感一样,我们公司称“程序猿”有一种神秘的力量——码感。

安装一个新软件,不需要看说明书,随便点点就会了。

电脑出问题了,google一下,随手点点就解决了。

面对黑漆漆的linux窗口,命令在手中滑出,根本停不下来。

对“物体运行原理”的探索精神让你有机会获取到“码感”这种神秘力量,编程自然不在话下。有了这种探索精神,你就有了成为一个程序猿的基础。

2 逻辑思维

逻辑思维是一种理性认知的思维方式。

有时候我们读一本书,洋洋洒洒不知所云,合上书后很难有条理地说出这本书的脉络;

我们读另一本书,读罢仍意犹未尽,书中所讲层次清晰,我们很容易在大脑中建立书中所讲的立体知识框架;

有时候我们听人讲话,滔滔不绝口若悬河,好像塞了满脑子词语,却没有重点。

我们听另一个人讲话,朴实无华,但是感觉始终围绕在一根主线,一旦偏离过远就会被拉回来。

这是我所理解的逻辑思维能力高低的表现。没有一定的逻辑思维,基本上只能做软件流水线上的装配工人。将各种开源、破解的软件组件集成起来实现一定的功能。而优秀的程序猿所用到的算法、架构知识,无一不是需要良好的逻辑思维能力的。逻辑思维能力可以是先天具备,也可以是后天培养。衡量逻辑思维能力的一个可靠参考便是数学思维。很多国外的计算机专家都有数学专业学位也就不足为奇了。

在面试技术岗位的时候,对于逻辑思维能力,我通常都是直接让面试者口述或者手写算法。举个最常用的例子——递归:

1 能举出面对面的两面镜子等例子,算是对递归的基本理解。

2 能从栈的角度理解递归,说明课程上学的还不错。

3 能从一个问题中提取出具有相似性的功能,并抽象出递归函数,说明逻辑思维能力优秀。

探索精神决定了你是否可以成为一名合格的程序猿,决定了程序猿门槛的高度。

逻辑思维决定了你是否可以成为一名优秀的程序猿,决定了程序猿天花板的高度。

说了这么多,最后我想说,知乎上像我这么有点责任感的小V不多了,赶紧点赞加关注,支持下呗!

---------------------关于评论--------------------------

虽然赞数还远远比不上抖机灵的几个回答,但是针对几个评论还是统一回复下:

1 数学不好,怎么当好程序猿。

数学的逻辑思维是成为一个优秀乃至顶尖程序猿的必备条件,但是并不是人人都有机会成为优秀程序猿的。可能80%的人都只是合格的程序猿,那么只要具备了探索的精神,肯花费时间去学习,也是可以成为合格的程序猿的,只是说这样的程序猿在发展到一定阶段会遇到瓶颈,而这个瓶颈需要数学基础来突破的。而且如果我们不涉及到人工智能等“数学密集”型编程领域,所用到的数学只是也不会特别高深,高中知识基本能满足大部分需求了。

2 对于一条评论的解释。

亲爱的小V同志, 你的答案很有意思, 也给了大家不少启发和感慨.

但这个问题毕竟是在讨论什么样的人才是好的程序员, 而不是在讨论什么样的人是一家创业中的科技公司的好员工. 如果是后者, 我会给你点赞同的. 但我们在讨论的是前者, 所以我不同意你说的探索精神那一部分.

程序员有很多种, 但能说得上好的, 总结起来无非就是两方面的能力出众: 分析问题的能力, 和解决问题的能力. 从这两点上出发, 并没有要求程序员一定要有出众的探索精神, 我认识有很多很不错的程序员, 他们不会翻墙, 还是用IE; 不懂电脑配置是什么鬼, 不知道自己的手机要怎么root. 他们就是那些对"事物的运行原理"漠不关心的哪一类人, 但是这不能说明他们不是一个合格的程序员. 他们有些人是只会专注一个方面的内容, 或者说白了, 程序员对他们来说, 仅仅只是一份工作而已, 在工作中他们可以做到认真敬业, 但和工作无关的东西, 他们并不想去了解. 或者他们不合适去你们这样的公司, 但我们不能否认他们也是优秀的程序员. 事实上, 我们很多台湾和欧美的同僚们, 即使成为了业界的大牛, 却依然不会修电脑, 每次都要IT部门的人帮忙, 没有那么多奇奇怪怪的理由, 只是因为没必要.而且, 这个世界很大, 不是只有计算机的那点事.

我在这里写的这样, 可能会引起你的反感, 对此我深感抱歉, 但我并没有任何恶意. 我只是觉得你的答案会让一部分人对我们这个行业有误解, 所以我要把一些事实说出来, 仅此而已.

这是本回答下的一次评论,我解释一下:解决问题的能力是非常重要的,我在回答的开始也提出了。但是只回答“解决问题的能力”在判断是否适合做程序员这个问题上并没有太多指导意义。不只程序员需要解决问题的能力,市场拓展、PR公关、医生很多职业都需要解决问题的能力。而我试图将“解决问题的能力”这种很抽象的说法具体化,找到可以判定“解决问题能力”大小的衡量标准。

一般来说,对于程序员,解决问题的能力指的是把实际问题进行计算机建模和抽象的能力。

建模和抽象的前提是对问题有充分的理解。这需要一定的探索精神去挖掘问题的运行原理。老板对程序员说我要开发一个电商网站,程序员总要去探索一个电商网站的运行原理并把运行逻辑研究清楚,否则代码漏洞很多,网站千疮百孔,这就是不合格的程序员的作品。探索精神还体现在语言、工具的选择运用上,python是会用了,但是不懂其基本运行原理不懂其性能限制,我认为作为程序员也是不合格的。

建模和抽象的过程需要有一定的数学基础和逻辑思维。堆栈的数据结构搞不清楚、逻辑判断的时候或且非的组合搞不明白,在写过的代码中会藏有很多隐患。一些很难调的bug很容易产生。

所以,我用探索精神和逻辑思维来作为”解决问题的能力“的衡量标准。

对于只是把编程当成工作的程序员,可以对编程没有兴趣,也可以不去研究框架的架构,但是同样需要去深入探索需要解决的问题,探索寻找最佳的解决方案。程序员也不必要都会翻墙、会root、懂电脑配置……但是这些都表现了一个人不怕接触陌生事物,是一个人具有探索精神的表现。对陌生事物的恐惧是程序员的天敌。

3 公司招人问题

有很多评论提到我们公司的招人问题,有兴趣的可以私信我~

看了我的答案,大家觉得能有点启发,我就心满意足了;

如果能点个赞,我就万分感激了;

如果还能加个关注,我就有动力不断输出高质量的内容了~

【乔小树的回答(44票)】:

是否抱着一种愿意终生学习的人生态度。

【Haojun的回答(6089票)】:

你老婆对你说:“老公,晚上回来买一个西瓜,如果看到西红柿,就买两个。”

如果你晚上买了一个西瓜和两个西红柿回来的话,说明你不适合当程序员。

如果你晚上只买了两个西瓜回来的话,说明你适合当程序员,但是

。。。

。。。

。。。

。。。

。。。

。。。

。。。

你应该不会有老婆。

=========华丽丽的分割线===========

你们这群程序员也是够了,一直在吵应该买几个西瓜,你们这么吊你们老婆知道吗?还有很多有经验的程序猿说应该反复确认用户需求的,你们确定你们都能找的到老婆?

我听到需求时心里运行的代码如下:

int 到底买点啥 ( ) {

// 所有把大括号放到这一行的人都去屎!

int 西瓜的数量 = 1;

if (看到了西红柿) {

// 注意大括号的位置

西瓜的数量 = 2;

}

return 西瓜的数量;

}

// 尼玛,为什么没有缩进!!!!

那么什么时候该买三个西瓜呢?我们重现一下场景:

你老婆对你说:“傻X,晚上回来买一个西瓜,如果看到西红柿,就买两个。这次你要是还买两个西瓜回来,我就一辈子都不理你了!”

你仔细揣测了一下她的需求,发现了这个关键的“再”字!哈哈哈,这种战斗力只有5的渣题怎能难倒我这种top coder!你晚上开开心心地买了三个西瓜回来,跪碎了新买的HHKB pro,老婆还是摔门而去,拦都拦不住!

这次你运行的代码如下:

int 到底买点啥 ( ) {

// 所有把大括号放到这一行的人都去屎!

int 西瓜的数量 = 1;

if (看到了西红柿) {

// 注意大括号的位置

西瓜的数量 += 2;

}

return 西瓜的数量;

}

就让这三个西瓜陪你过下半辈子吧!!!!

【王珂欣的回答(246票)】:

谢邀,直接敲代码就行。

怎么知道自己是否喜欢素描?怎么知道自己是否喜欢唱歌?这答案应该不需要问别人吧。

有挺多妹子私信问过我这个问题,但是她们的特点是:都还没起步。还没开始敲几行代码,就开始担心以后的职业稳定性,收入,适不适合女生等等问题。

这问题其实你自己敲段时间就有答案了,别浮躁。对我而言,看到自己做出的东西能有种正向激励所以就一直自学下去了。

题主加油。

【scott.cgi的回答(14票)】:

编程的时候很开心,觉得时间过的很快,停不下来。

总是知道下一步要做什么,要学什么,要实现什么。

关于编程有说不完的想法,和闪闪发亮的计划。

对待代码细致入微,有癖好,有固执的坚持,完美主义。

从写的第一行代码,到现在,到未来,

所有的写过的,正在写的,和即将写的,

那些零碎的,散乱的,还是整洁的,有条理的,不同角度和功能的,

都是一个在不断进化的整体与你思维交流,不断的融合与发展和进步。

那么,编程这个工作,就是你的天职。

我认为这是一种适合,其它情况和别的工作都一样,都只是养家糊口的工作。

原文地址:知乎

您可能还会对这些文章感兴趣!

最新评论文章

热门标签