Fulfill Your Ambitions with Open Source
不用你来做开发工作就能实现你雄心勃勃的软件开发白日梦,想必也是极好的。也许你正在为某大型保险公司开发软件时,你宁可在Google、Apple、Microsoft、或你自己的初创公司工作,准备搞一个大动作。你再也不用为那些你根本不关心的系统去开发软件。
幸好,有一个办法可以解决你的问题:开源。那里有成千上万的开源项目,而且其中多数都很活跃,为你提供任何你想得到的软件开发经验。如果你热爱这种开发操作系统的创意,去给其中的某个操作系统项目帮忙吧。如果你想为音乐软件、动画软件、密码学、机器人、PC游戏、大型多人在线游戏、移动电话、或任何(软件)工作,基本上你一定能找到一个符合你兴趣的项目。
当然,天下没有免费的午餐。你不得不放弃你的自由时间,因为你很可能无法在工作日为一款开源的视频游戏工作——你仍然要向你的雇主负责呀。还有,很少有人能通过给开源项目做贡献而获得收入——少部分可以但绝大多数不行。你应该愿意放弃一些自由时间(少玩会视频游戏、少看会电视,你又不会死)。在开源项目上你工作越努力,你就越能尽早意识到作为程序员你真正的理想。但也要注重你的劳动合同——有些老板可能会限制你可以贡献的内容,即使在你的私人时间。此外,你需要小心不要违反与版权、专利、商标、商业机密等相关知识产权法。
开源可以为那些躁动不安的程序员提供巨大的机遇。首先,你可以看到他人是如何对你感兴趣的那些项目实施解决方案的——你会从阅读他人代码中获益匪浅。其次,你可以为这些项目贡献你的代码和想法——不是每个精彩创意都会被接受,但你可以通过研究解决方案和贡献代码学到很多东西。第三,你会遇见对你的软件充满热情的优秀人才——这些开源友谊能持续一辈子。第四,假设你是一个贡献者,你可以在你真正感兴趣的领域积累实际经验。
开源入门实在是太容易了。这里有大量关于你需要的工具的相关文档(比如源码管理、编辑器、编程语言、构建工具等)。首先找出你想要研究的项目,然后学习项目所采用的工具。多数情况下项目文档都比较少,不过最好的学习方式应该是自己查阅代码。如果你想参与,你可以提供帮助文档。或者你可以从义务写测试代码开始。当然这听起来没那么让人兴奋,但实际上你会因为给别人的程序写测试代码而比那些从来不活跃的人学习得更快。写测试代码,真正好的测试代码。找出bug、修复建议、交朋友、为你喜欢的软件工作,实现你软件开发的抱负。