I am Robert C. Martin (Uncle Bob). Ask me anything.

View original thread
namelesspipe's photo

Uncle Bob, thanks for sharing your wisdom with the world. At my previous job, we watched the Clean Code videos on regular basis and have introduced many new people to you. We've learned a lot, were entertained by your antics, and have also argued with you, but you weren't there to defend yourself:).

1) My first question is, how do I keep learning as an older developer? The constant flow of new languages, technologies seems to be overwhelming, even if I only focus on seemingly promising, important developments.

I haven't been alive as long as you've been programming but I'm getting up there. While I still enjoy software development and learning new useful things, I only have so much room in my short- and mid-term memory, and it seems to be shrinking. In one of your answers above, you recommend learning a new language on regular basis. Unfortunately, in my experience learning anything new means another language/framework/information gets pushed down the memory stack and becomes less available for rapid recall, unless I keep practicing both, but I only have so much time.

Transferrable higher-level knowledge like design principles, patterns, code smells, is valuable and practical for me. Here I'm primarily asking about learning new technologies.

2) Would you strongly advise against narrow specialization? I have been a full-stack .NET web programmer, which some would argue is narrow because there's also JSP, Node.js, PHP (gasp). However, it is still a lot, mainly due to the complexity of web-based front-ends: JavaScript frameworks, transcompilers (TypeScript), client-side file packagers/minifiers, CSS frameworks/"compilers" (LESS/SASS). I've been thinking about narrowing it even further, perhaps just back-end server-side .NET web API's/services in C#. I feel like due to my limitation (see question 1 above) this would be a good way to excel in one area.