10 条“有争议”的编程观点

Stack Overflow上有这样的一个贴子《What’s your most controversial programming opinion?》,翻译成中文就是“你认为最有争议的编程观点是什么?”,不过,在400多个主回贴,以及上千个所有回贴中,好像并不是很有争议,而是令人相当的茅塞顿开,下面罗列一些,希望对你有帮助。

1) The only “best practice” you should be using all the time is “Use Your Brain”.

唯一的“Best Practice”并不是使用各种各样被前人总结过的各种设计方法、模式、框架,那些著名的方法、模式、框架只代表赞同它们的人多,并不代表它们适合你, 你应该更多地去使用你的大脑,独立地思考那些方法、模式、框架出现的原因和其背后的想法和思想,那才是“Best Practice”。事实上来说,那些所谓的“Best Practice”只不过是限制那些糟糕的程序员们的破坏力。

2)Programmers who don’t code in their spare time for fun will never become as good as those that do.

如果你对编程没有感到一种快乐,没有在你空闲的时候去以一种的娱乐方式去编程,那么你只不过是在应付你的工作,这样下来,就算是你是一个非常聪 明,非常有才华的人,你也不会成为一个优秀的编程员,要么只会平平凡凡,要么只会整天扎在技术中成为书呆子。当然,这个观点是有争议,热情和能力的差距也 是很大的。不过我们可以从中汲取其正面的观点。

3)Most comments in code are in fact a pernicious form of code duplication.

注释应该是注释Why,而不是How和What,参看《惹恼程序员的十件事》,代码告诉你How,而注释应该告诉你Why。但大多数的程序并不知道什么是好的注释,那些注释其实和代码是重复的,毫无意义。

4)XML is highly overrated

XML可能被高估了。XML对于Web上的应用是不错的,但是我们把其用到了各种地方,好像没有XML,我们都不会编程了。

5)Not all programmers are created equal

这是那些junior经理爱犯的错,他们总是认为,DeveloperA == DeveloperB,只要他们的title一样,他们以为他们的能力、工作速度、解决问题的方法,掌握的技能等等都是一样的。更扯的是,在某些时候,就 算是最差的程序员,他们也会认为其比别人强十倍。

6)”Googling it” is okay!

Google只会给你知识,并不会教给你技能。那里只有“鱼”,没有“渔”,过度使用Google,只会让你越来越离不开它,你越来越不会自己去 思考、探索、钻研。如果KFC快餐是垃圾食品对我们的身体没有好处,那么使用Google也一种快餐文化对我们的智力发展没有好处。

7)If you only know one language, no matter how well you know it, you’re not a great programmer.

如果你只懂一种语言,准确的说,如果你只懂一类语类,如:Java和C#,PHP和Perl,那么,你将会被局限起来,只有了解了各种各样的语 言,了解了不同语言的不同方法 ,你才会有比较,只有了比较,你才会明白各种语言的长处和短处,才会让你有更为成熟的观点,而且不整天和别的程序在网上斗嘴争论是Windows好还是 Unix好,是C好还是C++好,有这点工夫能干好多事了。世界因为不同而精彩,只知道事物的一面是有害的。

8)Your job is to put yourself out of work.

你的工作不应该保守,那种教会徒弟,饿死师父的想法,不但是相当短浅的,而且还是相当脑残的。因为,在计算机世界里,你掌握的老技术越多,你就越 没用,因为技术更新的太快。你对工作越保守,这个工作就越来越离不开你,你就越不越不能抽身去学新的东西,你也就越来越OUT了。记住:If you can’t be replaced then you can’t be promoted!

9)Design patterns are hurting good design more than they’re helping it.

很多程序员把设计模式奉为天神,他们过度的追求设计模式以至都都忘了需求是什么,结果整个系统设计被设计模式搞得乱七八糟,我们叫这种编程为“设计模式驱动编程”,正如第一点所说,如果你不懂得用自己的大脑思考的话,知其然,不知所以然的话,那么你不但得不到其好处,反而受其所累。

10)Unit Testing won’t help you write good code

准确地说,我们可以认为这是Test-Driven开发,其实,这种开发就是先写单元测试用例,这样的开发方式的主要目的是,为了防止你不会因为 一个改动而引入Bug,但这并不会让你能写出更好的代码。这只会让你写出不会出错的代码。同第一点,这样的方法,只不过是防止糟糕的程序员,而并不是让程 序员或代码质量更有长进。反而,Unit Test会成为程序员为自己代码做辩解的一种托辞。

文章来源:酷壳

猜想:互联网下一个十年的发展方向

猜想:互联网下一个十年的发展方向

注:本文由RTdot用户sheran原创,转载需注明。

参照互联网前十年变化以及现今互联网的发展趋势来看,下一个十年的方向主要集中在社交、移动、云计算、电商等领域,这些领域将会是未来十年互联网发展的坐标。

社交网络仍然热门,但是基于Path的社交理念将使社交形式多元化

Path CEO莫林通过自己的产品向大众展现一种新的社交形态:一个家庭式的封闭网络。它能帮助人们建立一个私密的好友圈子,互相分享生活的瞬间。在 Path里,莫林提出了“醒了”和“睡着”就是用户的全部状态。而PC时代的“在线”还是“离线”在移动互联网时代将不复存在。

虽然莫林正在将公司带往与Facebook相反的方向。但是,他提出的这种新行的社交方式无疑增加了社交形式的多元化,也将暗示下一个十年,社交网络将会呈现更加多样化的形式,让我们拭目以待吧。

移动互联网将独霸一方,迎来黄金时代

从中国互联网信息中心2011年11月的测算数据显示,手机网民数量已经达到了3.4亿,总体网民当中手机用户普及率达到65.5%。这一数据充分表明 了,就像当年PC时代的到来一样,移动互联网在当今呈现出爆发式增长。预计今年移动互联网用户将突破6亿人,并且超过互联网用户数量。

移动互联网将独霸一方,迎来黄金时代

从上面的数据不难猜出,周鸿祎5月4日发布新浪微博称360将进军手机行业的原因。自从3G时代的到来,以及苹果和谷歌产品和技术上给移动互联网带来的革新,使得移动互联网产业链各环节已逐步趋于成熟,形成了一个支撑移动互联网发展的环境和条件。

从微软联姻诺基亚,谷歌收购摩托罗拉,亚马逊计划推出平板电脑,再到中国移动、联想纷纷推出自家的平板电脑。可以看出,各大互联网企业纷纷争夺移动互联网入口。

毋庸置疑,下个十年移动互联网将带来新的商业模式,它将像上个十年的PC一样颠覆人们的行为模式。

移动支付将成互联网企业不可忽视的产业

据析移动互联的发展速度已经高于互联网4倍,当互联网遇到移动,被改变的不仅仅是通信方式,还包括支付方式、沟通方式、娱乐方式等等,其中支付方式将成为互联网企业的必争之地。

中国互联网应用创新工作委员会副秘书长曾明发以调查事实说明:“手机支付,将成为网民最受欢迎的支付”。手机在将来可以帮助人们作很多决策,它可以帮助网 民了解当地的相关物品,文化风俗,以及当地相关的商场、环境等信息。特别是智能手机不仅仅扮演一个支付工具,它更像一个人们必不可少的伙伴,将与人们交互 的方式越来越多,给人们的生活、工作和学习带来真正的方便。

电子商务将仍占主力,进一步给互联网带来丰厚盈利

互联网的高速发展开创了电子商务发展的新时代,作为直接为互联网带来盈利的产业,它是互联网经济的主要来源。互联网既然有免费的服务存在,必然有消费的服 务存在,作为直接产生消费来源的产业,未来越来越多的传统企业将通过电商融入到互联网,这些传统企业将会成为中国互联网经济支柱性的企业。

电子商务将仍占主力,进一步给互联网带来丰厚盈利

加之移动电子商务应用规模增大,中小企业的电商业务的发展壮大将会成为今后的发展方向。另一方面,互联网广告市场规模将会实现突破性增长。随着搜索引擎市 场的竞争多元化,以视频广告、互动广告和植入广告为代表的广告形式将不断被广告主认可,广告的投放量以及价值会继续增大,为电商带来更大的盈利。此外,团 购和各种应用服务的关联,也将会形成很多商业模式。

因此,未来电商企业的竞争将更加地惨烈,我们将会看到,很多互联网企业都将会投入大量精力去做电商的平台性企业。

微博仍然发力

微博可大致分为两个方面,一类是定位于个人用户的,另外一类是定位于企业客户的。没有人会对微博的作用熟视无睹,自从2010年国内微博迎来春天,微博像 雨后春笋般崛起。新浪、网易、腾讯、搜狐四大门户网站均开设微博。微博的力量在营销、科技、社区、媒体、移动、广告等方面前景仍然非常雄厚,未来还将继续 发光发热。

开放的格局更加成熟明朗

有人说,Google的开放,预言的是未来。确实如此,Android系统以其开放性而获得用户和移动生产商的青睐,在所售出的智能手机 中,Android市场份额遥遥领先。就连一向被认为封闭模式的苹果,它的成功,同样是缘于开放,它通过开放了API和开发工具,由此吸引了大量开发者, 为自己的AppStore吸纳了海量高质量应用,使得自己和开发者共同实现双收。

开放的格局更加成熟明朗

同时,由于移动互联网的开启,带动了跨界合作,使得互联网企业不得不重新审视自己的开放态度。因此大型互联网企业2011年以来均推出开放战略,产业关系由竞争向合作转变。开放推动了互联网的产业格局变革,让互联网迈向了一个开放共赢的时代,而这个时代还将继续。

即时通讯不再是亮点,语音的互联网沟通将成主流

“土豆土豆,我是地瓜!”——微信的诞生,第一次让人们发现,通过语音的互联网沟通,将是网民们下一个更加亲睐的通讯产品。3G时代的微信,正在“谋杀”高昂的通话和短信费用,同时也向即时通讯发出了挑战。

有人说,随着互联网深入各行各业,数据业务的发展最终将吞噬通信业务的市场,人们的沟通方式在下一个十年将发生很大变化。

云计算仍然是我们瞩目的焦点

云计算是实现方便、快速、简单、按需访问可配置计算资源的管理模型,是企业IT资源管理的高级阶段。对于下一个十年云计算最大的方向,基于云技术的谷歌 Chrome OS仍然是我们瞩目的焦点,Chrome OS通过实施“云计算”,让基于PC和手机之间形态的上网设备找到了一个理想的平台。

云计算仍然是我们瞩目的焦点

完全基于云计算的Chrome OS一旦成功,它将能够让新的上网终端诞生!互联网又会进入一个崭新的时代,基于Web的应用将会得到飞速发展,HTML5将会成为名副其实的宠儿

互联网让云计算的飞度发展,将成为全球竞相争夺的信息产业战略高地。

由云计算带来的高级同步

同样,由云计算带来的信息同步将会是一个很有效的生活工作方式,没有更多的复制和粘贴信息,通过很容易控制的智能手机,来同步数据或其他资源,如网络存储,本地监视器和附近的网络,云计算将和移动互联网无缝结合。

通过云计算,手动管理的概念将会变得老套,它将以用户为中心的计算数据和原数据自动同步。iCloud和Windows 8就是云计算的代表。对于人们如何利用云计算,将会是一个值得探索的话题。

互联网安全问题也将越来越受关注

随着计算机技术的飞速发展,信息网络安全已经成为社会发展的重要保证。特别是移动手机支付的兴起,安全问题的重要性不仅只出现在PC上,在移动互联网上, 未来也要占非常重要的位置。从360  CEO周鸿炜对公司的发展定略来看,互联网安全仍然是一级火箭。现在互联网企业的安全软件已经从PC发展到移动手 机,可见开发用于管理手机和电脑安全的产品,同样是下个十年互联网不可忽视的产品。因为只有一个安全可靠的互联网环境,才能让用户更加放心的在互联网的世 界中畅游。

移动互联网的发展跟硬件基础的发展密切相关

最后一点也是我认为不可忽视的一点,硬件的快速发展也会促进互联网的飞跃。例如发展基础宽带网络是云计算、移动互联网等战略性新兴产业的基础保障。同时对 于中小企业的信息化、农村信息化,传统产业转型升级等各个方面都发挥着巨大作用。可以说,硬件基础的发展对互联网的体验息息相关。

移动互联网的发展跟硬件基础的发展密切相关

硬件的发展将带来更智能的人机交互: iPhone 4S发布中最大的一个亮点就是通过语音对话,完成强大的人机交互功能。不难推测,苹果的下一个战略目标务必是让智能手机更加智能,Apple TV 也将给互联网下个十年带来革新产业。

3D裸眼手机的问世,都将带给人民新的生活方式,这些都将对互联网的发展产生巨大影响。但是能真正推动这些互联网革新的企业, Google和苹果仍然是大家最期待的公司。

关注移动 Web w3ctech 再次启航

据悉,以“Mobile Changes the Web”为主题的W3Ctech专题会议(w3ctech.com/2012),将于2012年6月16日在北航会议中心举行。本次专题会议的演讲嘉宾来自Adobe、百度、豆瓣、图灵教育,嘉宾将与大家分享基于移动互联网的最新技术与实践。

众所周知,伴随智能移动设备的大量普及,App时代已经来临,移动互联网已经成为整个 IT业最前沿的领域。然而,技术、平台、设备及标准的多样性,也对Web Apps的开发提出了前所未有的挑战。移动互联网领域的这些“壁垒”,除了增加商业成本之外,也为桌面应用到移动应用的迁移构成了障碍。

HTML5 及一系列最新Web标准的推出,有助于改变这种高开发成本的现状。Web Apps相比客户端软件具有无法比拟的优势,逐渐成为移动应用程序的主流。在此大背景下,面向 Web Apps 的开发框架如雨后春笋层出不穷。作为中国的前端工程师,如何迎接移动互联网大潮的来临?如何选择适合的Frameworks?如何建立精简且高效的标准化体系?这些便是本次交流会分享的主题。

W3Ctech是一个旨在促进标准化Web开发的公益平台,本次将携手W3C中国共同为前端开发工程师呈献精彩的分享,共同探讨移动互联网时代的Web标准与实践方法。

新版 iPhone5 会长这样吗?


传言iPhone5将采用液态金属一体机身,而这种材料将会使整个机身更轻更薄。据此,一名叫做Jon Fawcett的设计师又发布了一些iPhone5的概念图。Jon Fawcett设计的iPhone5厚度仅为7mm,有一个4英寸的宽屏触控显示屏。而且,这款手机拥有1000万像素的后置摄像头,500万像素的前向 摄像头,可用于视频聊天。此外,这款iPhone5还有一个包含纵向和横向模式的四通道扬声器。

尽管Jon Fawcett并不是苹果的设计师,但是他的的概念图还是让人眼前一亮,看一下吧。

此外,新版的iPhone5也可能会支持NFC,配备A5X处理器和1G RAM内存(和New iPad一样),拥有强劲的四核图形处理器。关于iPhone5的传言从来没有间断过,好在,苹果应该会在今年6月的世界开发者大会上正式发布关于iPhone5的消息。

via Mashable

用户体验设计的五项原则

如何设计出具有优秀用户体验的产品是交互设计师始终面临的一道难题,“好的产品设计一定是建立在对用户需求的深刻理解上”这句话被许多设计师视为设计的天条;至于在设计中如何发现并深刻理解用户的需求,并由此设计出具有优秀用户体验的产品,阿里巴巴的UED团队在多年的产品设计实践中总结出重要的五项原则。

1. 同理心

所谓的同理心通俗说法就是换位思考。设计师在设计产品时要能够做到换位思考,体会用户的立场和感受,并站在用户的角度思考和处理问题,把自己置身于相关的用户场景中,理解用户的行为特点和行为差异。

在我们阿里系网站,淘宝网站上面主要是C类用户,淘宝的很多设计师自己本身就是C类用户,他们会更加容易把握和理解C类用户的需求,以此来指导产品的设计。这一点对于我们B2B的设计师来说即是面临的困难也是一种机遇,因为B2B的设计师很难从自身获得足够的B类用户经验也就无法很好的把握和理解B类用户的需求,所以我们团队就更加强调设计师的同理心、换位思考能力。我们会要求设计师在平时多注意积累用户经验,熟练的使用自己的产品,模拟B类用户进行相关操作,也会经常让设计师走出去把用户请进来等各个渠道和用户研究的手段让设计师可以全方位深入的了解用户需求。使得我们的设计师可以很客观、深入和全面的了解用户以及相关需求,也就避免了依赖自身经验和主观臆断的闭门造车。

记得在我上大学学习《无障碍设计》课程的时候,为了体验和理解腿部残疾人士对于乘坐车辆的需求,我会把自己的腿绑在一起或者坐在轮椅上,真实体验腿部残疾人士上车时的场景。我想有过这种体验的设计师为腿部残疾人士设计产品的时候,肯定会在设计中充分考虑到残障人士的真实需求了。

同理心是用户体验设计的基础,只有这样设计师才会对用户需求把握的越透彻,设计出越贴心的产品。当我们的用户看到产品时会说:“这就是我想要的”,我想这应该就是最好的用户体验设计了。

同时需要说明的是同理心不是万能的,也不都是准确的,更灵活的运用和效果的产出,一方面需要设计师长期的产品设计经验的积累和对用户长期深入的接触和理解;另一方面需要设计师对用户数据和用户行为的分析再加上相关的用户研究的方法的使用。

2. 简洁就是好的

简洁不等于简单,它是在设计师深刻理解用户需求的基础上,根据用户的操作行为、信息架构等因素深思熟虑后的用户交互界面,界面不是产品功能的简单 “堆砌”和界面信息的杂乱“摆放”;是一个满足了用户特定需求、具有流畅操作、赏心悦目的界面。

记得在前几年很多网站的注册页面中,排列了许多需要用户填写的必填或者选填的表单,显得页面特别的繁琐和复杂,其实这些都不是用户想要的,用户需要一个页面上只有简单的一道两个必填的项目,可以让用户以最快的速度完成相关表单的填写,以便尽快的完成网站的注册的简洁页面。但是我们却基于保存用户资料数据、商业和运营的考量,设计出一个复杂的注册页面,强迫着用户做着对于用户来说没有意义的事情。

再看看现在网站的注册页面基本上只有很少的几个简单需要用户填写的注册信息,甚至有些网站为了让用户更加快捷的完成他的目标,取消了注册环节,真正的方便了用户。

简洁就是好的,本质上是让设计师了解一般用户在单个页面只会有一个主任务和主流程,因此不要用其它次要因素或是繁复的视觉元素来打扰他的视觉注意力,干扰他的判断,越简洁,用户的使用感受越佳,这样对于用户体验来说就是好的。

3. 把决定权还给用户

要让用户知道产品的决定权是在用户自己手中的,不要和用户抢夺控制权,要谨慎的帮助用户做一些决定,很多时候还是要让用户自己进行判断,并进行操作。

很多时候网站出于商业、营销等层面的考虑,会帮助用户做决定,会引导用户做一些他所不愿意或者反感的事情。这些举动严重干扰了用户的操作进度和用户目标的完成。

例如在SNS网站中,当用户编辑完一篇内容顺利发布后会出现发布成功页面,该页面自动跳转到已发文章列表页面。但是一些用户其实发完是想看该文章的详情页面,以了解回复或者留言情况,还有一些用户是想再次编辑一篇新的文章,还是少部分用户希望回到首页。所以系统自动跳转到已发文章列表页面就让很多用户感觉到不便,让用户产生很差的使用体验。其实我们可以在发布成功页面不做任何跳转,在给该页面上添加几个用户可能要去的页面链接。这就是要把决定权还给用户。

把决定权还给用户,是体现了对用户的尊重,让用户知道产品是掌握在用户自己手中,产品只是辅助用户完成他之前设定需要完成的目标或任务,只有这样才是给用户带来尊重感、安全感,给产品带来很好的使用体验。

4. 帮助用户做一些事情

用户在使用网站的时候,很多地方我们是可以帮助用户完成一些事情,这个就可以让用户更省心更有效率的完成他需要达到的目标。互联网用户相对于传统行业的用户来说,网站更容易收集用户的相关数据和用户使用网站的行为轨迹。这样就有助于我们了解用户,帮助用户做一些事情。比如在下单页填写物流信息的时候时很多用户不知邮政编码,通过用户填写的省市区系统可以自动完成填写大致的邮编,让用户顺利完成注册。但帮助用户必须有个度,不能过多也不能太少。

例如某网站用户在商品购买成功后会有个购物成功的页面提示,通过数据分析与用户调查,发现绝大部分的用户此时会希望看到订单详情,看订单的受理情况。于是当购物成功的页面生成后,系统将自动跳转到订单详情页面,帮助客户完成这一点击。

但并不是说这一做法是不变的,随着时间和环境的改变,如果发现订单详情页面的点击量下降,而继续购物和寻找其他商品的点击量变大,这些数据所能反映出来的信息是用户不希望直接跳转,这时就要考虑把自动跳转页面取消。

另外,如果卖家在发布产品时要选择类目,如果以前多次发布过相关的类目,现在再发布时,系统会根据他以往的发布情况直接给出他要的类目,与此同时再给他一个选择全部类目的入口,便于卖家快捷地发布商品。

帮助用户做一些事情,其实就是充分利用网络系统的一些运算、速度上的一些优势辅助用户在网上完成相对复杂一些的任务,可以让用户快捷、方便的完成任务。

5. 用户也是不断的成长

我们的用户的使用经验也会随着互联网行业和网站的发展而发展,用户的经验也是在不断的积累中,也在不断的接受新的事物和新的交互方式。所以不要用静止的眼光看待用户,不要把用户想的太笨,也不要把用户想的太聪明。

例如在一般网站的文字段落中都会有超文本链接,其表现形式一般使用区别于旁边普通文字的颜色外加下划线的形式表示。之前会有设计师认为也许这样的表示用户会不知道该处是一个超文本链接,所以会在旁边给予专门的提示文字告诉用户该处是超链接,其实随着互联网不断深入到人们的日常生活中,各个网站基本都使用该标准的超文本链接样式,用户已经熟知了这一样式和交互模式,如果在链接旁再加上文字说明,反而会阻碍用户阅读的完整性。

同样也不也要把用户想的很专业很聪明,网页技术人员通常对网页代码、服务器等技术问题非常熟悉,所以也想当然的认为用户也是同样知道这些技术。当用户输入了错误的网站时,页面会显示“404”错误,这个对于普通用户来说就会很困惑,用户不知道这个代表了什么错误,这个又意味着什么。会猜测是不是网络故障,是不是页面出现问题。这时如果我们把“404”错误,换成“该页面不存在”等说明,用户就可以清晰的明白出现了什么问题。这样实例充分说明了不好把用户想的太聪明,都是互联网资深用户。

最后要说一点的是:在设计中任何一个产品都不可能满足所有用户的所有需求,即使前期做过大量的调研和准备工作,新的产品上线时还是不可能做到百分百的功能齐全,可以先上线50%的功能,但是这部分的功能的体验是好的,之后通过实际运行中获得的用户数据和反馈不断优化升级,互联网产品文化就是Beta版文化。用户体验设计的实质就是一个产品不断优化的过程,没有最好,只有更好。