Fulfill Your Ambitions with Open Source
2013-03-31 09:55
316 查看
Chances are pretty good that you are not developing software at work that fulfills your most ambitious software development daydreams. Perhaps you are developing software for a huge insurance company when you would rather be working at Google, Apple, Microsoft,
or your own start-up developing the next big thing. You'll never get where you want to go developing software for systems you don't care about.
Fortunately, there is an answer to your problem: open source. There are thousands of open source projects out there, many of them quite active, which offer you any kind of software development experience you could want. If you love the idea of developing
operating systems, go help with one of the dozen operating system projects. If you want to work on music software, animation software, cryptography, robotics, PC games, massive online player games, mobile phones, or whatever, you'll almost certainly find at
least one open source project dedicated to that interest.
Of course there is no free lunch. You have to be willing to give up your free time because you probably cannot work on an open source video game at your day job — you still have a responsibility to your employer. In addition, very few people make money contributing
to open source projects — some do but most don't. You should be willing to give up some of your free time (less time playing video games and watching TV won't kill you). The harder you work on an open source project the faster you'll realize your true ambitions
as a programmer. It's also important to consider your employee contract — some employers may restrict what you can contribute, even on your own time. In addition, you need to be careful about violating intellectual property laws having to do with copyright,
patents, trade marks, and trade secrets.
Open source provides enormous opportunities for the motivated programmer. First, you get to see how someone else would implement a solution that interests you — you can learn a lot by reading other people's source code. Second, you get to contribute your
own code and ideas to the project — not every brilliant idea you have will be accepted but some might and you'll learn something new just by working on solutions and contributing code. Third, you'll meet great people with the same passion for the type of software
that you have — these open source friendships can last a lifetime. Fourth, assuming you are a competent contributor, you'll be able to add real-world experience in the technology that actually interests you.
Getting started with open source is pretty easy. There is a wealth of documentation out there on the tools you'll need (e.g., source code management, editors, programming languages, build systems, etc.). Find the project you want to work on first and learn
about the tools that project uses. The documentation on projects themselves will be light in most cases, but this perhaps matters less because the best way to learn is to investigate the code yourself. If you want to get involved, you could offer to help out
with the documentation. Or you could start by volunteering to write test code. While that may not sound exciting, the truth is you learn much faster by writing test code for other people's software than almost any other activity in software. Write test code,
really good test code. Find bugs, suggest fixes, make friends, work on software you like, and fulfill your software development ambitions.
by
Richard Monson-Haefel
This work is licensed under a
Creative Commons Attribution 3
or your own start-up developing the next big thing. You'll never get where you want to go developing software for systems you don't care about.
Fortunately, there is an answer to your problem: open source. There are thousands of open source projects out there, many of them quite active, which offer you any kind of software development experience you could want. If you love the idea of developing
operating systems, go help with one of the dozen operating system projects. If you want to work on music software, animation software, cryptography, robotics, PC games, massive online player games, mobile phones, or whatever, you'll almost certainly find at
least one open source project dedicated to that interest.
Of course there is no free lunch. You have to be willing to give up your free time because you probably cannot work on an open source video game at your day job — you still have a responsibility to your employer. In addition, very few people make money contributing
to open source projects — some do but most don't. You should be willing to give up some of your free time (less time playing video games and watching TV won't kill you). The harder you work on an open source project the faster you'll realize your true ambitions
as a programmer. It's also important to consider your employee contract — some employers may restrict what you can contribute, even on your own time. In addition, you need to be careful about violating intellectual property laws having to do with copyright,
patents, trade marks, and trade secrets.
Open source provides enormous opportunities for the motivated programmer. First, you get to see how someone else would implement a solution that interests you — you can learn a lot by reading other people's source code. Second, you get to contribute your
own code and ideas to the project — not every brilliant idea you have will be accepted but some might and you'll learn something new just by working on solutions and contributing code. Third, you'll meet great people with the same passion for the type of software
that you have — these open source friendships can last a lifetime. Fourth, assuming you are a competent contributor, you'll be able to add real-world experience in the technology that actually interests you.
Getting started with open source is pretty easy. There is a wealth of documentation out there on the tools you'll need (e.g., source code management, editors, programming languages, build systems, etc.). Find the project you want to work on first and learn
about the tools that project uses. The documentation on projects themselves will be light in most cases, but this perhaps matters less because the best way to learn is to investigate the code yourself. If you want to get involved, you could offer to help out
with the documentation. Or you could start by volunteering to write test code. While that may not sound exciting, the truth is you learn much faster by writing test code for other people's software than almost any other activity in software. Write test code,
really good test code. Find bugs, suggest fixes, make friends, work on software you like, and fulfill your software development ambitions.
by
Richard Monson-Haefel
This work is licensed under a
Creative Commons Attribution 3
相关文章推荐
- Fulfill Your Ambitions with Open Source
- DIY BROADCAST : How to build your own Internet TV Channel with Open-Source & other goodies
- Wiring Your Web Application with Open Source Java
- Make a Native Windows Installer For Your Applications with these Open Source Tools(转载)
- Paraglyph_-_Open_Source_Development_with_CVS__3rd_Edition
- MySQL: Your visual blueprint for creating open source databases
- Configuring IPCop Firewalls: Closing Borders with Open Source
- Using Moodle: Teaching with the Popular Open Source Course Management System
- The 10 Best Open Source Projects You Should Be Volunteering To Help With
- 在Github上的开源项目:你的第一次贡献(原文:Open Source on Github: Your First Contribution)
- 【译】Six Open Source Dashboards to Organize Your Data
- HTTP Streaming with FFMpeg and an Open Source Segmenter
- http://maniacdev.com/2010/06/35-open-source-iphone-app-store-apps-updated-with-10-new-apps/
- Windows SharePoint Services To Be Open Source With 2007 Microsoft Office Release
- Open source robotics toolkits: use virtual arenas to test your robotics algorithms
- 8 Best Open-Source Ecommerce Platforms to Open Your Own Store
- HTTP Streaming with FFMpeg and an Open Source Segmenter
- 8 Best Open-Source Ecommerce Platforms to Open Your Own Store
- OpenProj: The OpenSource Solution for Managing Your Projects
- Open Source .NET Development : Programming with NAnt, NUnit, NDoc, and More