When people talk about how great of a job market there is for developers they typically just assume that you’re typing in a few commands in a computer and calling it a day. What most people do not realize is that a good programmer is one who loves his job and is constantly exploring new possibilities.
When we see hugely successful people like millionaires, CEOs and entrepreneurs we are seeing people whose success is largely attributed to the fact that they love what they do and so they do a lot of it. In order to be a good programmer, you need a passion for coding and you need to cultivate and nurture that passion with side projects.
- A larger portfolio will always look better than a small one when on the job hunt
- A way to solve either simple or complex problems you are currently facing in your everyday life (i.e knowing what groceries to buy, scheduling appointments etc)
- A great way to introduce yourself to new technologies.
- I’ve heard it recommended to learn 1 new language a year.
Remember that we are talking about a side project here – work on this project will take a backseat to your other responsibilities at work or home. As such, it is important to be realistic. It is usually best to pick something that solves a very specific problem, it could be a simple calculation or a geo-location app but the simplicity of the application will help ensure you do not get caught in a quagmire.
Now, of course you do not have to abide by this soft rule. If you have some lofty and ambitious project you know, ahead of time, will take many months or years but you are committed to it and passionate then by all means – proceed. The purpose of side projects can be summarized in the following way:
- Have fun
- Learn something new
- Get better
Now, when it comes to actually getting started, there are a few ways to attack this that will make the process very easy. They are similar in a lot of way to how you would start any project.
1. Identify your MVP
Your MVP or Minimum Viable Product is the core functionality of your application. You may have plans for all sorts of fancy API’s and Styling but what is the essence of your program? If you do not have these features, you do not have an App, so make these features the #1 priority. As you progress further in your application you can begin to start adding more functionality and give the app a personality of its own.
2. Sketch out your Database
Something I learned at Launch, and found very valuable, was the process of sketching out your database before you begin your project. With your MVP in mind, think about how data will be flowing from one user to the next and how those relationships will need to be created. The name for this sketch is called an ER Diagram, short for Entity Relational Diagram. It maps out all of the associations amongst database tables. This is very important so do not skip this step unless you have little to no need for a database heavy application.
3. Write some User Stories
Think of User stories as the piece that connects your ER diagrams with your MVP. User stories are an invaluable resource for visualizing how you want your site to function from the perspective of your users. A good User story will direct you on how to best implement your MVP to fit your vision for this project. An example of a User story would be something like this:
As an Authenticated User
I want to see all of my friends pictures from the home page
So that I can rate them either positively or negatively
Based on this User story we are able to more clearly formulate in our head how we want our front end to be structured and the ways in which our backend will have to complement that design.
Much like Rails is a convention over configuration framework – what I outlined above is a prescription for success that will make your life much much easier going forward. It is important to not get to a point of frustration with these side projects. They are meant first and foremost as an exploratory measure for you to learn new technologies and enjoy yourself – if you aren’t having fun you’re doing it wrong. Happy Coding!