告别编程5年再次回归,我注意到很多变化

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