I’m a .NET developer. Before that, I was a C/C++ and Visual Basic developer. Before that, a QuickBASIC and assembly developer.
Also, there was a reason strongly-typed languages like Pascal and C++ were more popular than weakly-typed languages. It was too easy to make a logical error and only find out when the program was running, so strongly-typed languages helped catch many logical errors related to using the wrong type.
So here we are now.
We have better tools. Debugging is much better.
We have TypeScript and CoffeeScript to bring some structure and some stronger typing.
And things are better.
But they’re also worse.
When I wanted to learn any new language, it was just a matter of getting the compiler or interpreter, writing Hello World, and building up from there by reading the documentation. Patience and perseverance were the most important things you needed to possess. It was a little like building Lego toys.
It’s a little like building your own version of Lego toys, only also using parts that come from Play-Dough, Tinkertoy, Erector Set, wooden blocks, Spirograph, Operation, Mouse Trap, Hot Wheels, Lionel model trains, Silly Putty, Slinky, Duncan Yo-Yo, and that weird bronze contraption you found in the garage that has gears and a flat-sided axle that nobody remembers what it goes to.
Sure, that’s fun.
Want a front end? React. No, wait – Angular. AngularJS or Angular? AngularJS is still active.
Want to use strong types? TypeScript. But not with AngularJS. Wait, yes, you can, but your build system will have to support it.
Build system? Webpack. No, NPM and Browserify. No, Gulp. Not Grunt. Unless you like Grunt. Nobody likes Grunt. Except Grunt fans, who don’t count because we’re not Grunt fans.
Confused yet? We’re just getting started!!
SERIOUSLY. This is not cool.
Here was a fun article I read last year, that still applies:
At least I’m not alone.
But God help you if you are still trying to figure out how to make those toys. And I really don’t expect the creation to hold up well over time, with all the new toys that are coming out. You’ll try to stick a new thing in there … and it will expose the fragility of all the things stuck together.
Software should be built like kitchen or industrial appliances, not like artwork. It matters that your product is functional. If you make a neat kitchen blender from Legos, papier-mâché, a Slinky, and … well, let’s just say I don’t want to be responsible for adding new features to that blender.