在享受了 6 年的全职软件工程师生涯之后,我决定换个活法。接下来的 5 年里我进修了 MBA 课程,并尝试了各种管理和投资类型的角色。我依旧关注技术,但在此期间并没有积极参与软件开发,也许配置一个 wordpress 主题或插件可以除外——当然这不能和软件开发相提并论。
我并没有像以前一样持续关注最新的技术潮流,因此对于编程技巧已非常生疏。
一旦决定了要做自己的事业,我想到从过去离开的地方重操旧业会相对容易。结果我发现,软件开发和其他技术一样需要持续的关注和时间投入,否则技能会丧失殆尽。
(在众多的理由中)对于与软件开发隔离这段时间,我已经解释了自己是如何看待自身的编程技术。因此我打算在这里谈谈在我告别软件开发这 5 年里,世界软件行业的变化和发展。
从某种意义上讲,我是在 2006 的夏天告别编程开发的。那时,我使用 J2EE/Java 进行后端服务器软件开发,采用了面世仅 1 年的 Spring 框架。再一次回到软件开发,我已经不再和 Java 代码打交道了(不是因为我不喜欢 Java,而是因为 Java 不适合我目前的工作)。坦率地说我没有关注 Java 方面的进展,因此不会在这里讨论这 5 年中 Java 业界的变化。下面是离开编程之后我注意到的几个显著改变:
PHP 成为了可用的企业级平台
公平起见,在我之前的软件生涯中我没有开发过基于 web 的应用程序,所以我的观点可能不准确。但是,我认识的绝大多数人都不曾考虑使用 PHP 构建企业级应用。PHP 被用来开发辅助项目或者小型网站。我很少使用 PHP,所以从未想过使用它开发公司产品(是的,我承认,我的名字叫 Dan,我使用 PHP 为自己的创业公司开发产品)。
我想这种变化很大程度上归功于 Ruby on Rails(RoR)运动,而在离开软件开发的 5 年中我完全错过了。RoR 在 2005 年 12 月发布 v1 版本,所以我猜在我告别软件开发之前 RoR 技术上就已经实现了,但并没有成熟,因为在此之后的 1 年多时间里我都没有听说过 RoR。
(译注:Ruby on Rails: 是一个易于开发和部署的 web 框架,它构建在 Ruby 语言之上,被认为是现有企业框架的一种替代。)
我认为 RoR 推动了 PHP 的成熟。现在,使用最新的 PHP 版本(5.3+)结合一些新的框架(我选择的框架是 Lithium),PHP 已经成为了很多类型的应用开发可以信赖的基础语言。
我可以简单地将 RoR 列为本文介绍的要点之一,然而由于在回归软件开发之前我从未使用过,因此决定还是不将它列到我的清单中。我可以肯定,很多人(事实上昨天就有人这么告诉我!)会说,如果我不采用 RoR 就意味着我还没有彻底回归软件开发,所以我想还有很多新东西等待我去发现。
社交化的软件开发
在我告别软件开发的时候,像 SourceForge 和 FreshMeat(现在改名叫 Freecode)就已经出现了,但就社交化的软件开发而言,我认为他们没有取得像 GitHub 这样的成就。GitHub 在 2008 年起步,所以在对社交化软件的理解上能够从 Facebook 以及类似产品中得到启发。花时间检阅 GitHub 并从别人的代码中学习是如此的容易,以至于让我感到非常惊奇。我承认,我没有像别人那样自由地分享自己的代码。我虽然使用 GitHub,但只打算将自己的工作封闭起来。我猜这么做的一个原因就是,在离开的这段时间里我错过了社交化软件开发。
像 Reddit 和 Hacker News 这样的网站对社交化软件开发也做出了巨大的贡献。这两个网站都是在我离开这段时间起步,所以我正在努力进入和了解(大多数时间我都在阅读 Hacker News)。
很明显,社区的概念已经存在一段时间了。但我已经习惯了从像 TheServerSide.com 和其他一些网站(名字已经不大记得了)阅读专业的技术新闻,然而这些网站的风格更像是社论而不是社交式的评论。
nosql 数据库等等,你告诉我在我离开这 5 年里,人们已经完全抛弃了 SQL?想问我是否喜欢这种变化?你恐怕是疯了,因为这是不可能的。关系数据库和 SQL 是软件开发世界中的一个常量。无论你选择的编程语言是什么,在某种程度上每个人都会在数据库层次用 SQL 作为标准来处理数据。
在重拾软件开发后,我开始听到像 CouchDB 和 MongoDB 这些数据库。我意识到,我正在试图用 MySQL 处理非结构化的数据(例如,把 json 赋值到一个 column)并开始研究 MongoDB。
(译注:JSON:(JavaScript Object Notation) 是一种轻量级的数据交换格式,是基于 JavaScript 的一个子集。)
让我惊奇的是,我能够迅速抛弃多年来用结构/关系数据库的方式思考问题(不是你认为 NoSQL 做不到的功能,而是我正在谈论的内容)。我在研究生阶段以及工作中学到的东西突然都不起作用了,就是那种感觉。想想就很疯狂。
移动软件开发
这是我错过的最重要的部分,未来我打算用一整篇的内容来详细讨论。如果我还在忙碌于软件开发中,我应该会走在这股潮流的最前沿。在离开软件开发之前,我已经涉足很多移动软件开发。我构建了基于 J2ME(它现在还存在吗)的应用程序,BREW(还有人记得 Qualcomm 平台吗?)以及无线标记语言(WML) 。那些都已经成为美好的回忆。我们的 WML 应用曾经在许多运营商中名列前茅。那时我们面对的内存少得可怜,屏幕也非常小,而触摸屏只是一个未来的构想。
在苹果将其作为战略之前,尽管人们认为这是有可能的,但我怀疑手机能否成为应用开发平台。2007年,在我离开软件开发 1 年之后,苹果公司发布了 iPhone 发布。接下来,正如他们所说的那样,一切都成为了历史。
现在,我又回来了。我决定放弃 Objective-C/Android Java 而直接转而使用 HTML5/Javascript 开发移动应用,我相信这就是我的产品所需要的。
JavaScript
为什么还会有 JavaScript?在我离开的时候,由于浏览器兼容的问题,JavaScript 只能完成一些非常基础的功能。我还记得第一次开发 web 程序时,为了在 IE 浏览器中支持我不得不同时编写 JavaScript 和 VBScript,为此我会尽可能减少编写与浏览器相关的脚本。
2006年 8 月,几乎是在我全职编程工作的最后几天,JQuery V1 版本面世了,所以我完全错过了这件大事。
现在,考虑 Javascript 能否胜任编写整个应用包括服务器和客户端这样的想法已经是难以置信了。而且,现在我已经开始对 JavaScript 加速(我采用 Backbone.js 而不是广泛使用的客户端),我为 JavaScript 的能力所震撼(尽管不是很完美)并期望在我未来的新项目中融入 NodeJS。
每个人都可以创业
最后我要说的就是这个疯狂的想法:如果有创业的想法,每个人都应该创立自己的公司。2000到 2006 年,我的第一份工作是做软件开发,那可不是最佳的创业时间。当时,第一轮互联网泡沫刚刚破灭,我觉得能找到一份软件开发的工作已经是非常的幸运。事实上,我是在我兼职的公司开始了全职程序员生涯。那时,我所在的开发小组一半人下岗,我没有被解雇的唯一理由是,裁员那天我正好在学校并且管理层不知道如何联系我(在 2000 年我甚至没有手机!!)。所以,我是第二天在公司出现时才知道团队中有一半人被解雇,公司最终决定留下我是因为他们知道我能够胜任项目开发工作(事实并非如此,但我是这么告诉他们的)并且价格低廉,那时我还是兼职。在我毕业时情况开始开始好转,所以他们雇用我做全职开发。
现在的我已经有了一些阅历和勇气(或者说傻气)可以拒绝好的C-level 管理职位并开创自己的事业,我非常感激现在的环境,创立一家公司变得更加容易了。创业的成本更低(我能够自己承担启动资金),有更多的投资(尽管我选择了拒绝风投),并且有很多现成的免费资源可以使用。现在真是一个绝佳的创业时间。
总结
尽管在过去 5 年中我学到了很多,我知道自己一定也错过了很多。过去的一年里,我开始加速回顾所有软件开发的相关内容,现在的我感觉已经进入正轨并准备在今年重新起航。
新闻热点
疑难解答