| It's so interesting to read different people's perspectives on here. I very rarely comment on here, but it's just wild to me how wildly different the conclusions we can all draw from looking at the same set of pretty simple factual data are. I've been working in this industry in a serious way for about 15 or 20 years? So not exactly close to retirement but I'm not straight out of school, either. > The stack is to deep. Nothing is easy anymore. The technology count is staggering. To me, it's insane how much easier literally everything is, and how wildly more productive people can be. I remember when I was young, first of all, it was impossible to just get access to technologies so you could learn them. Compilers cost money. Databases cost money. Operating systems cost money. It was hard to even get to the point where you could mess with stuff, for financial reasons. Now, to a first approximation, there isn't really a tier of basic software you'd want to develop on/with that you can't get essentially for free. It's not like they're running some totally different "production-grade" operating system or database at the big tech companies, or that the well-funded machine learning labs have access to some sort of special super computer with totally different characteristics than what you have access to. They basically have the same shit. That's bananas! Then, there's the utterly massive revolution in programmer productivity that has been caused by the internet + automatic memory management. In the olden days, there was very little code reuse, for several reasons, but one of the reasons was that it was too hard to pull in random libraries and start thinking about who would own the storage for the error string they wanted to return to you out of every single api. Everyone bitches about how javascript programmers think nothing of adding "left-pad" to a package.json along with twenty thousand other dependencies, but the fact that you can do it is nuts! And it makes everything SO MUCH FASTER AND EASIER. The other day I was just curious if I could point my webcam and my whiteboard and have it pull in the lines I drew on the board with a marker and save them as some sort of curve in the computer. I have no experience in computer vision or anything like that. I don't even really know Python. I was able to get this roughly working in like half an hour with Python + OpenCV + some driver that already made my camera work + some tutorial that came up in DDG. It's like being a freakin REAL LIFE WIZARD. Take building Android or iPhone apps. I remember trying to write apps for the Palm Pilot a thousand years ago. Just getting the toolchain to work at all could eat up a couple days. This is reminding me what it was like to try to write a win32 app w/ OWL or MFC, starting from the auto-generated code. Anyway, now, you get a tiny computer with shockingly powerful cpu+gpu+a zillion radios+gps+multiple cameras+gyros+compass+accelerometers+gigs of storage + gigs of memory + a super high rez touch screen. You can assume that to a first approximation, everyone in the high-GDP/capita countries has one of these, essentially everyone in the mid-tier, and the low-tier is growing at a shocking speed. Further, they are all exposed to your code through a more or less universal set of interfaces so you don't really need to worry about drivers and hardware support hardly at all. You want to run some code on here? Ok, you can distribute it for free over the air, and you can write your code in an automatically memory-managed language with a freaking gigantic standard library. Oh also the SDK is free. And there's an emulator that runs on x86. Oh and there's a visual multithread debugger that you can attach to the process...from your computer..remotely. Oh you don't need a dev sdk, all the normal units everyone has, those just work. But you want to build a network application? Something that needs to talk to some sort of service? Well the good news is you can get a database, an operating system, and incredibly powerful web servers and application servers, and they all cost nothing. In fact, they're already installed, on the computers that you can rent by the minute, and the lowest tier if you just want to mess around? It's free. Mainly what I feel like is extremely JEALOUS that I wasn't born later. Imagine all the cool fucking shit you could have built as a kid instead of wasting your life trying to find a cracked version of Borland Turbo C that worked right. Choosing between the horrendous performance / security / etc of perl cgi-bin vs. the unattainable per core licensing fees of a "application container" or whatever those special jvm things were called. Oh, here's one: DATABASE FREAKIN DRIVERS FOR JAVA. jdbc drivers used to cost money! And they sucked shit!!!! ahahahahhahaha. I agree that programming is a ridiculous career path because I can't believe ordinary-talent-level programmers in Silicon Valley get paid into the low seven figures a year to essentially work on their hobbies. This has to end at some point. I can't believe this is a real job. It's like your whole life, you love legos, and you're always trying to build bigger things out of legos, but you always run out of the pieces you need. And the someone comes along and says, "Ok kid, here's the new rules. Legos? Legos are free. Every single type of lego, in more or less unlimited quantities, you can just have those." What's the catch? "The catch is you get paid to play with the legos." Wow thats crazy but it must be like...a barely survivable wage. "No in fact total rubes who just graduated from school are gonna get paid 3x the median income for a family of four in their first year out of school. People who've been around for 10 or 20 years will make like a million bucks or so." But only in like weird big risky situations, right? "No that will be the deal if you work for the most stable boring companies where you get six weeks of vacation and all your meals taken care of etc." ??? How is this possible?!!?! |
All the simplicity brought by the magic of new abstractions will go away at the moment you are forced to understand the actual thing behind the magic, realize that most placed that used that magic were probably simpler to write without the abstraction (ex all the both ways data binding in angular would have been cleaner and efficient to do it with events though it would take you 5 more lines of code)