5 ms·
Lovely article -- very original. I'll add some anecdata, to give more context on why "atmosphere at all costs" might be en vogue. - Most software engineering
by rgbgraph 3y ago
Lovely article -- very original.
I'll add some anecdata, to give more context on why "atmosphere at all costs" might be en vogue.
- Most software engineering is CRUD
- Almost all 3rd generation, higher level languages can achieve CRUD (e.g. Javascript, C#, Java, Python, Ruby, PHP, Python, Perl -- even Bash)
- Most engineers will not have to dig around in the internals of a language to be able to do their jobs (e.g. that you can fine-tune and pick your own garbage collector (or even disable it completely), depending on the domain in Java (such as low-latency environments); whereas in .NET, you cannot really tune, swap out, or turn off the GC completely)
- Without needing to know the internals of a language, all the aforementioned languages are largely interchangeable (again, for CRUD -- and based on taste)
This is why you may commonly see people recommending that even if you don't know a language, you should be able to pick up whatever language a potential engagement requires (see: "a senior should be able to pick up frameworks and languages within a week or two"). I've always disliked this way of seeing the world. It rubs me in a certain grating way: that most work is CRUD, so you should optimize your career for being an interchangeable COG.
In my experience, if you take the time to learn a single language or ecosystem thoroughly, your chances of finding work for that specific ecosystem greatly increase -- versus the "generalist." Likewise, you'll be able to tell when it's the tool that's messing up, or yourself. Further, you'll be able to find more interesting, "deeper" work to handle -- rather than just building another CRUD web app. And lastly, life is too short to work with stuff you don't like.
For example, I love the .NET ecosystem. If I want to build something that isn't in the HPC space, I'll reach for it first. I know Java, but I don't like Java -- and I do not ever want to work with it. My ability to land .NET work is much easier, because I know the ecosystem -- not just how to program in an OOP language.
Or how about databases? I love Postgres. If I want a great OLTP DB, without any fuss, I'll reach for it first. I know MySQL/Mongo/SQL Server (to be fair, this one is also really good)/etc., but I don't like most of them. My ability to land work that utilizes Postgres is much easier, because I've taken the time to thoroughly understand it.
Or in other words, most people in the game are optimizing for commerce: how much money they make.
The hackers? They're in lower-level, systems programming languages; they're in compiler and language design; they're in low-latency or kernel programming; they're in stuff that isn't directly related to making money. Part of the reason I'm learning C++ is because the work there is more interesting (database engineering is very fun, but you need C++ or C in some cases) -- and the people more passionate. But also, because the gravy train is starting to dry up in CRUD -- anyone who can program can do it.
- hardware2win 3y agoHaha, Im on the similar boat I love .NET ecosystem but it sucks that it lacks of fancy jobs that you mentioned. If you want to do compilers with C# then it feels like you have to work for C# Compiler / Roslyn Team(s) For cool jobs there is shitton of CPP which I do think is huge mess and I hope that Rust will steal CPPs market share because my experiences with it were way way more pleasant
- rgbgraph 3y agoYeah, a lot of the .NET stuff is low-paid, low-challenge big business work (and the only high-visibility "cool" .NET work is at MS). There's a few positions that intermittently pop-up doing "cool" work in .NET: usually startups, or small teams; the chances are much rarer, and you have to be in the right place at the right time -- but your chances are much greater than someone who's coming in from any other ecosystem (e.g. Javascript back-end). Or in other words, sniper vs shotgun approach. You're going to get less targets overall if you specialize; but it'll be much easier to have a strong chance of being "the best" in the crop of applicants (or even for marketing purposes, a la personal consultancy).