I try to keep in good programming shape same as keeping your body in shape, by working it out. And just like exercising your body, the more you exercise your programming skills – which in itself isn’t that much removed as it is also a psychosomatic experience more towards the neural range – the better you get and find higher nuances and abilities which seem to appear out of nowhere. The inverse is true, you stop and results slowly deteriorate.
So to that end these are the main things I proactively try to do daily:
- Algorithm practice – Basic, intermediate and advanced sections on FreeCodeCamp
- Codefights – something I float towards when I get stuck on FreeCodeCamp (currently Python)
- Functional Programming Meetup with a group called Functional Kubs**
* This is a really really good course that dives beneath surface to examine the innards of the engine and how it feeds through to the idiosyncrasies of the language to exploring a library, building your own to ES6. First few sections are more theory laden and even after that you’ll need to follow along in an ide and repeat to keep pace and retain (you’ve been forewarned). Also I bought the course as part of another deal and not on Udemy but it’s the same author and seems to be same content.
Now just want to touch upon why each of these types is relevant and how their synergies would yield better returns to learning and improving.
Website based Algorithm practice
This is crucial as most sites offer a varied mix of questions to try and solve. They also include tests which check various inputs to verify if the solution you passed it is actually valid. Downsides include that most of these are in browser and you miss the setting up and growing (head wrecking) potential of setting up project structure yourself. Another point is that unless if you know how to debug your own code or use browser tools you’re often left to the mercy of the sites test suites to verify your code – which might actually be right sometimes but a glitch or something might not let you pass.
One of the key issues with tutorials online is that they often tend to be geared towards the beginner and then go off explaining the basics ad nauseum then whatever tangential exposure the author(s) feels relevant. These are crucial in the beginning but however might be lacking in actual real world uses or scenarios – especially when it comes to higher level language function and usage.
Higher level courses like these are imperative for moving beyond a certain level where you might find yourself stagnating. This could be perennial beginner (moving on from one intro to another), tutorial collector (similar to the first one but often more project based work). So this would improve your semantic programming capabilities by improving your syntactic knowledge and structural paradigm.
Caveat, unless an ample process and repeated practice is used this will tend to fall into the tutorial ghosting syndrome (you pass through it or vice versa without hardly any residue). The onus is on ourselves to absorb the content and try elevate our own skills and by using it at higher levels of difficulty.
Meetups for programming
This is a great way to not only learn how to program but to network and meet people who not only share the same interests as you, but would have vastly different and varied experiences and skills.
The one I joined has a particular emphasis on meeting and splitting off into pairs and solving a programming challenge in an hour. Along with hearing about, being exposed to new languages or paradigms, you actually might start using a new language or an approach which otherwise you would never have come across. And the time constraint enables you to realise how to structure your approach and tooling for most challenges and gauge your own efficiency or lack thereof.
Of course to everything there is a downside. Often in the form of social settings or maybe not having as much skill as you’d like (or thinking that you don’t which is worse) to not being able to physically make it to the meeting. But suffice to say the group I have is very welcoming, and although I was totally out of my comfort zone, programmatically, it gave me, in a very short session, areas to focus on to improve or learn further.
So this is my primary tact to practicing and improving, Let me know in the comments how you go about structuring your daily-weekly programming life. Keep on coding.