Currently I'm working as a software developer for more than 7 years.
And I'm struggling with the problem that I feel myself a bit stupid because of the routine work. Pretty much any enterprise application development process these days looks like: requirements -> tasks -> DAO -> Service layer -> models -> view models. Of course you can mention microservices, more complex architectural patterns and other things... but.. Not really harder than that.<p>So I want to train my brain to keep it up to date and fully functional.<p>What I'm doing now:
- Learning vim (that's really hard after the years with Visual studio)
- Trying to solve algos on Hackerrank.<p>What do you usually do to train yourself?
I do courses when I can, try some CS theory, some free resources here <a href="https://functionalcs.github.io/curriculum/" rel="nofollow">https://functionalcs.github.io/curriculum/</a> such as these undergraduate complexity theory lectures <a href="https://www.youtube.com/playlist?list=PLm3J0oaFux3YL5vLXpzOyJiLtqLp6dCW2" rel="nofollow">https://www.youtube.com/playlist?list=PLm3J0oaFux3YL5vLXpzOy...</a> or this intro to dbms course <a href="https://www.youtube.com/playlist?list=PLSE8ODhjZXjYutVzTeAds8xUt1rcmyT7x" rel="nofollow">https://www.youtube.com/playlist?list=PLSE8ODhjZXjYutVzTeAds...</a> then try using a SQL automated prover <a href="http://cosette.cs.washington.edu/" rel="nofollow">http://cosette.cs.washington.edu/</a><p>Some more VIM resources, Vim as an IDE
<a href="https://blog.jez.io/vim-as-an-ide/" rel="nofollow">https://blog.jez.io/vim-as-an-ide/</a><p>Lecture notes, entire course on vim and horrors that is vimscript
<a href="http://www.contrib.andrew.cmu.edu/~haoxuany/vim/" rel="nofollow">http://www.contrib.andrew.cmu.edu/~haoxuany/vim/</a><p>Great stackoverflow post on grokking vi to understand vim <a href="https://stackoverflow.com/questions/1218390/what-is-your-most-productive-shortcut-with-vim/1220118#1220118" rel="nofollow">https://stackoverflow.com/questions/1218390/what-is-your-mos...</a>
Might want to consider getting a new job in a more interesting and new area, that way you can learn during work hours. Or, figure out ways to automate your job even more: if it's routine, it's amenable to automation.<p>More here:
<a href="https://codewithoutrules.com/2016/03/15/stagnating-job/" rel="nofollow">https://codewithoutrules.com/2016/03/15/stagnating-job/</a>
As a CS professor, I have to create lots of exercises for my students so I keep my brain occupied with these kind of things, trying to simplify my examples on each iteration. I find that it is very hard but very gratifying to simplify things. Also, much easier to explain to students.<p>Also, when I come across algorithms such as the Sieve of Erathostenes which was discussed recently here on HN (<a href="https://news.ycombinator.com/item?id=15408506" rel="nofollow">https://news.ycombinator.com/item?id=15408506</a>), I do them to keep my skills and reasoning up to date..<p>Other times, I do some project euler problems, etc.. In even other times, if a blog post is interesting I try to implement the algorithms or examples there. For instance, there was quite recently a discussion about the little book of Operating Systems, and I've built the bootloader example and learned a little bit more about 2nd stage bootloaders and NASM Assembler.. Things like that..<p>I find that it is more efficient to learn lots of small things and join them with what you already know previously in your brain, than trying to learn bigger things..
I would learn lambda calculus and solve the L-99: Ninety-Nine Lisp Problems[0]. You'll be surprised how brilliant functional programming is.<p>[0] - <a href="https://www.ic.unicamp.br/~meidanis/courses/mc336/2006s2/funcional/L-99_Ninety-Nine_Lisp_Problems.html" rel="nofollow">https://www.ic.unicamp.br/~meidanis/courses/mc336/2006s2/fun...</a>
Learn new patterns and languages.<p>Learning and implementing CQRS with Event Sourcing was the big step for me out of the enterprise development slump you describe. Then learning F# and functional programming and implementing the architecture gave me insight that made my C# code simpler and easier to read.
Monotonous work dulls your wits. I find decaffinating and a moderate exercise workout with music helps. If you are pressed for time, the try meditation or a good mystery novel. Rudy Rucker has always been good for me.