3 ms·
I've been programming professionally since about 1994, using C++, Java, Scheme, Python, Go, JavaScript and friends. Today, tools are incredibly better; compile
by oppositelock 4y ago
I've been programming professionally since about 1994, using C++, Java, Scheme, Python, Go, JavaScript and friends.
Today, tools are incredibly better; compilers, debuggers, profilers. I'll take something from JetBrains or Visual Studio any day over what I had available in the 1990's. There were some gems back then, but today, tools are uniformly good.
What has gotten difficult is the complexity of the systems which we build. Say I'm building a simple web app in JS with a Go backend and I want users to have some kind of authentication. I have to deal with something like Oauth2, therefore CORS, and auth flows, and to iterate on it, I have some code open in Goland, some code open in VS Code and my browser, and as a third component, I have something like Auth0 or Cognito in a third window. It's all nasty.
If I'm writing a desktop application, I have to deal with code signing, I can't just give it to a friend to try. It's doubly as annoying if it's for a cell phone. If I need to touch 3D hardware, I now have to deal with different API's on different platforms.
It's all, tedious, and it's an awful lot of work to get to a decent starting point. All these example apps in the wild are always missing a lot of the hard, tedious stuff.
Edit:
All that being said, today, I can spin up a scalable server in some VM's in the cloud and have something available to users in a week. In the 1990s, if there was a server component, I'd be looking for colo facilities, installing racks, having to set up software, provision network connections, and it would take me ten times as long to the first prototype. I'd have to write more from scratch myself. Much as some things today are more tedious, on net, I'm more productive, but part of that is more than 25 years of experience.
- sillysaurusx 4y agoThank you for the eloquent comment. I showed up wanting to post something similar, but you did it better than I ever could. Can I ask maybe a personal question? Do you worry about becoming obsolete? I’m at the 16 year mark, and I was wondering when’s the appropriate time to panic. You seem to have made it about a decade longer than I have, so I figured I’d ask some tips. The hardest thing about programming now vs then seems to be staying relevant.
- oppositelock 4y agoIf you ever stop learning and feel your job is tedious, move on. You are inevitably an expert at something after 16 years, and if that's a relevant technology, you're set. If it's not relevant, find something else. Your engineering experience, even if not too relevant, is valuable because it's also a process, not just an outcome, and experienced people can apply the process of engineering to anything. 25+ years in, though, while I'm still an engineer in the org chart, I'm in charge of mentoring a lot of younger engineers, and my job has turned more into keeping them from making big mistakes and helping them grow as engineers, versus producing code myself. Through them, I can get much more done in aggregate, than if I sat down and did it myself, even though I'm probably faster than any engineer that I mentor. Given what I have done, startups are a great place to learn via trial by fire, while big companies are good places to earn some big bucks while in between cool startup jobs.
- silarsis 4y agoSeconding this - in the last ummm... almost 30 years I've been in the industry, the whole industry has only expanded, and you gain value as you gain skills - if you feel like you're not learning or not enjoying or no longer able to find valuable roles as eg. a programmer, branch into infra or security or data tech or any of a bunch of different places that have grown - your expertise in any field inside IT will make you more valuable in others. As an example, I've recently shifted from manager back to hands-on tech, and then from platform work (building tools for devs) to security - and knowing the engineering space makes me more valuable in the security space. I'll do this for a few years, then look for the next interesting jump. Nothing I've learnt is ever wasted - and I started when everything had to be patched to work on linux and sendmail.cf files were state of the art ;) Also, flipping between the big three types of workplace - startup, enterprise, and consulting - adds to your understanding of the world and overall value. When I started out, old engineers weren't a thing - it used to be accepted wisdom that this was a young person's field. That's not true any more, and I doubt it'll ever be - just keep learning, pace yourself (marathon, not sprint), enjoy yourself, and keep expanding your awareness/knowledge.
- throwaway5959 4y agoGreat to see a dev with so many years of experience. What you attribute to your success? (In addition to keeping your tech stack fresh)
- greggman3 4y ago> If I need to touch 3D hardware, I now have to deal with different API's on different platforms. Been programming since late 70s. Graphics in many ways WAY easier than they were in the 70s, 80s, 90s. Sure there's Metal, DirectX, Vulkan, and OpenGL but you can still use OpenGL on pretty much all platform or use something like ANGLE. Back in the 80s, 90s, you didn't even have APIs, you just manipulated the hardware directly and every hardware was entirely different. Apple II was different than Atari 800, which was different than C64, which was different than Amiga, which was different than CGA, and different than EGA, and different than Tandy, and different than VGA, and different than MCGA. NES was different than Sega Master System which was different the SNES which was different than Genesis which was different than 3DO which was different than Saturn which was different than PS1 etc... It's only about 2005-2010 that it all kind of settled down into various APIs that execute shaders and everything basically became the mostly the same. The data and shaders at an algorithmic level that you're using for your PC game are the same or close to it On Xbox 360, PS4, PS5, Xbox One, Mac, Linux. Where as all those previous systems were so different you had to redo all a ton more stuff. On top of which there are now various libraries that will hide most of the differences from you. ANGLE, Dawn, wgpu, WebGL, Canvas, Skia, Unreal, Unity, etc...
- oppositelock 4y agoIt is easier in some ways, agreed. I kinda miss the olden days of doing page flipping in DOS through EMS :) You're right, it was the wild wild west up until D3D and OGL standardized everything, and a big shift happened in the shift from fixed function to programmable pipelines. I love this kind of stuff! I can still program mode 13h from memory, and I can only imagine the cool, arcane witchcraft that you have acquired having started much before me. To me, at least, OpenGL was my favorite, I miss its death, but Metal, Vulkan and DX are close enough. What drives me up a wall is 3D in the browser, since the difficulties of dispatch cost from JS land are profound.
- greggman3 4y agoI have zero problems with 3D in the browser and I love it way more than native. I can edit/refresh way faster than native, it works across all platforms (Linux/Windows/MacOS/iOS/Android). And I can share things with a link, I don't have to build/sign/noterize/distribute for 5 different platforms.