Dr. Software: An unfinished journey starting from dirty code [pdf]
It&#x27;s a nice primer on writing functional Java. However, due to some past experiences I feel a bit on-the-fence about it when it comes to actual real world advice:<p>1. I once happened to have a look at a Python codebase where some poor soul had tried to write Java in Python. Quite literally. It was not a good experience.<p>2. Many moons ago I had a task of implementing a repetitive something for many somethings in C++. Being the newbie I was I just set out typing out all the methods. Then a more senior colleague of mine, after having watched the ordeal for a few minutes, asked for my keyboard to type out a signature of a templated function to suggest that I could try &#x27;something like that&#x27;. Noticing my blank stare he proceeded to delete the scribble with the words &#x27;It&#x27;s fine, you were well on your way to finish it!&#x27;. I stopped him, and saved the snippet in a file titled &#x27;black_magic&#x27; to later grok it. Now I know. But I didn&#x27;t then. I think he was wise in his approach to reality.<p>3. At some point I got accidentally involved in a C# project. To my eyes it was full of accidental complexity. But I was not expected to be a core contributing member later on. So I&#x27;d do my own thing in parts of the code base allocated to me, changed all the structs to classes as required in code review, and made sure the whole thing fits together well with all the layers upon layers of abstraction. Because it wouldn&#x27;t be mine to maintain, so it better be made the way people who will maintain it like it.<p>So, the general advice &#x27;When in Rome...&#x27; may apply here. I mean, what&#x27;s the chance that after an &#x27;enlightened&#x27; contractor changes a Java code base to a functional paradigm comes someone &#x27;unenlightened&#x27; just to rewrite it back? Considerable, I think.