Everybody wants to get better, but how to do it optimally and have fun in the process? Here are a few tips on how I try to keep up with the ever expanding software development universe!
Habits are better than knowledge
Let’s compare an experienced programmer with no habits to improve as a programmer to a driven beginner with a habit of learning something new every day. How long do you think it is going to take for the beginner to surpass the experienced programmer? It is inevitable.
Careers and skills take a long time to build, and they aren’t going to be built hacking overnight. While having a hackathon doesn’t hurt now and then, you don’t want to use them as a foundation for growth.
In addition, how often do you know what is the right thing to do, but you don’t do it anyway? Everybody knows you should write tests, refactor code and squash commits, but why can it be hard? The answer is simple. They have a habit of NOT doing it, instead of a habit of doing it. It isn’t just knowledge or skill. Some people just haven’t built a habit out of doing these things. If you discipline yourself into squashing commits consistently, at some point it will become harder not do it. Like brushing your teeth or checking the alarm before going to sleep.
Fill your social media with programming stuff
Wouldn’t it be awesome if you could browse Facebook and actually have it be productive? It’s simple. Fill your social media feed with programming. There are a ton of Facebook pages, Instagram feeds, Twitter accounts etc. that put out programming stuff every day. If you follow them, you will create your own little knowledge feed of awesome up to date learning material. Then you can check Facebook all day and feel good about it! Okay, probably not all day.
Be vulnerable and ask when you don’t understand
I think we have all been there. Somebody asks you about something and you just go “Uh huh, yeah, totally!” Suddenly you’re on your way to Hollywood.
What if instead you said, “No, I don’t know what that is. Could you explain it?” How much more would you know right now, if you did that more often? We cannot be expected to know everything. Why do we act like we do? Of course, we want to look good and convince the potential customer, or our boss, or just to one up our college, but pretending to know is not good for growth. A few times when I’ve done this the other person will also admit he has no idea.
However, be cautious about derailing the conversation in a meeting. You run the risk of wasting everyone’s time. It might be better to make a note and ask after the meeting. Unless it is critical to understand it during the meeting. If somebody asks you to explain, you could politely explain you’d rather explain after the meeting to save everyone’s time.
Don’t settle for “It works”
If you settle for “It works” you will find yourself constantly fixing unexpected problems later down the line. In addition, you will have a hard time fixing them, because you may not even know how it works!
But how do you go from “It works” to “It works and I know why”? Probably the most effective way to keep up with your code is to rewrite it at least once. Once you get something to “work”, stop and look back. What could have been done better? How can I make this more readable? Most importantly, if you haven’t already, write some tests. This part typically takes 20% of the work, but it will reduce your workload by 80% down the line.
Imagine that you didn’t take the time to write tests and refactor the code. A week later there are bugs and you have to return to the code with all the shortcuts and hacks and no tests, just because you thought to yourself “It works”. Now you are in an actual hurry since the customer is using broken software, and now you’re forced to apply even more duct tape. It is a vicious cycle.
Just build whatever!
Sometimes I get stuck watching tutorials for a day, and copying example code line for line. After that, my brain always feels like a zombie took a bite off them, and usually everything goes out the other ear by the next day.
Instead, I will sometimes just build whatever! Stuff that I’m excited about, or stuff that is just silly. Building anything that I’m at least mildly excited about works better for me than any tutorial. And if you do it well, it could also be a little something to show in your portfolio.
Be creative! Spend some time brainstorming and planning what you want to build while learning. For me, this makes learning more motivating and fun!
Learn programming patterns
Libraries come and go, however Programming Patterns stick around. For example, the observer pattern was described in a book “Design Patterns” in 1994 (it is older than that), and even today it’s something you cannot avoid. Luckily even in the fast moving software world, somethings stay the same.
Knowing patterns will also help you to familiarize yourself with an existing code base, or to communicate ideas. You could just say “Do you think using the observable pattern is appropriate here?” If the other person knows what observables are, this is an efficient way to transmit information. You might get asked about these in a job interview too.
All in all
Admittedly I struggle with the things listed here. I believe they are a good thing to do, and that they have helped me in my career. However, they definitely don’t happen automatically only because you know about them.
Learning programming patterns has given me a sense of security. Filling my social media with learning material, has given me the latest information. Not settling for “It works” gives me deep understanding. Building habits allow for consistent personal growth, and finally just building whatever allows me to enjoy what I’m doing.
Putting on the brakes
“When you believe you have no limits, and that you can do anything if you really put yourself into it, there is no limit to how badly you can burn out.”
Take care of yourself. Everything is going to be fine. You don’t have to learn everything in an instant. If you are studying or working in the industry you are gaining experience and knowledge. Don’t worry, you are progressing.
I would love to hear from you! If you feel that something important is missing, or you agree or disagree with me, let me know. I would appreciate it.