2 ms·
I also started with GWBASIC, QBasic, Turbo Pascal, x86 assembler as a hobbyist. Followed during undergrad by C, C++, PHP, early Python, LISP/CLOS, Clean, Haskel
by edejong 7y ago
I also started with GWBASIC, QBasic, Turbo Pascal, x86 assembler as a hobbyist. Followed during undergrad by C, C++, PHP, early Python, LISP/CLOS, Clean, Haskell and some Smalltalk. I started my full-time career as a Java programmer, but did part-time jobs in C and Perl during my grad years. Now I am mostly act as a tech lead / architect, but enjoy some Scala programming and fiddling with types and category theory. Erik Meijer is my hero ;)
Many programmers indeed just copy whatever business rule they see into Java / C# code. However, on occasion they write an optimizer or a system churning through large amounts of data. Having that background sets the engineer apart from the coder.
> Even then when I’m determining why a system is slow, it could involve many layers of the stack from a too heavy payload going over the network, bad caching, incorrectly size servers, incorrectly placed servers, bad sql queries, etc.
Well, each of these are studied at grad school: networking, caching systems, SQL optimizers. It really gives a head start and I'm grateful for that.
Re OSes. Most OSes have the same paradigms. I've been taught from the book Operating System Concepts by Silberschatz, Galvin and Gagne. It details the many concepts adopted by the various OSes over time. OS specific is not really interesting afterwards.
Re Redshift / ElasticSearch. Columnar DBs were still new, so yes, you do need to learn at the job. Still gives you a tremendous head-start though, understanding row-based DBs.
Technology Assessment and multi-disciplinary design was part of my Bachelors program, albeit 101.
Presentation skills: I am very happy we were taught these skills extensively. Proved absolutely valuable, even though I constantly improved on them during my career.
Overall, the skills are not so much to understand why a system does what it does, but to quickly understand a new technology from its basic functions. So when Rust comes along, I can quickly assess that it will be useful in a microservices setting due to not having a run-time, predictable behaviour and fast startup times. When MongoDB is pushed, I am not one of the many followers blindly believing its marketing lies.