What to learn in order to not become obsolete as a software developer, and then being forced into early retirement from programming? What platforms to prefer for building products that last with minimal maintenance?
Jeremy Allison (bio) is a computer programmer, contributor to Samba, and Free Software proponent that I have long admired. In Working for The Man, he has a paragraph on proprietary platforms that stuck in my head…
The knowledge I’ve gained about programming POSIX is still useful, even though I learned a lot of it over twenty years ago. My Windows knowledge is now rather out of date, and getting more so over the years. It isn’t worth my time anymore to keep up with each increasingly baroque change to the Windows environment. Just as an example, over this time the latest “hot” communication paradigm that Microsoft recommended developers use in Windows changed from NetBEUI, to NetDDE, then OLE, followed by OLE2, then COM, DCE/RPC, DCOM, and now currently seems to be Web Services (SOAP and the like).
Meanwhile, in the UNIX world the Berkeley socket API was useful in the 1980s and is still the core of all communications frameworks in the open standards world. All the UNIX RPC, object and Web Service environments are built on that stable base. Learn as much about the proprietary environments as you need to be able to help people port programs over to open standards. You’ll never be lost for work. The same is true of any proprietary environment, not just Windows. Windows just happens to be the one I know best.