在享受了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年中 我学到了很多,我知道自己一定也错过了很多。过去的一年里,我开始加速回顾所有软件开发的相关内容,现在的我感觉已经进入正轨并准备在今年重新起航。
英文原文:Danny Does 编译:伯乐在线 – 唐尤华
【如需转载,请标注并保留原文链接、译文链接和译者等信息,谢谢合作!】