I’ve been professionally developing for the past 10 or so years and I remember how in the early years I used to read all these “How to be a great developer” blog posts. These posts usually consist of a shit-ton of things like: read blog posts, write blog posts, catch up on the news, listen to podcasts, learn new frameworks, learn new languages, learn something new everyday, teach something new everyday, write books, get involved in open source projects, start a developer user group, start an open source project, fucking register a patent while water skiing tied to the back of a fighter jet.
By the time I was done reading the post I’ve already experienced 2 nervous breakdowns because how am I supposed to accomplish all this while working a full time job and still maintain a life?
First – relax.
Second – no one expects you to do all of this.
Here are my 2 cents:
Yes, learning is important and stagnation is bad for your progress as a software developer because software really is a craft. You have to keep up and there’s no way around that. But don’t force feed yourself huge amounts of information like a cow on a factory farm just so that you can check that mark.
Learn new things that actually interest you, that capture your imagination, that re-fuel you with the inspiration that got you started with programming in the first place.
I used to have down times where I’d finish work, go the gym, then go home to eat my dinner, flick on the TV and then blank. Even if I had a great day at the office, even if I’ve accomplished a new record time on my 5-mile run, I’d end the day feeling like a hollow shell. I’d meet friends in bars and go to gigs but still nothing. Through sheer boredom and feeling like a useless shit, I discovered the satisfaction and joy of creation. A day in which I created something, a day for which I’ve got something to show for is a day that I end feeling happy and satisfied.
But don’t get me wrong, creation can mean many things. You don’t have to create the gorram Sistine Chapel. It can be something as simple as following a short tutorial, creating silly pixel art, writing documentation or spending 15 minutes on your pet project. Just something!
If creation makes you feel good, then you should keep it up. So actually persistence == habit.
Like eating well, like working out, like reading books, like playing instruments, like keeping up with relatives – If creation doesn’t come naturally to you, it’s a lifestyle habit that you have to maintain until it feels more natural.
Of course maintaining a new habit can be hard which is why you should also maintain a sort of frame that’ll keep you going. This frame can be a Mentor or incentives such as gamification.
For example – I love playing the drums. But being a person with many hobbies I also find it very easy to push it aside and do other things instead. So I take lessons from a teacher and she’s my Mentor. She’s better than me, she improves me, she keeps me on my toes and gives me homework. She is my frame for improving as a musician. Paying someone to be your teacher is great! They earn a living and you earn experience and knowledge!
In the same manner your mentor could be an artist or perhaps a committer on an OS project. Your incentives could be a good score on StackOverflow or a long streak of activity on Github.
Having a track record of your different creations and your path to improvement is extremely satisfying.
Learning and creating can be hard and can come with much frustration, but eventual accomplishment is crazy rewarding.
In my whole life I’ve never been able to draw. My handwriting looks like scribbles done by a madman and I can hardly doodle a face with an expression or two, but that’s it. What I’m trying to say is that I suck at drawing.
I’ve recently had an idea for a 2D game that I’d like to make so I started dabbling with pixel art. My first drafts sucked, I mean really sucked, and I hated the process of creating them. I don’t know the key mappings of GIMP, I don’t know how to draw lighting or shading and how the fuck do I make a spritesheet?! I hated it.
But I’ve got a game to prepare so I tried again and created more drafts. With every draft of art the process got easier and more enjoyable and the final product looked better.
I find that one of the keys to successful perseverance is maintaining a healthy amount of frustration. The process should be frustrating enough so you know that you’re out of your comfort zone, but not so frustrating that you breakdown, leave and never touch it again.
Excluding the part where you’re frustrated while persevering – Don’t suffer.
Going back to Learn, remember that after all this is your own free time, and if you’re already taking time to learn and improve – pick something that you can enjoy and benefit from, not something just for the sake of learning.
The amount of content out there is endless. Software development has so many niches that even if you work as a developer your whole life you still wouldn’t cover it all, so go find something you like!