跳到内容

文章类别:编程

计算机爱好者 VS 程序员

优秀的计算机爱好者具有一种无价的技能。可作为一名程序员会跟计算机爱好者一样吗?难道程序员跟那些不知道如何编码的计算机爱好者们相比,会在创造性上处于劣势吗?

下面的这个故事让我看清了他们之间的不同。

我最近被邀请在一个周末创业活动中做指导。周五晚上,我们召集到一起吃匹萨,定创意,建团队以及讨论启动计划。临近结束时,每个人都对这个周末将要做的事情感到非常的满意。

周末早晨我来到现场发现人们都在努力的工作。有些人通宵未回在这赶进度实现他们的想法。这就是创业精神!

但我吃惊的发现如此多的团队都已经开始编码了!感觉是他们急着让东西能在周日晚上之前开发出来,跑起来,这使大多数的团队一心想着实现他们最初的创意想法,而不再去探索不同的创意、选择一个更好的来实现。

听起来没什么不同吗?

有一个团队脱颖而出,因为这个团队中没有会编程的。所以他们把时间都花在用PowerPoint制作原型,走访各个房间跟其他团结交流他们的想法, 获得反馈,然后回到他们的桌子边讨论、改进提炼他们的想法。他们是最喧闹的,最有生气的,最热情好善的一组,他们看起来从活动中得到了不少乐趣。最重要的 是,他们向前推进的速度比其他组快很多,因为他们没有迷失在要能清楚如何使用Rails或PHP让什么东西跑起来的细节里。

周日早上,他们灵光一闪,抛弃了以前所有的原型,重新回到绘图板前工作。我看到他们在数小时里做出来一个新原型。因为没有写代码,他们并不担心抛弃 昨天的作品(毕竟,原型就是用来干这个的)。因为他们使用PowerPoint来模型化他们的想法,他们可以快速的让想法具体化。

在周日晚上,他们并没有交出一个可以运行的应用程序,但他们使用依据他们最终创意制作出来的、具有点击效果的原型吸引力所有的观众。他们不仅呈现了最终创意,他们还带着观众遍历了整个创意的变更迭代过程。

结果呢?他们夺得头筹!

他们并不是赢在创意有多么的好或比其他组包含更多的功能。这个周末产生了很多的创意。但当其他组把有限的时间花在实现细节上时,这个组一直专注于他们的想法的高层面的问题,把更多的时间花在改进它而不是编码上。

他们不是程序员,但他们是计算机爱好者。这个身份最终让他们受益匪浅!

很多创业者认为自己跟那些会编码的人比起来处于一种劣势。他们认为自己不是计算机爱好者,因为不会编程。而事实却是,他们具有一种创造力上的优势, 因为他们不会急着一头扎进编码工作里。相反,他们会被迫去“修剪”他们的想法,用上层的工具和平台测试它们,会被限制不去关心细节。这将迫使他们关注于解决用户问题,而不是解决实现问题。

做软件不只是编码的技术。它是一种在事情不同的阶段关注每阶段最重要的事情、而不是过早的陷入细节的思维习惯。

如何选择开源许可证?

如何为代码选择开源许可证,这是一个问题。

世界上的开源许可证,大概有上百种

很少有人搞得清楚它们的区别。

即使在最流行的六种—-GPLBSDMITMozillaApacheLGPL—-之中做选择,也很复杂。

乌克兰程序员Paul Bagwell,画了一张分析图,说明应该怎么选择。

这是我见过的最简单的讲解,只用两分钟,你就能搞清楚这六种许可证之间的最大区别。

请点击看大图。

开发人员的测试悖论

多年来,我在软件开发过程中看到了许多不同的测试方式。每一种测试都有它的独特性,一些开发人员认定他们自己有不只一种方式。在本文中,我试着列举所有不同种类的测试,并说一说它们在项目上反映出的效果。

1. “我不是QA”(I’m not QA)

我提交代码,其他人验证其是否能正常运作。我的工作就是写代码,而不是测试。因为是我写的代码,所以,我不能测试出代码什么地方出错了。我需要让其他 人看应用程序,并且学会如何使用,如何崩溃。通常,这种方式也说明缺乏说明文档,同样原因,这应该是其他人的工作。通常这种测试方式意味着,质量是其他人 该负责任的事。

2. “我没时间”(I don’t have time)

我必须在3周时间内完成项目,再没有时间去写测试了。我想测试可以保证应用程序的质量,但是因为我必须三周内完成任务,所以我必须跳过开发中的这一部 分, 直接做工作上的事情。一旦事情完成,我会做些手工检查,然后直接投产。这种方式通常和那些只用1或2个月来开发,并且4年内不用维护的小项目相关,他们只 需要短时间内得到一个产品。这种案例没有说明文档,因为你没有时间去做。
阅读更多 »

为什么说PHP是个集中营

有一天我跟在DUMBO的一个非常棒的创业公司的老板聊天,谈到为什么非PHP界的开发人员普遍轻视PHP和PHP相关社区。他提出了一个观点让我印象很深,很大程度上是因为以前从来没有听到过这样的说法。

如果你不知道大多数的程序员都会对PHP发什么样的牢骚,那么,这些牢骚差不多会像这样:

语法丑陋
缺乏其它语言都有的一些必要的特征(在5.3版本之前,没有命名空间,闭包)
不一致的函数命名、使用惯例,以及其它一些怪异的东西
过程和面向对象的杂混
基本上80-90%的PHP项目都烂如一堆狗屎
但他所说的PHP的问题却是另外一个问题。他并没有说这种语言有问题——他认为这种语言被一种常见的文化现象包围着,是一种通常由语言的创造者造就的文化传统,现在看来这对一些糟糕的编程实践方法起到了鼓励作用。也就是它使PHP代码变的劣质和不可维护。

这种一个语言或框架上体现出创始人的哲学思想并被相关社区推崇的现象是的确存在的。他拿出来Ruby和其创始人Matz作为例子。Matz想要的是一种易读易写、能提高程序员工作效率的语言。没看见Ruby开发人员们言之必称快速开发以及这种语言的优雅?

接着就是DHH 和他的Rails框架。还有Guido和他的Python语言。于是我在想:Rasmus对于PHP呢?

Rasmus Lerdorf给人的印象非常的有趣。他创建了最初版的PHP语言,而且一直在改进这种语言,他在PHP社区里被当作神一样崇拜,他在PHP的任何方面都享有最大的权威。他被众多的会议邀请去做演讲,同时被大网络公司所雇用,他获得了所有人的尊敬——尽管有这样一种事实:他成了大多数的非PHP程序员所鄙视的PHP上的众多问题的形象代表。

Rasmus倡导避免使用框架,而把PHP更多的当作一种模板语言。对他来说,这种做法能产生直接的运行效率和可扩展性(程序负载可知)。而对于其他的所有人来说,这种做法导致了大量的乱炖似的过程式代码,大量的无法维护的项目。自从1995年PHP诞生至今大概10年左右的时间里,所有的PHP项目都是按照这种指导写成的。

与此同时另外一个问题突然的出现了:在PHP5.0之前,PHP的初期,PHP获得了大量的新手的追随。这种语言的入门门槛出奇的低,任何人都可以下载自解压的×AMP Windows程序安装包、在2两分钟内用上这种语言。除此之外,那时在web开发方式上对MVC模式的共识并没有真正的出现。这样一来你可以想象,一群新手和一个缺乏好的开发实践方法的语言组合到一起能创造出什么?一堆无法维护的垃圾。而且整个大环境都是这样。 阅读更多 »

13种最为荒谬的编程语言

文章根据topdesignmag.com上一篇《Top 13 Most Absurd Programming Languages》,整理编译而来。这是一个娱乐贴,不要去问这些编程语言到底有没有什么实用价值,可以让我们感叹一下神奇和开发者独特的思维,这就是实用价值。

1.Lolcode

LOLCODE是一种建立在高度缩写的网络英语之上的编程语言,一般来说如果一个人能理解这种网络英语就能在未经训练的情况下读懂LOLCODE程序源代码。

“Hello World” example:

HAI

CAN HAS STDIO?

VISIBLE “HAI WORLD!”

KTHXBYE

2.Befunge

Befunge这门语言由Chris Pressey在1993年创造,本意为设计一种尽量难编译的语言……结果马上出现了一批编译器。

“Hello World” example:

“dlroW olleH”>:v

^,_@

3.Brainfuck

Brainfuck,是一种极小化的计算机语言,它是由Urban Müller在1993年创建的。由于fuck在英语中是脏话,这种语言有时被称为brainf*ck或brainf***,甚至被简称为BF。

“Hello World” example:
++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++

..+++.>++.<<+++++++++++++++.>.+++.——.——–.>+.>.

4.Chef

Chef的目标是让写程序看起来像菜谱

“Hello World” example:

Put cinnamon into 2nd mixing bowl

5.Piet

Piet是一种可视化的编程语言,其代码本身就是可视化的,像个位图。

“Hello World” example:

阅读更多 »