程序员

太难了,程序员死活找不到的bug,原因竟是“它”

坚强是说给别人听的谎言 提交于 2020-01-20 08:14:04
程序员在工作的时候,总是避免不了与bug的相爱相杀,他们之间闹出的笑话也是接连不断,作为一个资深的程序员,今天带大家认识一下这些年,“我们”的相爱相杀。 我们经历的大部分bug有的被其他人修复了并且在互联网分享出来了,这时候我们通过Stackoverflow、Baidu、Google等搜索引擎找到答案了。但是我们在工作中也可能会遇到一些疑难的bug,这里bug我们在搜素引擎上找不到解决方案,可能好几天都不得其解,这些迟迟没有解决的bug往往搞得人焦头烂额。 有一次写JS,自己手机没电了,拿同事老张的安卓机调试,很简单的获取用户微信昵称,结果死活获取不到,一直显示为null。应该是跨平台问题,因为之前在自己iPhone上是没有bug的,拼命看api文档,但是都没提到这方面。急死我了。…刚刚老张告诉我他的昵称就是null。…老张已被打死…前面夸张修辞,老张最后当然没死,腿打断了而已。 之前我是个系统管理员,平时去机房登录服务器时都是站着操作。有一次腰疼,搬了个凳子坐在了机器前面,完蛋,死活登录不进去,提示密码错误。于是我站了起来,重新输入了一次密码,进去了。后来我觉得奇怪,于是抽时间做了测试,发现:只要一坐下,就密码错误,站起来就好了。这个 Bug 在我的职业生涯中持续了好几年,一直以为是什么灵异事件。直到有一天公司升级设备给我换了个键盘。原来是老键盘上有两个键装反了

编程巨星的唯一秘诀

≡放荡痞女 提交于 2020-01-20 00:07:35
别以为是那些软件开发定律,别以为是开发出那些特殊用途的软件,别以为是软件设计技术本身。只有一条真理决定了一个软件程序员的成功还是失败。由于坚持这个真理,一个资深的程序员能在一天的时间里学会一门新的编程语言,而由于不坚持这条真理,一个初级的程序员用十年时间也只能挣到一份糊口的钱、永远是来实现别人的设计、永远不够优秀而得不到晋升的机会。这条真理让你看清了差的程序员和好的程序员的不同之处,好的程序员和伟大的程序员的不同之处,伟大的程序员和能通过自己的技术创造出一个亿万美元价值的程序帝国的超级程序员的不同之处。 不是什么复杂的道理,不是什么难懂的理论。不是具有什么天赋或“编程超能力“才能做到的事情。最终成为的是一个优秀的程序员还是一个很烂的程序员,这跟你的出身一点关系都没有。 而真正的原因只有一个,唯一的一个: 对所做的事情的理解越深,你就会做的越好。 超级程序员跟那些平庸的、一般的程序员比起来,对自己要做的事情的理解要深的多的多。这就是原因。 要想成为一名出色的程序员,你所要做的就是完全的理解要在做的事情。 有人会说,该知道的我都知道了。而对说这话的人的验证就是看他们能有应用他们知道的知识的能力。是否他能够构造出完美的系统架构,让人们能轻松的维护?是否他能在不皱眉头的情况下把一个普通程序员毫无可能解决的问题轻松解决掉?是否他能在被询问时能用最简单的概念把任何问题都阐述明白?如果能够

如果你热爱编码,就应该少写代码

筅森魡賤 提交于 2020-01-19 14:25:26
“如果你喜欢一个人,就应该尽量少说那些甜言蜜语。”不知道大家是否听过某些恋爱专家的肺腑之言。对于程序员来说,如果你热爱编码,那么我也劝你:“能少写一行代码就尽量少写一行。” 可能有些同学觉得这话听起来有点玄乎:“代码写得少,不就意味着缺乏实战经验吗?那我何年何月才能进一线大厂,成为真正的大神呢?” 如果你要这么理解的话,我就必须要纠正你一下。我表达的意思是这样的,来通过两行简短的代码表情达意吧。 if (str == null || "" .equals(str)) {} if (StringUtils.isEmpty()) {} 就上面这两行代码来说,我的第一选择是使用第二行代码来进行判空操作,因为它的代码量更少——简洁明了,也更不容易出错。 如果我们程序员没有这种(写更少代码的)追求的话,那我们的编程技艺就只会原地踏步,长此以往的后果就是各种避免重复造轮子的第三方类库就不会出现。 就判空操作来说, str == null || "".equals(str) 已经干得非常漂亮了(null 和空字符串都考虑在内了),但性能仍然有待优化,可以使用更高效的 str == null || str.length() == 0 来替代。为什么这么说呢? 因为 Sting 类的 equals() 方法本身是很沉重的,其源码如下所示。 public boolean equals (Object

十年学会程序设计

廉价感情. 提交于 2020-01-19 13:24:53
这里分享一篇 Peter Norvig的 《十年学会程序设计》 (Peter Norvig 系Google研究院主任、美国计算机协会(ACM)资深会员(Fellow))。全文如下: 十年学会程序设计 Peter Norvig (Copyright 2001) 原文网址 为何大家如此匆忙? 走进任何一家书店,你会看到书架上一排不见尽头的放着如 <7天自学Java语言> 以及几天或者几小时学会Windows, 因特网或者Visual Basic 这类书。我在 Amazon 网上书店用一下的方式进行 高级搜索 : 出版年份: 1992以后 书名包括:“天” 和 “学习” 或 “自学” 得到了268条搜索结果,其中前78条都是计算机书(第79条是 30天学会孟加拉语 )。 我用 “ 小时 ” 代替“天” 作为关键字,得到了神奇般类似的结果:这次有253本书,前77本是计算机书, 第78本是 24小时自学语法和写作风格 。排名前200的书中有96%是计算机书。 由此可见,人们要不就是急着想学会计算机,要不就是计算机相比于其他事情太容易学会了。比如说把,没有书是写在几天弹奏贝多芬或几天学会量子物理,甚至也没有几天学会帮小狗打扮这样的书。 让我们分析一下 三天学会Pascal语言 [英文网页] 这样的标题表达了什么意思: 学会: 在 三天内,你没有时间去写几个有意义的程序

如果你热爱编码,就应该少写代码

断了今生、忘了曾经 提交于 2020-01-19 09:09:02
“如果你喜欢一个人,就应该尽量少说那些甜言蜜语。”不知道大家是否听过某些恋爱专家的肺腑之言。对于程序员来说,如果你热爱编码,那么我也劝你:“能少写一行代码就尽量少写一行。” 可能有些同学觉得这话听起来有点玄乎:“代码写得少,不就意味着缺乏实战经验吗?那我何年何月才能进一线大厂,成为真正的大神呢?” 如果你要这么理解的话,我就必须要纠正你一下。我表达的意思是这样的,来通过两行简短的代码表情达意吧。 if (str == null || "".equals(str)) {}if (StringUtils.isEmpty()) {} 就上面这两行代码来说,我的第一选择是使用第二行代码来进行判空操作,因为它的代码量更少——简洁明了,也更不容易出错。 如果我们程序员没有这种(写更少代码的)追求的话,那我们的编程技艺就只会原地踏步,长此以往的后果就是各种避免重复造轮子的第三方类库就不会出现。 就判空操作来说, str == null || "".equals(str) 已经干得非常漂亮了(null 和空字符串都考虑在内了),但性能仍然有待优化,可以使用更高效的 str == null || str.length() == 0 来替代。为什么这么说呢? 因为 Sting 类的 equals() 方法 本身是很沉重的,其源码如下所示。 public boolean equals(Object

开发者不可不知的PHP框架深度解析

假如想象 提交于 2020-01-19 08:03:05
开发者不可不知的PHP框架深度解析 PHP成为世界上最流行的脚本语言有许多原因:灵活性,易用性等等。但通常只用PHP或者其他语言编码就会显得单调、重复,这时候就需要一个PHP框架来代替程序员完成那些重复不变的部分。本文通过回答What, When, Why 以及 Which这些问题,将对PHP框架进行全面解析。 PHP框架是什么? PHP框架提供了一个用以构建web应用的基本框架,从而简化了用PHP编写web应用程序的流程。换言之,PHP框架有助于促进快速应用开发( RAD ),不但节省开发时间、有助于建立更稳定的应用,而且减少了重复编码的开发。通过确保适当的数据库交换和在表现层编码,框架还可以帮助初学者建立更稳定的应用服务。这可以让你花更多的时间去创建实际的Web应用程序,而不是花时间写重复的代码。 通常认为PHP框架的作用相当于模型-视图-控制器(Model View Controller)。MVC是种编程的架构模式,将业务逻辑从UI中分离出来,允许一个一个单独修改(也称为关注点分离)。在MVC中,Model指数据,View指表现层,Controller则指应用程序或业务逻辑。基本上, MVC打破了一个应用的开发进程,这样各组件就可以不受影响地各自工作。从本质上讲,这使得用PHP编码更快更简单。 为什么要使用PHP框架? 开发人员使用PHP框架的好处很多,其中之一是加快开发进程

学习.NET是因为热爱 or 兴趣 or 挣钱?

亡梦爱人 提交于 2020-01-19 05:41:06
看到最近园子里掀起了“.NET 快不行了”、“ .NET 工资太低了”、“转行做 XX ”等一系列之风,不由得想说点什么,我只是基于自己的观点,你认同或者不认同,我就是这样认为,无所谓对与错,写文章就是为了交流思想。 犹记得第一次参加面试时,一位53岁的微软老程序员问我:”你热爱编程吗?请以‘热爱编程’为题谈一下你的感受或者看法”。我当时傻乎乎的,套用我写情书的话侃侃而谈:“自从96年第一次见到电脑,我就被它深深的吸引住了,当初的ucDos,WPS,至今都印象深刻,尤其是求伯君闭门三个月开发的WPS更是让我无比崇拜,从那时候起,我知道,我这辈子和计算机是离不开了的....”。面试官说:“看得出来,你对计算机挺感兴趣的,不过不要崇拜个人英雄主义,那个年代已经一去不复返了,WPS不是小求一个人完成的,我是他师兄,当年还帮他写了半年程序...虽然现在工作上不用写代码,但是红宝书从第一版到第4版我书都翻烂了,现在每天也会坚持写写代码....”当时,我不明白面试官为什么那么关心是否热爱编程,感觉这东西太虚了,“我毕业出来找工作就是为了挣钱”这理由简单又直接。 信仰和兴趣是不一样的,兴趣是一种可以经常变更的,可以慢慢培养的,带点娱乐性质的,而信仰则包含了个人的价值观、人生观在里面了。所以把编程当成兴趣的人是快乐的,当成信仰的人是无奈的,当成挣钱方式的人是不明智的。 于我而言, .NET

最让程序员崩溃的7件事

与世无争的帅哥 提交于 2020-01-19 03:05:20
1)中断 & 开会 “中断” 可以说是程序员生产力的头号杀手,因为被打断之后很难回到之前的地方,需要重新梳理思路,很有可能半小时就过去了。 被打断的次数越多,挫败感就越强,生产力也低,bug就越多,一连串的恶性反应。 如果在早上就被打断,那么这一天很可能就出不了什么活儿了。 开会呢?开会就是“有计划的打断”。 2)琐碎型管理 这类管理者是开发团队的绊脚石,他喜欢有点儿破事儿就开个会,有点问题就去骚扰你。 不仅如此,他对团队成员缺乏信任,总喜欢和你抠细节。 程序员碰到这种管理者就倒霉了,常常会被打断,所以,此类团队中的程序员跳槽率是很高的。 3)含糊不清 例如收到一个bug “这个功能不好使,赶快改好!”,相信谁看到这么模糊的描述都会一脸懵。 比如产品需求文档中一个功能描述不清,你按照自己的理解开发了,后来产品经理过来了,说你开发的不对,应该这样……,靠!还得重新开发。 比如你正在奋力敲代码,悄悄的,经理来到了你的身边,告诉你做一个xxx功能,然后就走了,不管你理没理解,也不告诉你这个任务的优先级,就像一阵风一样。 4)海鸥型管理 你遇没遇到过这个类型的领导:平时啥也不管,但会偶尔蹦出来指手画脚挑毛病,“你这么做是错误的”、“你这个做的太烂了” …… 就像一只海鸥,偶尔冲下来把东西搞乱。 5)抢功 很多团队都会有这类的小人,他特别会在领导那儿表现自己

暴力裁员、爬虫被抓、QQ 注销……2019 年程序员大事记

和自甴很熟 提交于 2020-01-19 00:58:09
整理 | 伍杏玲 出品 | 程序人生(ID:coder_life) 再见,2019。 你好,2020。 在这辞旧迎新之际,2019年,程序员最为息息相关的话题有哪些呢?暴力裁员、QQ注销、5G……下面程序人生与你共同回顾2019年程序员最为关注的大事记: 一月关键词:寒冬、房租 一月阅读:房东:你敢申报,我就涨房租!今冬,我一个程序员朋友离开了北京…… 2019年1月,受2018年裁员寒冬的影响,有程序员上午在改Bug,下午就被裁了。可能你曾遇到这样的情景:迎着寒风面试找工作,石沉大海的简历……屋漏偏逢连夜雨,生活拮据之际,房东又涨工资了。 压倒程序员最后一根稻草:再见,北京;再见,2018。 二月关键词:简历造假 二月阅读:那些简历造假拿 Offer 的程序员,后来都怎么样了? 二月春节后,程序员们开始踏上找工作之旅,学历不足或非科班出身、培训班自学的程序员,在面试前难免会面临第一道关卡:学历门槛。是否要简历造假?左右天秤摇摆不停: 某职场平台有人说,同事靠简历造假和银行流水造假,进了腾讯,年薪60万。 没经验的培训毕业生充当2-3年经验的“老程序员身份”,顺利地集体进入了同一家公司,被查出来后,集体开了。 三月关键词:QQ注销 三月阅读:终于可以和 QQ 彻底说再见了! 2020年,第一批90后30岁了。曾被80后称为“垮掉的一代”,如今已逐渐成为各行各业的中坚力量。与父辈

程序员迷茫时看一下

不羁岁月 提交于 2020-01-19 00:38:56
昨天晚上睡觉前,我瞥了一下后台读者的留言,其中有一位叫 abe 的读者说:“二哥,你周末都是怎么度过的呢?我怎么感觉自己好空虚啊,除了打游戏,看奇葩说,偶尔看一下英超,就没有别的事情可以做了。有时候,感觉自己在浪费时间,却又不知道该干啥。” 看到 abe 的留言,我深感忧虑。于是不得不从温暖的被窝里爬出来,穿好衣服,打开空调(洛阳的天气在晚上还是很冷的,尽管有暖气),坐到电脑前面。我想,是时候把我从 programcreek 上看到的一篇文章梳理一下分享给大家了。 假如你处在可恶的 996 工作制中,甚至更糟,那么难得的周末就是休养生息的最佳时间。与此同时,这也是提高自己的绝佳机会,只有自己强大了,才有资本摆脱繁重的工作。 如果你恰好也是这样想的,希望这篇文章能够帮助到你。 01、花点时间和朋友交流 大多数的程序员在工作日的时候都是很闷的,除了偶尔和产品经理吵一架。毕竟改不完的 bug 和做不完的需求都需要安静地敲代码。 那么周末就是和朋友交流的最佳时间,如果有机会,最好面基一下,这样可以把彼此在工作中的心得和经验进行切磋和交流。 如果朋友的技术比自己好,还可以趁机学习一下。更重要的是,可以弥补自己的信息差。 02、尽可能扔掉手机 注意啊,可不是真的把手机扔到大街上,你懂我的意思,就是让自己远离信息的干扰 。这年头,垃圾的信息太多了,几乎充斥在网络的各个角落