欢迎访问小程序员!

这是一篇痛斥,我真的很生气。 我不是一个社交型的生物。我不想整天时间或大部分时间、甚至一小部分时间坐在另外一个程序员边上编程——即使是经过测量发现这样会提高我的开发效率。就是因为这不是我喜欢的工作方式。它会毁了我对生活的感觉,毁了我的工作环境。我,跟大多数左脑型的人一样,是一个内向的人,无法从容的忍受过度的结伴或社交活动。我感觉这些都是非常让人消耗精力、让人恼怒的事情。我更喜欢安静的一个人工作。这样工作我会非常有效率。事实上我是想说这样我会极其有效率。我深信这是我能获得最大工作效率的工作方式。更重要的,这是 ....

本文作者介绍 Michael Feathers Michael Feathers是Object Mentor International公司的技术顾问。他的工作不仅是技术开发,他还参与对世界各地技术团队进行培训、指导等工作。他曾开发了将JUnit迁移到C++的CppUnit的初始部分,还有FitCpp——一个C++版的FIT基础测试框架。他是《Working Effectively with Legacy Code》一书的作者。 条件控制是编程中与生俱来的一种结构,但对于我来说,除了给我带来 ....

Python和少数几种编程语言,如MySQL、Perl、PHP和与LAMP打包的网络结构一起的Apache,已经成为Linux的一个基本组件。即使从它诞生开始,Python就与其他动态编程语言如Ruby一起成长发展,来替换传统的编程语言如C#和Java。Python支持很多独立编程语言使用的共通选项,拥有可以与其他编程语言混编的内建“快捷方式”或脚本。 Python编程语言的一个主要的驱动力一直是代码的可读性。清晰明了而简单的编码可以减少编程时间。它也适用于:面向对象、命令式和函数式的应用,以及过程 ....

如果你有一个同事,他写的程序与其说是代码,不如说更像希腊神话中女妖美杜莎的头发,你当然不能熟视无睹,你应该做出一些反应,但你可选的合适的反应方式并没有多少:自己默默的帮他整理清楚、向上级抱怨、向其他同事背后唠叨此事、闷在心里直到憋不住,或者这最大胆的方法:走上去直接对烂程序员说他的代码很烂。 事实上,这最大胆的方法其实也是最好的方法。大多时候,你可以做的巧妙些,从而避免由此引起的感情伤害或引发咆哮比赛。就像一句古话:只要方式正确,你可以向一个人说任何话。 当然,找到这正确的方式并不是轻而易举的事 ....

作为程序员,关注最新前沿技术,学习新的语言,这当然是好事。我看到有人每年都要学习一两种新的语言。但是,我认为,如果为了学习而学习新语言或因为流行而学习这种语言,这是一种时间和精力上的浪费。就比如,现在人人都在谈论函数式编程,那你就要去学习Haskell语言吗?   没错,学习像Haskell这样的语言可以开阔你的思维,给你更多些代码的技巧。但作为一个程序员,我们最重要的是去创造,而不是去研究。 我想,有两点原则,如果一个程序员遵循它们,从长远看会给你来了 益处。 1. 精通一种语言,掌握语 ....

Linux真正征服桌面需要的是什么?大多数人会认为应该有一个杀手级应用,像Adobe的Photoshop,微软的Office或者Intuit的QuickBooks。而Jack Wallen的观点就轻松多了,他在博客中这样写到: 这一周,我逐渐明白了一些事情。跟改变人生、解决问题无关,而是跟Linux真正需要的有关。 如果你认为我会说一些像“Linux需要一个所有业务或终端用户需要的杀手级应用”这样的话,那么你错了。如果你认为我的想法和Linux桌面标准化有关,那么你又错了。 让我来引导你进入 ....

在网络世界里,有些人注定是要出名的,比如微软创始人比尔·盖茨,有事没事你都能看到他,戴着圆圆眼镜笑眯眯地出现在屏幕上,但也有一些人,做事不比盖茨差,却注定要泯然人海,相忘于网络。 我要说的是Java语言之父,詹姆斯·高斯林先生。如果不是学过Java,恐怕没几个人知道这位58岁大叔的名字,但他所带来的影响,我看一点儿也不输给盖茨。人们“爱死了“盖茨,因为他给世界带来了看得见的操作系统;可是没有人会说“我爱死了高斯林”,尽管他所创立的编程语言天天出现在我们的生活里,哦对,也出现在盖茨的生活里。 19 ....

“这代码真垃圾”,当我们翻查一些代码寻找一个特别讨厌的bug时,同事大声这样说。“是吗”,我回答到。 像这样的谴责,以及其它一些类似的话,在办公室里经常会听到,而且频率在增加。而最令人不安的是,这代码并不是特别的糟糕。我这话是什么意思?不能把它们写的更好吗?当然!大多数的代码都有改善的空间——只要有足够的时间和资源。垃圾代码确实有,我们都看得见,而且都是我们自己写的,但这并不是问题。   问题是我们有一个不良的“这代码真垃圾”文化。 这是一种我感觉在web开发社区中越来越常见的文化。接着上面 ....

.NET 和 Java 是当今社会最受欢迎的两种编程语言, 长期的发展和强大的功能使他们足以在编程界立足。 十余年的争论也没得到结果的一个话题就是——他们哪个更好一些? 今天, 我们不再去讨论JAVA和.NET的利弊因为在项目实施过程中,需要分析项目的具体要求,进而选择合适的平台和技术。相反,我们将探讨Java的优势和特点进而去理解为什么世界的各大公司 ,尤其是搞银行和保险领域的更偏好JAVA而不是.NET的原因。 # 1. 开放源代码 2006年,Oracle把Java开源了­——这意味着 ....

前言 在这篇日常更新的文章中,我们仅仅讨论Linux存在的问题和不足之处(一些人认为Linux不适合桌面,这些或许就是原因)。当然了,各位应该知道的,Linux在很多领域里是要强过其它操作系统的:比如出色的包管理;多平台架构开箱即用的支持;极佳的稳定性(一般情况而言);没有泛滥的病毒和恶意软件;基本不需要重装系统;另外Linux还具有高度的定制性和便捷的脚本环境,甚至还是免费的。 这并不是一篇诸如Windows与Linux之比较的文章,不过文章当中也会有地方拿Windows或Mac OS来作为一个 ....

TIOBE 7月编程语言排行榜的榜单明星为PHP,文中曾提及PHP流行背后似乎得益于最新发布的PHP Zend Framework,但并未做具体的缘由阐述。然而,促使PHP份额上升背后真正的推动者却是WordPress而并非PHP Frameworks。作者Manuel Lemos执笔详细阐述了WordPress推动PHP更加流行的七大理由。译文如下: 1. WordPress是目前最流行的PHP应用 大多数人会选择使用几大流行的搜索网站来对比衡量目前相对流行的技术、语言、应用或者产品。然而这种 ....

本文整理自知乎。 一句话总结 简单地总结: 假如你想帮他尽快找个活儿,赚到钱,推荐PHP。 假如你想让他成为一个高效工程师,推荐 Python。 假如你想让他爱上他的工作,推荐 Ruby。 语言的选择 编程语言非常重要,不要认为他们都图灵等价,用起来都一样。实际上,好的语言,带给你的东西是超乎想像的。 下面是一些看法: 程序员的时间远比机器的时间宝贵:选择开发效率最高的语言吧,不要过于在乎运行性能,如果你开发不出东西,那么跑得多快也没用。 优雅的抽象胜于简单的堆砌: 这意味着你的代码 ....

通过反复的交谈,Bill Caputo最终说服了我,让我相信了一些不可思议的事情。这些事情改变了我整个看问题的方式,也让我重新思考如何更好的工作。 软件开发中没有“生产效率” 几乎正如10年前 Martin Fowler 发现的,用生产效率来衡量软件开发工作没有任何意义。原因就在于,它们不属于同一范畴。换句话说,生产效率不具有作为衡量软件开发工作的适用性。“今天创造了多少代码/软件?”这是一个没有意义的问题。即使可以这样测量,软件开发工作上的生产效率也不能以任何有意义的方式估计出它的商业价值。 ....

开发人员,尤其是那些对生产过程有直接影响的开发者,他们极其想要简化现有的运行机制。即便是在处理数据需求时也需要多级操作。学习如何简化你的工作也是一种技能,原文作者Denis Tsyplakov从日常工作中总结出关于Java编程的一些经验之谈。译文如下: Java的复杂性 喜欢Java的开发者及客户能发现该语言的显而易见的优点——从一开始Java有个完美的数据库接口,即使到现在也可称得上是最好的一个。然而,即便是简单的操作也需要冗长的、沉重的请求以及复杂的操作序列,不能说是太复杂,但可以肯定的一点 ....

本文作者Michael Dubakov从事软件开发方面的工作,他在读了Daniel Kahneman的《思考,快与慢》后,思考了软件开发中的快与慢,并且把书中的一些思想应用到实际的软件开发中。下面是笔者对原文的翻译: 最近,我在阅读Daniel Kahneman的《思考,快与慢》,这本书非常令人着迷。里面拥有大量的真知灼见,给读者带来一场思维之旅。目前,我在一家软件公司工作,书中所学到的部分自然而然地可以应用到我们的工作中。下面,我将分享自己从这本书的所感、所知。 系统1和系统2 这本书包括 ....

BBC最近的新闻报道(《App Store经历五年后,遍地都是“僵尸应用”》)对绝大多数应用开发人员来说都并不意外——因为他们自己也知道,他们开发的大多数应用其实并没有产生多大的影响力。 苹果公司本身的统计数据也为应用开发领域敲响了警钟。根据Tim Cook在WWDC Keynote上揭示的统计数据: 93%的iOS是每个月都有人下载的——这也意味着有7%的应用已经没有人下载了。我感觉还不错因为我所开发的App每天都有人下载…… Alex Warren (@alexwarren) June 10 ....

免责声明:我所说的“避免代码注释”并不意味着我不写注释,这意味着,我尽可能避免写代码注释,但当我觉得值得写时我还是写的。 “相比写软件我们花了更多的时间在阅读软件上”,一直以来我没有见过任何科学研究证明了这一点,但在软件领域,它就像一个教条或一个共同的信念。由于它的存在,将软件写得易于阅读、关注代码的可读型都是很重要的。通过一些技术的辅助程序员可以实现这些要求,这些技术其中之一就是写代码注释。 当谈论起代码注释的时候,有关的辩论总无休止。我们应该用注释来说明我们代码的作用吗,我们应该将重点放在代 ....

“你需要写更详细的文档”。你听到了没有?我听到了,很多次,在很多公司里。大多数人都会因为没有写文档而内心不安,认为应写文档。但我不是。 文档有两种——代码内和代码外。代码内文档包括javadoc(或任何用来描述类和类方法的语言工具)和代码注释。外部文档包括描述产品的文档和内部材料。 外部文档最大的问题:它会过期不更新。让它们保持同步更新是一个麻烦且耗时的工作。 外部文档第二大问题:没有人真正用它们。 程序员是写代码的。他们善于读代码。代码对于他们有特殊意义。给重要类写说明,在方法内部对重 ....

每个程序员都知道,在一个软件公司里,你需要有一套严谨的编码规范。每个程序员也都知道,为了能按自己的编程习惯制订这套规范,每个程序员都在而抗争。刚进入一个新公司时,每个程序员都会内心里绝望,对那套由某些强势架构师独断指定的编码规范恐惧不已。 扔掉编码规范吧,让程序员自由发挥,你会得到更多的好处。从加强代码统一性上获得的这点胜利根本解决不了问题。编码规范就是技术上的遮羞布。在 nearForm 公司,我从来没有想过要制定一个这样的规范,因为我希望每个人都只需按照自己喜欢的方式编程。 这世界太吵闹了。 ....

我在Twitter上看到一幅有趣的图片。我不是来责备发帖的这个人,也不是责备转发的人或图的原作者。但如果不说出我对这个图的背后的一些思考,我会憋得难受。 上面的图中,程序员被描绘成一个挖坑人。这Twitter帐号明显属于一个程序员,这幅图的标题被写成“悲惨,但却是事实…” 我毫不同情这挖坑的程序员。因为我不相信会有这样的事情。 很容易我们会想到那个铁铲子是键盘的比喻,但我从来没遇到过自己作为一个程序员努力的干活儿的同时,一帮“经理们”在那指手画脚的说挖什么,在哪挖,如何挖的场景。我也不认为其 ....