When I’m talking to people older than me that have started developing for Amiga or other types of computers they say that the best time for being a developer where then, basically because you just would write software at the deepest level.
I’m really not afraid to write assembly code but I think that now that we are in a more advanced era for technology and computer we can really not much more focusing on the pure performance and micro optimization for our code and start doing something beautiful.
I think that today everyone that have the ability to develop can do something out of the imaginary from just 5 years ago. This is because computers are much powerful? I think not, I think because open-source won the war and because of the whole API economy.
Let’s think about something like TensorFlow, don’t get me wrong, I’m totally not an IA guy, you can uplift your API with something that is really really great. You can’t do IA like me? You can use Vision API from Google, it costs but gives you the possibility to develop something that otherwise you couldn’t.
Let’s think about knowledge in general, when I started there was communities but there was not that huge community like Github where you could basically find everything. Yes not all that glitters is gold, most of the repo on Github are shit, but you can actually have a look to shitty programs and know why they’re shitty, you can even improve it. In 2008 we had the launch of Stack Overflow, I don’t think I need to explain that HUGE difference.
Let’s think about code quality, now we have a community where we know something like we need to have a well made software, it doesn’t need to “just works”, it needs to be beautiful. We have good tools for automated testings, CI servers that does testing for us, cloud environment that let’s you test on devices you don’t have physically around you.
One of the things that changed is that now the software is so big, complex and has a variety of stuff in it that developing is not just write code, think about solving a problem and solving it. It’s about communication, deep understanding of what you can and what you can’t do, interpreting the problem and give a feedback on what do you think about it (mostly, I’m known to be an hot head in some cases).