The Pitfalls of the “Personal Project”

One thing I’ve noticed over the past couple of years is that “personal projects” are incredibly common among software programmers. This is especially true for programmers, like me, who are new to software development. Unfortunately, it is possible to do personal projects for all the wrong reasons. Before you start your next “Personal Project”, ask yourself why?

BAD REASON: I need a FOO that does BAR

WHY?

I’m sure we’re all familiar with the adage, “good programmers write good code; great programmers steal great code“. Why write something when someone else has already done a better job?

If your feature has not been implemented before, perhaps it would save time to provide a plug-in or modification for an existing open-source solution. That way you get your feature, but save on time.

WHEN IT’S OK

If you find the problem domain in question particularly interesting, then it’s always okay to do a simple hobby project. Hobby projects are meant to be fun and interesting. They do not need to compete with existing solutions, but if they evolve to be a good competitor, then all the better!

BAD REASON: I want to learn a language/framework

WHY?

It’s true that often the best way to learn a new programming language or framework is to use it. The more extensive your use of a framework, the better you understand how it works and all of the pros and cons.

However, which is more useful: 20 hours spent learning 1 framework in-depth, or 4 hours on 5 different frameworks so that you can compare them?

Doing an entire project with a particular framework just to learn how it works is often overkill, and leaves you unable to compare the framework to alternatives. Instead, just a few hours can give you good context to compare several frameworks and select the one that suits your needs best.

WHEN IT’S OK

If you already have a project you want to work on, and the framework or language in question seems like a good fit, then go ahead and give it a try! Longer projects always give a better understanding of the pros and cons of the tools you use.

BAD REASON: I want to grow my professional portfolio

WHY?

Ask yourself this: Will the project reflect well on me? Is it of professional quality?

Put another way, does your project compete strongly with existing solutions? If not, why would a potential employer be impressed?

I’ve seen this one a lot lately. With the struggling economy, many of my friends are graduating from school to find the job market harder to crack than they expected. While on the job hunt, they find themselves with a lot of spare time, and what better way to use your time between interviews than to make yourself more employable?

Please, think twice before you add a half-baked blog solution to your professional portfolio.

WHEN IT’S OK

Just remember, if you want to add it to your professional portfolio, it has to be of professional quality.

GOOD REASON: Because it would be fun!

WHY?

We’re software developers. We’re in this because we love it! So if you want to build something because it would be interesting, fun, or cool, go for it!

Hobby development can be one of the most rewarding experiences in software programming. You can learn a lot, and have a lot of fun doing it.


CONCLUSION

It all comes down to what you’re trying to do. Are you working on a hobby project, or a professional project?

If you’re working on a professional project, you should approach it in a professional manner. That means that you should have professional quality, you should not waste time or resources, and you should have an idea how you could justify your decisions to an outsider.

If you’re just looking to have fun and learn something cool, then why are you still reading? Get out there! Have fun! This is one of the few careers that lets you work all day professionally, and still come home wanting to write software as a hobby, so take advantage of it.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s