技术栈的选择:从Groupon转向Node.js、淘宝去IOE谈起

在本文开始之前,先来看看一些案例。

  • 今年10月份,知名团购网站Groupon宣布完成了为期1年的工作——将Groupon美国站点从Ruby on Rails全面迁移到了Node.js。
  • 2010~2013期间,阿里巴巴逐步完成了“去IOE”运动,将“IBM小型机+Oracle数据库+ EMC2存储”架构逐步转向了“MySQL+PC Server”。
  • Twitter将其一些后端服务从Ruby on Rails迁移到了JVM上。
  • 京东商场后台抛弃.NET,使用Java重写。
  • Facebook iOS客户端使用HTML5重写,后又换回原生应用。
  • ……

[......]

阅读全文

一位苹果应用开发者的5条实战经验

Robjama是一名苹果应用开发者,拥有自己的开发团队,团队开发的多款应用已经有百万次的下载量,收入也很可观。在为苹果在线商店开发应用的3年多时间里,他积累了很多经验并在其团队官方博客上与大家进行了分享。我们挑选了其中5条主要经验向大家进行下介绍:[......]

阅读全文

开发者如何提升技能水平

本文是Denis Gobo做的一个调查表,调查程序员/开发者一般都是通过哪些途径来提升自己在技术领域的技能水平的《How Did You Improve Your Tech Skills》,文中给出了一些对程序员有用的方式方法,但是每个人的喜好不一样,所以各有偏重。不过,要是真的能按照所列出的这些方式方法去做,提升效果一定很大。[......]

阅读全文

如何持续提升自己的开发技能

IT圈子,改变是生存的必备要素之一。计算机领域一直在改变,从基础框架到计算设备,还有几乎每天都涌现出的新技术,这些要求我们必须持续学习新东西。这里将为您介绍一些技巧,以使您在这从未停止的学习之旅更加轻松。[......]

阅读全文

代码重构应遵循的若干原则

重构是一种对软件进行修改的行为,但它并不改变软件的功能特征,而是通过让软件程序更清晰,更简洁和更条理来改进软件的质量。代码重构之于软件,相当于结构修改之于散文。每次人们对如何对代码进行重构的讨论就像是讨论如果对一篇文学作品进行修订一样无休无止。所有人都知道应该根据项目的自身情况来对代码进行重构,而重构是无止境的。莫扎特从来不不对他的作品进行修订,特罗洛普对自己作品修订的恰到好处,大多数作家认为他们俩这样做都是合适的,但他们的合适对于你我来说未必是合适的。[......]

阅读全文

打造优秀APP的9条黄金法则

从苹果到安卓的应用商店,数以百万计的应用蔚然成海,人们越来越难以在其中抓到真正美的应用。作为一个设计师集合体,我们始终在思考。设计用户体验的过程,是追寻美的过程。乔布斯说过一句著名的话:“设计不仅仅是表面上的外观和感觉,产品的整个运转机制都是设计(Design is how it works)。”用户体验的美,在于设计者对用户需求深刻而清晰的认识,从功能、界面交互、视觉外观,直至内容。[......]

阅读全文

从南极之争谈软件架构10个技巧及成功团队具备的气质

随着云计算带来的低创业门槛、大数据潮流的盛行,越来越多的人加入了这场创业风暴。然而众多的淘金者中,真正满载而归的却是少之又少。这里为大家分享 HighScalabilty创始人Tod Hoff结合南极穿越之争带来的成功软件架构经验,及成功团队需具备的一些特性。以下为译文。[......]

阅读全文

JavaScript 开发者经常忽略或误用的 7 个基础知识点

JavaScript 本身可以算是一门简单的语言,但我们也不断用智慧和灵活的模式来改进它。昨天我们将这些模式应用到了 JavaScript 框架中,今天这些框架又驱动了我们的 Web 应用程序。很多新手开发者被各种强大的 JavaScript 框架吸引进来,但他们却忽略了框架身后浩如星海的 JavaScript 实用技巧。本文将为你呈献其中7个基础知识点。[......]

阅读全文

现代Web开发者必备的六大技能

过去,应用开发需要注重大量的专业知识,程序员只需关注单一的语言(比如COBOL、RPG、C++等),并利用该语言创建应用。而如今,时代在变迁。 Web不再是单单关注独立的一面。相反,一个现代化的Web应用开发者应该是“样样精通”。他们不仅要理解开发方面还要明白Web应用安全漏洞问题,了解如何与其他设备集成在一起等等。往深了说,他们还需要了解这些应用程序是如何运行在平板电脑和智能手机上的。

换句话说,Web应用开发正变得更加复杂化。它迫切需要一个不断增加以及不断发展的配套技能。

那么,现代Web应用开发者理应具备哪些技能呢?作者Joe Stangarone总结了几大领域专家的意见(也包括他自身的想法),这六大技能是每位Web应用开发者必须具备的:[......]

阅读全文

Java程序员在写SQL时常犯的10个错误

Java程序员编程时需要混合面向对象思维和一般命令式编程的方法,能否完美的将两者结合起来完全得依靠编程人员的水准:

  • 技能(任何人都能容易学会命令式编程)
  • 模式(有些人用“模式-模式”,举个例子,模式可以应用到任何地方,而且都可以归为某一类模式)
  • 心境(首先,要写个好的面向对象程序是比命令式程序难的多,你得花费一些功夫)

但当Java程序员写SQL语句时,一切都不一样了。SQL是说明性语言而非面向对象或是命令式编程语言。在SQL中要写个查询语句是很简单的。但在Java里类似的语句却不容易,因为程序员不仅要反复考虑编程范式,而且也要考虑算法的问题。

下面是Java程序员在写SQL时常犯的错误(没有特定的顺序)。 [......]

阅读全文

Web开发者易犯的五大严重错误

无论你是编程高手,还是技术爱好者,在进行Web开发过程中,总避免不了犯各种各样的错误。

犯了错误,可以改正。但如果犯了某些错误,则会带来重大损失、遗憾。令人惊讶的是,这些错误往往是最普通,最容易避免。下面将列举最需要注意的五大错误。 [......]

阅读全文

思考软件开发中的快与慢

本文作者Michael Dubakov从事软件开发方面的工作,他在读了Daniel Kahneman的《思考,快与慢》后,思考了软件开发中的快与慢,并且把书中的一些思想应用到实际的软件开发中。下面是笔者对原文的翻译:

最近,我在阅读Daniel Kahneman的《思考,快与慢》,这本书非常令人着迷。里面拥有大量的真知灼见,给读者带来一场思维之旅。目前,我在一家软件公司工作,书中所学到的部分自然而然地可以应用到我们的工作中。下面,我将分享自己从这本书的所感、所知。[......]

阅读全文

程序员的工作不能用“生产效率”这个词来衡量


几乎正如10年前 Martin Fowler 发现的,用生产效率来衡量软件开发工作没有任何意义。原因就在于,它们不属于同一范畴。换句话说,生产效率不具有作为衡量软件开发工作的适用性。“今天创造了多少代码/软件?”这是一个没有意义的问题。即使可以这样测量,软件开发工作上的生产效率也不能以任何有意义的方式估计出它的商业价值。[......]

阅读全文

在团队中进行单元测试/TDD的12条经验

背景

两年前,我在一个Web项目开发组中,项目的目标是编写一个类似Excel的、用来计算产品/服务价格的Web应用程序。项目团队被分成3部分——开发团队、需求团队和QA团队。随着项目越做越大,而我们没有使用任何形式的自动化测试(QA团队使用手工测试),结果导致项目的测试时间比开发时间还要多。每进行一次小的改动,QA团队都要花费几个小时来做测试。

有一天,我参加了一个开发者会议,并与其他程序员谈到了这些问题。他们建议我去学习单元测试、验收测试和TDD(Test-Driven Development,测试驱动开发)。[......]

阅读全文

学习新技术的10个建议

我们生活在一个振奋人心的时代。我们可以越来越方便廉价地获得大量学习资源。这些资源的传播载体由最初的教室被变成了博客,技术论坛等。坐拥如此众多的学习资源,我们没有任何理由不去好好利用。随之而来的问题便是如何在这知识的海洋中选择自己的前进方向。在这篇文章中,我将简要概括一些技术学习的建议,希望可以给你带来一些启发。

尽管我的建议主要涉及的是软件开发方面,但是这些原则在其他领域也同样适用。[......]

阅读全文

程序员面试中什么最重要?

本文转载自Todd Wei的博客,作者从面试官的角度分析了程序员在面试过程中的一些问题,并总结了一些经验。
程序员面试一直是社区乐于讨论的热门话题。我自己从06年实习以来,先后经历了4家软件公司,全部是外企,其中有世界500强的通信企业,有从事期权期货交易的欧洲中等规模的金融公司,也有为大型汽车制造商开发Android智能汽车的新兴公司。跨入IT行业以来,我在求职过程中经历过多次面试,最近两年也有过多次面试别人的经验。我感觉现在到了对这个问题发表自己看法的时候,这篇文章是我站在面试官角度对于程序员面试问题的一个阶段性反思和经验总结。[......]

阅读全文