Attention: Unicorns are as real as advice in this article. As much as I hate to add an obvious disclaimer, I would hate it even more if actual juinors followed this! Now go and enjoy me breaking out of my usual serious role and have a little fun :)
So you’re a junior web developer who just started their career and you want to get your hands dirty with real code, but you’re clueless where to start and what to build. I’ve been there my young padawan, worry not! I’ve got you covered. The following is a list of highly innovative concepts that the open source world has been waiting for. Without further ado, here it goes:
A twitter client.
It’s too bad that nobody came up with an alternative to the boring Twitter website yet. I think the time is ripe for a disruptive new app that uses the web’s full abilities. Think horizontal scrolling, parallax, 3D transforms. A custom, personalized font and tweet design for every of your Tweeple. Replacing hash tags with rich imagery. You’ll get the idea.
A Dialog library
Dialogs are extremely useful for all kinds of UIs, but in 2014, it’s almost unbelievable that nobody came up with an alternative to alerts, confirms and popups (although there’s nothing wrong with popups, of course!). Why not always use popups, you say? Well, with popups, it’s up to the OS to decide how to style and animate them, completely breaking the look and feel of your carefully crafted interactive story-telling experience. If you decide to take a shot, one important note: Any respectable dialog plugin needs to fully support endlessly nested dialogs, a very common and valid use case for them.
A Lightbox plugin
Some people say a lightbox is just another way to style a dialog, but haters gonna hate. Lightboxes are almost the complete opposite in many ways, err, ways that don’t immediately jump to the top of my mind but that surely exist. Sure, there might already be one or two jQuery-based lightbox plugins, but we’re still missing them for Angular, React, Polymer – hell, even jQuery UI has no lightbox yet! It’s up to you to fix this.
A Gradient Generator
Wouldn’t it be nice to be able to forget about all the crazy syntax required to do gradients in CSS and just create them visually? Somebody should really build a tool for this. And best of all, you could combine your work on this one with another component that the editor will need – a colorpicker for the web.
A presentation framework
In 2014, you have no chance of delivering a great conference talk if you don’t show real samples and code for at least half it, or even better live coding. It’s a way more innovative style of delivering a talk and the audience will appreciate you keepin’ it real as a coder. But Powerpoint and Keynote don’t allow embedding live code and iframes with your web apps, so wouldn’t it be neat to be able to do presentations in the browser? Sure, you might loose the ability to go full screen properly (i.e. with a presenter screen), but who needs presenter notes anyway.
A CSS transition effect library
Since the CSS Animation Syntax, as well as CSS Transitions are sadly extremely verbose and hard to understand, it would be super handy if somebody could create a library of beautiful transitions and animations that I can use on my pages. If you decide to build one, here’s one killer feature request: Add a “random transition mode” that will pick a random transition every time the user interacts with the same element, thus making the app less predictable = less boring.
A todo list
Arguably the most complex project in this list, it’s also the most rewarding. While the engineering of a todo list requires highly complex algorithms and definitely isn’t recommended for anyone without a CS degree, it has the highest potential of taking off big time. It makes for an wunderful portfolio project, showing future employers and investors that you’re into deep problem solving and don’t shy away from big ideas.
Update with new ideas from the community (especially thanks to @tobie) for the slightly more senior developers:
- A new CMS (@daljo628)
- A new JS MVC framework (@tobie)
- A static site generator (@tobie)
- A unit test frame framework (@tobie)
- A blog engine (@tobie)
- A rails clone (@tobie)
- A task runner for JS (@tobie)
- A build system (@s10wen)
- A CSS preprocessor (@girlie_mac)
- A package manager (@girlie_mac)
- A CSS Snow Animation (@olivv)
- Color gradients for text (@olivv)
- Pop-under generator (@olivv)
- An ajax wrapper library (@wpbasti)
- A CSS Query API (@wpbasti)
- An extend() method for JS (@wpbasti)
Now I’m sure I’m missing a lot of bright ideas (if you come up with one independently, share it with me on Twitter and I’ll add it maybe!), but starting with any one of these, you’ll gain valuable real-world application development practise and do your part to make the web more complete. Working on something that others sorely need and wished for will make you feel all warm and fuzzy inside. And best of all: Once you’ve coded your first version and uploaded it to Github, others will start to take it from there and create pull requests that polish that raw diamond for you – without having you to worry about maintenance! – allowing you to move on to the next project. The beauty of open source.