程序员

一个程序员的顿悟

怎甘沉沦 提交于 2020-02-12 00:27:05
从某群里分享的,虽然不知来自哪位大神,分享一下吧。   我算是靠坑蒙拐骗进了程序员的门,然后一路狂奔。26 岁之前几乎没有任何写代码的经验,研究生毕业却意外选择了一家不可能提供培训的初创公司,在每日担忧公司倒闭、害怕被炒鱿鱼以及同事冷落白眼的三重压力下逆流而上,一年半后离职,已是拥有 500 万用户产品的后台主程。从前我对计算机技术心怀畏惧,认定技术高人一定有佛光笼罩,昼夜不息运键如飞日吐代码上万行。现在也算见过一些世面了,回首那段忐忑不安宛如初夜的过程,我却不发觉有任何的励志意味,而是视为一种理所当然。理想的程序员,和理想的建筑师、理想的财务师、理想的按摩师没有任何的差别,他们本质上都是一群手艺人。我相信理想的程序员人人皆可成为。   近三年总在互联网圈厮混,我认识过一些程序员,共事过一些程序员,领导过一些程序员,又面试过一些程序员。他们学历不同,有的来自北大,有的来自北大青鸟,有的是博士,有的是高中肄业;资历也不同,有的来自 BAT,有的来自某破产基金公司(还是一个销售);年限也从 0 到 15 年不等。但我认为程序员只需分三类:天才的程序员、理想的程序员、平庸的程序员。天才的程序员我只敢说接触过 3 个,这是天命。7 分由你是颗精子的时候就已决定,拥有绝佳的数学天赋、冷静致密的逻辑、为解决难题宁愿不眠不休而深以为乐的技术热情;3 分来自起步要早早早

最牛的编码套路

会有一股神秘感。 提交于 2020-02-11 22:09:59
最近,我大量阅读了Steve Yegge的文章。其中有一篇叫“ Practicing Programming ”(练习编程),写成于2005年,读后令我惊讶不已: 与你所相信的恰恰相反,单纯地每天埋头于工作并不能算是真正意义上的锻炼——参加会议并不能锻炼你的人际交往能力;回复邮件并不能提高你的打字水平。你必须定期留出时间,集中锻炼,这样才能把事情做得更好。 我认识很多杰出的程序员——这是在亚马逊工作最好的额外“福利”之一。如果仔细观察他们,你会发现他们时时都在锻炼。他们已经很优秀了,但他们仍然不忘锻炼。他们锻炼的方法林林总总,而我在这篇文章中只会介绍其中的几种。 据我了解,这些杰出程序员之所以如此成功,就是因为他们一直在锻炼。完美的身材要靠定期的锻炼才能获得,而且必须坚持锻炼才能保持,否则身材就会走形。对于编程和软件工程来说,道理是一样的。 这是一个重要的区别——我每天都开车去上班,但我的驾驶水平远远不如专业车手;类似的情况,天天编程可能并不足以使你成为一名专业的程序员。那么,什么才能把一个普通人变成一名专业车手或者专业程序员呢?你需要锻炼什么呢? 答案就在《科学美国人》的一篇名为“The Expert Mind”(专家思维)的文章里: 爱立信提出,重要的并不是经验本身,而是“努力的学习”,也就是要不断地挑战自身能力之外的东西。一些狂热的爱好者花费了大量的时间去下棋

10倍程序员工作法

心已入冬 提交于 2020-02-11 21:47:46
开篇的灵魂拷问: 我现在的水平 我要到达的水平 我该怎么做? 现在的水平:菜,贼菜,巨菜 要达到的水平:阐述一件自己平常的事情,旁人听来却像在吹牛* 该怎么做:睡觉。(梦里实现)。手动狗头hhhh 正经点,所谓的10x程序员,是说大佬程序成的工作效率是普通程序员的10倍。 也许有点夸张,但是重点思想是没错的,效率高效与否,最后结果真的差别很大。读过两本讲工作效率的事情,整体提高工作效率的方法总结起来都是一致的: 1、制定目标 2、分解目标 3、保证执行 1、以始为终 10x程序员专栏提出的一个理念是 以始为终 , 什么意思呢?就是说呀,在事情一开始就想好事情结束的评判标准,也就是指定目标,并且制定好目标完成的标准。 对于一件事情的结束,每个人可能有不同的理解,比如一个需求的完成,我觉得是开发完成就算完成了,然而老大看到的完成是上线完成。 所以,一件事情的结束需要在一开始,在事情开始做之前就要制定好,就像是百米赛跑一样,起点和终点一定是事前测量好的,一定是扯上红布条的,哪能终点在哪都不知道,就开始跑呢? 相对来说,一个可衡量的目标也让人在整个事情完成的过程中是清楚的,清楚自己的进度条,这是一件非常棒的事情。(比如,为什么很多男生追女生,追了一段时间就放弃了?女生也许会想,哎呀 你再坚持一下啊,你再坚持两天,我就同意了。 然而,我连终点在哪都不知道

理想的程序员

梦想与她 提交于 2020-02-11 18:00:32
第1点:专注眼下 见过太多心猿意马的程序员,我不得不把「专注眼下」作为天字第一条。他们往往有各式各样的小梦想,比如做个小茶农、做个小鹅贩、做产品、做销售、做投资,却被程序员的高薪或是没有转行的魄力「耽误」了,而因为不专注,他们不在意做好自己的本分,不在意锤炼自己的技能,不在意学习新兴的技术。不可否认,这世界上存在着伟大的产品(像乔老爷)、伟大的销售(像埃里森)、伟大的投资客(像彼得菲),而他们毫无例外都是程序员出身。可你听说过巴菲特评价盖茨的话么,比尔盖茨如果转行去卖狗,那他一定是全世界最大的狗贩。我坚信除了少数的天才外,冥冥众生均可以在多个领域取得成功,只要保持足够的专注。而哪怕你下一年就想卖狗去,程序员的经验仍然能训练你强大的逻辑、谨慎和耐心,放在哪个行业都是相当可观的竞争力。 第2点:思考力与推动力 我认为处理bug、崩溃、调优、入侵等突发事件比编程本身更能体现平庸程序员与理想程序员的差距。当面对一个未知的问题时,如何定位复杂条件下的核心问题、如何抽丝剥茧地分析问题的潜在原因、如何排除干扰还原一个最小的可验证场景、如何抓住关键数据验证自己的猜测与实验,都是体现程序员思考力的最好场景。是的,在衡量理想程序员的标准上,思考力比经验更加重要。 有时候小伙伴跑过来,问我「提交了一个任务被卡住了,怎么办」的时候,我总觉得他可以做得更好。比如,可以检查试验别的任务,以排除代码自身的原因

一个程序员的顿悟:理想的程序员只比你多了6个一点点

和自甴很熟 提交于 2020-02-11 17:59:45
一个程序员的顿悟:理想的程序员只比你多了6个一点点 作者:Sandy 原文链接:http://mdsa.51cto.com/art/201511/496267.htm#topx 分类 程序员人生 我算是靠坑蒙拐骗进了程序员的门,然后一路狂奔。26岁之前几乎没有任何写代码的经验,研究生毕业却意外选择了一家不可能提供培训的初创公司,在每日担忧公司倒闭、害怕被炒鱿鱼以及同事冷落白眼的三重压力下逆流而上,一年半后离职,已是拥有 500万用户产品的后台主程。从前我对计算机技术心怀畏惧,认定技术高人一定有佛光笼罩,昼夜不息运键如飞日吐代码上万行。现在也算见过一些世面了,回首那段忐忑不安宛如初夜的过程,我却不发觉有任何的励志意味,而是视为一种理所当然。理想的程序员,和理想的建筑师、理想的财务师、理想的按摩师没有任何的差别,他们本质上都是一群手艺人。我相信理想的程序员人人皆可成为。 近三年总在互联网圈厮混,我认识过一些程序员,共事过一些程序员,领导过一些程序员,又面试过一些程序员。他们学历不同,有的来自北大,有的来自培训机构,有的是博士,有的是高中肄业;资历也不同,有的来自BAT,有的来自某破产基金公司(还是一个销售);年限也从 0 到 15年不等。但我认为程序员只需分三类:天才的程序员、理想的程序员、平庸的程序员。天才的程序员我只敢说接触过 3 个,这是天命。7分由你是颗精子的时候就已决定

理想的程序员

谁说我不能喝 提交于 2020-02-11 17:59:30
第1个一点点:专注眼下 见过太多心猿意马的程序员,我不得不把「专注眼下」作为天字第一条。他们往往有各式各样的小梦想,比如做个小茶农、做个小鹅贩、做产品、做销售、做投资,却被程序员的高薪或是没有转行的魄力「耽误」了,而因为不专注,他们不在意做好自己的本分,不在意锤炼自己的技能,不在意学习新兴的技术。不可否认,这世界上存在着伟大的产品(像乔老爷)、伟大的销售(像埃里森)、伟大的投资客(像彼得菲),而他们毫无例外都是程序员出身。可你听说过巴菲特评价盖茨的话么,比尔盖茨如果转行去卖狗,那他一定是全世界最大的狗贩。我坚信除了少数的天才外,冥冥众生均可以在多个领域取得成功,只要保持足够的专注。而哪怕你下一年就想卖狗去,程序员的经验仍然能训练你强大的逻辑、谨慎和耐心,放在哪个行业都是相当可观的竞争力。 第2个一点点:思考力与推动力 我认为处理bug、崩溃、调优、入侵等突发事件比编程本身更能体现平庸程序员与理想程序员的差距。当面对一个未知的问题时,如何定位复杂条件下的核心问题、如何抽丝剥茧地分析问题的潜在原因、如何排除干扰还原一个最小的可验证场景、如何抓住关键数据验证自己的猜测与实验,都是体现程序员思考力的最好场景。是的,在衡量理想程序员的标准上,思考力比经验更加重要。 有时候小伙伴跑过来,问我「提交了一个任务被卡住了,怎么办」的时候,我总觉得他可以做得更好。比如,可以检查试验别的任务

论理想的程序员

纵饮孤独 提交于 2020-02-11 17:58:48
理想的程序员心眼儿不坏(他们从来都不是办公室政治的宠儿,是一群单纯明亮快乐的手艺人),有天真烂漫的好奇心(他们的眼睛里经常闪着「哇,这个是怎么做到的!」),永远精益求精(他们的口头禅是「我再研究一下」),还乐于分享(他们活跃于GitHub、各大问答社区和你的身边,舍得将宝贵时间用于帮助新手)。是的,他们不需要被管理,只需要给一个大的方向,总能回报以意想不到的结果。 理想的程序员与平庸的程序员只有一墙之隔。两者的差距只有6个一点点,而人与人的差距,正是在这日积月累的一点点中,被永远拉开了。有意思的是,我发现这6个一点点都和意识有关,也就是程序员和其他一切新兴产业的工种一样,只需要意识加上时间的锤炼,人人皆可达到理想的阶段。理想的程序员必然也是一个优秀的problem solver。 第 1 个一点点:专注眼下 见过太多心猿意马的程序员,我不得不把「专注眼下」作为天字第一条。他们往往有各式各样的小梦想,比如做个小茶农、做个小鹅贩、做产品、做销售、做投资,却被程序员的高薪或是没有转行的魄力「耽误」了,而因为不专注,他们不在意做好自己的本分,不在意锤炼自己的技能,不在意学习新兴的技术。不可否认,这世界上存在着伟大的产品(像乔老爷)、伟大的销售(像埃里森)、伟大的投资客(像彼得菲),而他们毫无例外都是程序员出身。可你听说过巴菲特评价盖茨的话么,比尔盖茨如果转行去卖狗

一篇精彩的洗地文

拥有回忆 提交于 2020-02-11 16:06:19
写在前面 前段时间读了一篇知乎帖子,相当精彩。后来研究了帖子的始末,发现更加精彩。在这里分享给大家。 长文预警!这篇文章相当长。但是也相当精彩。剧情反转超乎想象。有兴趣的请耐心观看。 知乎提问 先说问题的来源。问题的来源是一条知乎的提问, 为什么有些大公司技术弱爆了? 。 为了方便大家阅读,我转载到这里。 提问原文 今年年初,到一家互联网公司实习,该公司是国内行业龙头。 不过技术和管理方面,却弱爆了。 那里的程序员,每天都在看邮件,查问题工单。 这些问题,多半是他们设计不当,造成的。 代码写的一团糟,全是复制粘贴,连作者都没改,大家普遍不写注释,也不格式化,代码歪歪扭扭。 一个项目里,httpclient竟然出现了四种。 一种是该公司研发部写的, 一种是老版本的开源项目, 一种是新版本的开源项目, 还有一种是开发人员造的轮子。 打接口请求响应日志,竟然不知道用拦截器。 打错误日志竟然不打上下文信息,每个人一种日志风格,千奇百怪。 许多重要的中间流程,居然不打日志。 idea、eclipse、myeclipse的配置文件竟然全部传到项目里去了。 该公司混了两年的程序员,跟快递公司做查询接口,竟然不知道加密运单号。 所有服务间通讯,都没有设requestId,导致跟踪会话很困难。 一个没什么qps的边缘接口,居然做消费者生产者+阻塞队列的异步模式。 显得你技术少是不是。

分享开发经验,浅谈个人发展经历,明确自己发展方向

泄露秘密 提交于 2020-02-11 11:53:17
在中国有很多人都认为IT行为是吃青春饭的,如果过了30岁就很难有机会再发展下去!其实现实并不是这样子的,在下从事.NET及JAVA方面的开发的也有8年的时间了,在这里在下想凭借自己的亲身经历,与大家一起探讨一下。 明确入行的目的 很多人干IT这一行都冲着“收入高”这一点的,因为只要学会一点HTML、DIV+CSS,要做一个页面开发人员并不是一件难事,而且做一个页面开发人员更容易找到工作,收入比普通的工作还要高一些,所以成为了很多高校毕业生的选择。如果您只是抱着这样一个心态来入行的话,那阁下可真的要小心。因为干IT这一行竞争本来就比较激烈,特别是页面设计这方面,能够开发的人很多,所以为了节省成本在大部分公司都会在需要的时候才招聘这类人员,在没有订单的时候一些小公司还可能找各类的借口或者以降薪的手段去开除这类员工。而在招聘信息上常常会看到“招聘页面设计师,条件:30岁以下……欢迎应界毕业生前来应聘”这样一条,因为这一类工员对技术上的要求并不高,找应界生可以节约成本。所以在下觉得“IT行业是吃青春饭的”这句话只是对着以上这类人所说的,如果阁下缺乏“进取之心”,而只抱着“收入高,容易找工作”这样的态度而入行,那“IT行业是吃青春饭”将会应验了。 选择合适的工具 JAVA、C#、PHP、C++、VB……10多种热门的开发语言,哪一种最有发展潜力呢?其实开发语言只不过是一个工具,“与其分散进攻

黑马程序员 - 对象 继承

隐身守侯 提交于 2020-02-11 11:52:00
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 面对对象 如何理解面向对象?   面向过程:强调的是功能行为。   面向对象:将功能封装进对象,情调对象说具备的功能。   面向对象是基于面向过程的。 类和对象的关系   现实生活中的对象:张三李四   想要描述:提取对象中共性内容,对具体的抽象。   描述时:这些对象的共性有:姓名,年龄,性别,学习java功能。   映射到java中,描述就是class定义的类,具体对象就是堆内存中用new建立的实体。 类:对现实生活中事物的描述。 对象:实实在在存在的类的个体。 匿名对象:   匿名对象使用方法一:当对对象方法只调用一次时,可以用匿名对象来完成,这样比较简化。   匿名对象使用方法二:可以将匿名对象作为实际参数进行传递。 面向对象三大特征:封装,继承,多态 封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。 优点:   将变化隔离   便于使用   提高重用性   提高安全性 封装原则:   将不需要对外提供的内容都隐藏起来   把属性都隐藏,提供公共方法对其访问 继承:   1.提高代码复用性   2.让类与类之间产生关系,有了这个关系,才有了多态的特性   3.打破流封装性。   注意:不能为了获取其他类的功能,简化代码而继承