So, now that the year is coming to an end and I’ve been in my first “real job” for about half a year or so, I figured it was about time to write a few lines about what happens when you enter the software industry as a full-time software developer, coming rom days spent reading papers, attending seminars, teaching, and trying to make proofs go through.
Well, there has obviously been a lot of catching up to do. Getting used to the Android ecosystem is one thing (which is understated given my rather limited prior knowledge), but also a refresher of the basic skills and an update on where the industry has been going over the last 5-6 years — since I already have my nose in Android a lot these days I’m only going to mention here that 1) I like the upgrade from iOS and am not missing the latter at all, and 2) I’m surprised how much guessing is involved in developing for this system due to inadequate, or at least uneasy to find, documentation.
The refreshing part has been quite enjoyable, and involved going through the CLRS algorithms book again, re-finding the beauty in software architecture and general design patterns, and covering concrete Java stuff such as best practices and its concurrency library.
All of this was before getting a job though, and after starting it’s been incredible nice to actually have some energy/time/conscience left in the evenings to look into other interesting things — and since this is pure pleasure I’ve been taking a breadth-first approach opening several books at the same time:
- I finally got started on Python while going trough CLRS, which combined with looking more into the “real-world” OCaml and Haskell, has lead me to looking into the very interesting purely functional data structures (see also his follow-up blog post)
- looking at the “new” mainstream languages (with a bias towards high performance computing) has lead me to Scala and Google’s Go language, which in turn has lead to Concurrent ML (and hence full circle with CSP and my beloved pi-calculus)
- trying to find the more mathematical areas of the industry has lead to machine learning, including bayesian reasoning and statistics
Besides software-related topics I also finally had the time to get a non-algorithmic point of view on game theory, including concrete games and mechanism design. And finally, getting involved in business, management, and interviewing processes at work has also been very interesting, admittedly still having to draw a lot from teaching and early university group work.