Skip to main content

My thoughts as an experienced developer in this field.

To be honest, I would have never guessed that     I would end up saying these these things, especially jn the beginning of my career.

As you become more experienced, you kind of get to see everything and you become less impressed by new things. Honestly there is some sort of repetitiveness in this field and we kind of like to reinvent the wheel quite often, because well, we become a bit too easily bored. Take for example how the web looks now, a lot of it has been borrowed from other places, mostly desktop development, especially the parts about making custom reusable components. 

Or from older frameworks, like state management in the UI which actually was first properly implemented in Asp .Net Webforms, as far as I know, something like 20 years ago, where you used to have the dreaded view state. But most likely something similar existed before that too. I was not that surprised when React adopted initially this idea. Or even less surprised when hooks where introduced that seemed a bit too familiar with events in the rendering pipeline of Asp .Net Webforms. And if you dig a little deeper in the inwards of React you start to see all sort of references to dispatchers, a well known thing present jn Windows Presentation Foundation.

It's not just the frontend part of the web development that has borrowed ideas from other places. Take for example another modern invention, describing REST APIs with swagger and exposing contracts this way from which clients can be generated if needed or data models to pass as parameters to the APIs. This existed long before that in Windows Communication Foundation and other enterprise technologies that facilitated communication between services. And I can go on about server side rendering too or half a dozen other modern technologies.

Heck, even in programming languages a lot of things are borrowed from each other. Take for example lambda expressions that first got real success in C# and then were implemented in other languages, even in Java.

Another things about working in this field for a longer period of time kind of related to what I said above is that you will get to use so many technologies that eventually a lot of them seem similar and surprisingly you will end up having a harder time deciding which one to use. Eventually you will think to yourself, whatever works, they all are pretty similar  after banging your head one too many times with their pitfalls and coming up with workarounds all the time. Have a NonSql database and you need to do some filtering or projections? No problem, you just manually make some stores with the projections that you keep updating when the main stores change, from the backend code.

But there also is a dark side to having worked more. You become less flexible sometimes and your approach becomes more set in stone, and a real pain to change. It's really hard but sometimes you need to forget what you already know, or at least detach yourself from what you know, so you can be more open to try things in a different way. When you are young, you are like a sponge and can easily absorb completely new ideas and concepts, whereas when you are more experienced and faced with some truly new ideas or concepts, you will still try to use them as you did with previous technologies.

You also become less impressed with things, especially new things and it's harder to keep yourself motivated. You may even become jagged or a bit toxic to those around you, especially with younger people. You need to be careful not to ruin other people's enthusiasm. When a new bleeding edge technology appears that promises a lot of things, you are sceptic too, you have seen technologies rise and go down quite often, so that you are more careful to experiment and learn as much as possible about something before actually giving your opinion on it or trusting it.

In other cases you become fed up of seeing the same things over and over again, like having to go through the same presentations over and over again. I think I have seen like 5 presentations about docker, build pipelines. I think it's enough for me and surprisingly, the more these ideas get pushed and you get to be constantly reminded about them, the more you feel like not using them and trying something else. Or you may learn the bare necessary required to use it without anything extra. If someone asks you to go into details about such an over used topic, you may just get stuck or have no clue what to explain since you have been using just enough to do you job. This also has deep implications on your motivation too and your willingness to try

Eventually, you realize what you really want is to build something nice, meaningful that works really well, has some kind of novelty behind it instead of just constantly spending time learning and preaching things. And instead of just saying about a technology if it's cool or nice, you end up asking yourself, alright, so what can I build with this that I wasn't able to build until now.

And if you are real lucky, you may run into another experienced person like you but with completely  different values and experiences than you. This can be a good recipe for disaster. If you spend only half of your time contradicting each other you will be lucky.

So, after some years in this field, everything is not completely rosy and there are definitely some new and unsurprising challenges that arise such as keeping your flexibility and openness, maintaining motivation and not becoming jagged and grumpy in general.

Comments

Popular posts from this blog

Some software development common sense ideas

 I haven't really written here in a long time so it's time to write some new things. These are just some random common sense things that seemed to short to write about individually but seem really interesting and useful to me or other people 1. There is nothing fixed in software development, all things vary by circumstances and time Remember the documentation that didn't seem that important when you started the project, well after a couple of years one the application has grown and become really complicated, no one actually knows everything about the application anymore. So now you really need that documentation. What happens if you suddenly need much more people to develop the application because of some explosive growth? Without documentation, new developers will just look at the application like they look at a painting. This actually happened to me. Maybe in the beginning of a project, a technology really helped you a lot but as the project grew, it started making things

Some things which are often blindly applied and followed by developers which are not always good

This is probably one of the most controversial things that I have written so far but I am just tired of hearing about these things and discussing these things. Other developers that I know share part of my feelings. I would rather hear more about how people built things, overcame challenges or what new interesting ideas and concepts they implemented. Those things are really interesting and innovative, not hearing about the same theoretical things over and over again. I can just read and learn those things from 100 sources on the internet. Firstly, one of the most discussed and promoted things is agile/scrum development. I think I have been through 5-8 workshops about agile development methodology. And each time, some things differed. There is no 100% standard approach to this. Everyone uses their own version of this development methodology and seem to argue a lot that their approach is right and everyone else is doing it wrong. You go to an interview, this will be one of the first 10 t