When I decided to go back to school to be a software developer I had a grand plan. The plan was to use this site to show off my programming projects, but I didn’t want to just show the finished projects. I wanted to show how I developed the projects to prove that I could do them the “Right Way.”
I was going to learn all the UX principles and perfect my project management skills to make sure I was showing that I could use the most up-to-date agile kanban scrum thingies.
I wanted to show that my code was well organized, efficient and well documented. I wanted to show that I understood everything that was happening with my code from front to back, inside and out, then front to back again. I wanted to show that when you hire me as a new developer that I can just slide right into your team and contribute right away.
It’s been almost 3 years since I started this journey and I just now feel almost ready to start applying for entry-level positions and the biggest reason I have that confidence is that I have finally finished a few projects. The only way I finished those projects was because I did not worry about doing them absolutely correctly. It turns out that perfection is a dirty word and the definition of “correctly done” is highly subjective.
When I finished my Trespass Notice app and posted my code to GitHub last week I panicked slightly. It wasn’t done “correctly” and now everyone would see that. I didn’t use Git or TDD (Test Driven Development). There are files and models that are unused. I did not refactor my code to make it more efficient. And worst of all, there is some code that I am pretty sure works correctly but I don’t completely understand how. Oh, the shame!!
But I found out that the pride of creating a working web app outweighed the shame. Despite my pride and my expectations, I am still new to this and I will probably never feel as competent as I think I should be. I don’t need to learn all the UX principles (there are too many… and then they change) or know how to expertly manage a software project. My code will never be perfect and I will not completely understand every working part and this is OK. The important part is to complete my projects so I can learn from my mistakes.