3 ms·
I’m a software engineer. Due to the tools becoming better, I already had to unlearn a few skills. For instance, 20 years ago we had to write things like ( x >>
by Const-me 4y ago
I’m a software engineer.
Due to the tools becoming better, I already had to unlearn a few skills. For instance, 20 years ago we had to write things like ( x >> 4 ) instead of ( x / 16 ), or use tricky fixed-point math instead of floats. Both were performance optimizations: compilers were less than brilliant (modern ones are reliably optimizing integer divisions into these bitwise tricks), and CPUs were much slower (modern processors are faster at multiplying or dividing floats than integers, 20 years ago was the opposite with a huge difference).
It's not just compilers and hardware, other software too. Debuggers, profilers, operating systems, third-party libraries are becoming strictly better and more capable over time.
However, I would not say the job became easier.
The software being developed became way more complicated overall: more features, and more complicated features. For instance, 2D GUI is now expected to include animated transitions, inertial scrolling, anti-aliased fonts with hinting and supports for these modern colored hieroglyphs, vector graphics instead of bitmaps for DPI scaling.
The hardware and environment are more complicated too. All CPUs have SIMD now, and with modern GPUs I’m often programming two different chips in parallel instead of just 1, orchestrating the interaction between them. Modern networking and cloud stuff is remarkably tricky to use. Many products are expected to work well for global audience not just with US English, i18n/L10n/g11n are generally hard. Due to omnipresent internet a software is now expected to be secure, modern memory safe runtimes like C# help substantially, but they aren’t a silver bullet, still lots of things to keep in mind.
I would expect the trend to continue in the future. Copilot helps writing particular functions, but that’s just a small part of making a good software.