It’s been a long time since I’ve written here. I write at least one blog article a week these days, but it is usually over on the Overpass blog. Things are going very well with Overpass. I mean, sometimes it’s a rollercoaster, but it’s heading in the right direction.
Right now, it is 4:52am and I’ve been up for nearly an hour. My 4am regime has slacked a bit during the summer … it’s tough when school is out and all schedules change. But, now that it’s September, it’s time to get back into this discipline of waking up early.
I’ve been writing a lot of code lately, which is fun to a point. Creating software is a lot like learning a language. When you start a new project, you make massive gains and it feels like you can write an app in a few hours. But then you get into the minutiae and things slow down. Many projects don’t make it past this point, but the learning always helps. Everything I learn while creating an app contributes somewhere … even if the app never goes live. I’ve been in so many consultancy situations where I used something I’ve coded before and applied it in some situation that I had not foreseen.
I think that’s one of the major reasons I’ve done well as a contractor. People think I am smart … which is definitely not always the case. But I do have a lot of experience. Most of it doesn’t come on the job.
This is one thing I notice in junior developers. They are tied to their outcome and only learn what they need to know. If you only do it for money, this is how things work out. You are hired to perform a task and you learn what you need to for that task. But when you code for yourself, you explore more of the possibilities.
My hard drive is filled with half completed projects that were going to be the “next big thing for Overpass” but never made it past the tedium of minutiae. The ideas weren’t strong enough (or the topic was not interesting enough) to continue on with them. But, I learned loads from them. I don’t get a book out and start reading because I think it will get me a job in the future …that would be too boring and feel too much like work. But I will read up on a technology if I thought I can make something for myself. This is where the real learning happens … it’s like exploratory surgery. Every time I start a new project, I have high ambitions. But even if the project fails, I learn tons from it. It costs me time and effort … but the education gained usually benefits me later on a client project or another project for myself.
The difference between your own projects and client projects is that client projects have to get done. You’re being paid to produce, so you need to ship. Even if the code is not the cleanest, you need to deliver.
The danger of starting your own project is that you want perfection. I see this everywhere. So many people are working on an app and far fewer have released an app. Releasing is scary … an app can always be better.
I am usually successful with my own project when I treat it like a client project. It must get done.
But, when you tinker away in front of a code editor, nothing gets lost. If the end result is not usable software … it’s knowledge you use later.