This post is in continuation of the post – How to be a better programmer.
Moving forward from the general stuff, here are some of the strategies that you can follow on your path to self development:
Learn one language well
I think I have mentioned it in the previous post, to have some focus. What I want to stress here is that, go through the ins and outs of one language. You might think that it will make you too specific(you don’t want to just stick to PHP!), but that isn’t all about it. As mentioned before if you want to stay in the tech. field you should be able to learn and sometimes what you learn might become obsolete. Don’t get disheartened learn more.
So when I say learn well – go through the specifications/documentation of the language. Once you are done with the major working part, start focusing on the other not so commonly used stuff as well. Take PHP for example there is a lot to learn about Security, its Features, and other things like PHP at the Core: A Hacker’s Guide. I haven’t gone through all of them yet, but whenever I get a chance, I do read through it. It really amazes me how much more there is to a language than we usually use.
Read, write and teach
Have a hobby project. Think of all the various features you can add to it. To learn new technologies(languages), try implementing a part of your project in that new technology. All of this would give you great perspective on how to use a language. You might not be able to experiment a lot professionally, but with you hobby project you can do whatever you want to. Rip it all apart build it again, it might be frustrating but each iteration will have something to teach you.
Take any opportunities that you get to teach what you have learnt. Share it with your colleagues, give a talk in your local meetup. Teaching is a great way to learn more.
Read other people’s code, pick up a project from Github in your favorite language, start reading the code. Try understanding the approach or maybe even contribute to making it better.
Do some deliberate practice as well, apart from your hobby project, where you are the boss, try your hands at solving problems that have certain constraints. One way to do such practice is to try your hands at sites like Codewars, Hackerrank, Codility etc. Some people say these sites do not teach the real world development, which is in kind of true. But the advantage you will get from such practice will be to think in terms of performance and writing efficient code.
Contributing to open source is another way to practice, under some constraints(imposed by the project).
Get as much feedback as possible
I really wish, I had got more people to look at my work, critically. You look at your own work, everything looks perfect. Somehow, a different set of eyes can help you catch that unnecessary loop, the unwanted function call and many such things. So it is a good idea to show your work to the world(or someone other than you). I have not been really good at this, but what the better time than starting “right now”.
And it is not just about code, it can be an article you wrote or a presentation.
I will continue following up on this by some ideas for self development while on the workplace and making use of your own time.