There are two great ways to refine your skills — You can either learn from a mentor or you can mentor someone else. While the former is likely obvious, the latter might not seem very intuitive at first. But when you are tutoring someone and giving them guidance, you will generally need to have a very deep knowledge of the subject matter (at least if you want to do a good job).
I’m fortunate in having one or two friends who have expressed an interest in learning how to program. They don’t have high aspirations — they just want to learn the basics. But as I work with them, I realize that I’ve been pretty lucky in my development career. I’m largely self-taught. And though I’ve got a proven track record of being able to solve problems for the business, it wasn’t until I started teaching others that I began to see some of the gaps in my own knowledge. It’s very humbling.
Additionally, every few years I do practice interviews in order to stay in practice but also get a feel for what companies are currently looking for. This has been a great way of keeping my ego in check, for sure. As a ‘passive candidate’ who is generally not actively looking for new employment, I’m not typically as attractive to a company as someone who has no job and is desperate for work. Generally, companies have enough of a candidate pool that I don’t have to worry much about getting too far down the interview process. But some of the questions I’ve been asked from hiring managers gave me enough of a pause that, afterwards, I delved into the topic a lot more than I would have otherwise. Anything can be used as a learning experience that you can grow from — even just a quick phone interview!
There’s something to be said for the ‘just ship it’ mentality, where you focus on core functionality and get it out the door and in front of eyeballs. But the often-neglected skill is going back to what’s been done and adding those subtle bits of nuanced UI improvements.
We all like to assume that the applications we work on are getting better each and every time we sit down in front of the IDE and start banging out code for it. But how do you really know? Code metrics help with that. You can see how coupled your classes are, the cyclomatic complexity, and that sort of thing. As you go, you can look at the historical stats vs the current stats and (hopefully) see an improvement, which suggests greater maintainability down the line. Great.
I can always seem to tell the developers who are accustomed to working on new projects and those that generally work on legacy codebases.
The draft specification for