Fullstack danger

In this blog, i have recently written my view on AI and Chatgpt. I have also written about software development and engineering in 3 different posts. First one is the Software, which is what we are trying to build. The second one was the Developer, who is the real builder of software. The last one was the Architect, who is supposedly meant to be in charge. All these were touching upon the mistakes and misunderstandings in this field too. I was thinking about focusing on the problems and i was going to write about the term Fullstack developer.

While i was writing about Chatgpt, i said that AI could never fully replace software developers. And in this post, i will explain why AI can't fully replace developers, while referring the very deformative concept of fullstack software development. These two subjects are related and i will be bringing them together. Disclaimer: I am not judging or criticizing anyone who consider themselves as a fullstack developer. This is about the industry in general. Let's begin with what is a fullstack developer.

What stack now?

Full stack :) If you are not much related to software development, let me briefly explain what is happening and give you some history. Back in the first days of software development, people were mostly developing applications for personal use. There were limited number of programming languages and meeting some company's need for their inner workings were enough to get a job. Those applications were mostly used by personnel of the company and they were mostly running on their personal computers. This is called a desktop application. They were mainly focused on the backend.

Then the needs of the companies grew and then their data got bigger. That forced people to include database management in those applications. Then the internet revolution came in and companies wanted their customers to reach their services online. That brought the web applications or you sometimes called enterprise applications. They are reached via a browser and they have the fancy thing called interfaces or frontends. But this came with a caveat. They started needing security precautions. Then they wanted to get faster and more available, since smart phones became a thing. This brought mobile applications. Then those huge applications started needing a high level of maintenance. That brought devops. Which is basically an enterprise application turned into small modules and managed with the help of extra tools. Let me put my elementary school drawing here to visualize it.

Finally, people came up with an idea. They wanted to separate the backend and the frontend. This was actually a good idea since those two require their own skillsets. So ideally, you have an architect to orchestrate the whole thing, a backend developer and a frontend developer for 2 sides of coding, a database expert, a security expert and a devops expert for smooth software production line. That made 6 people right. 6 completely different mindsets. 6 different personas. 6 vast areas of research through the years. A stack of 6 :)

Things would be ideal this way but 2 very malicious and harmful approaches emerged today. Greed and ignorance. Greed made companies think that they could hire 2-3 people for a 6 people job. Ignorance made them think this was actually possible and they can disregard the R&D behind them. The resulting abomination is called a fullstack developer. Some people might say fullstack mostly consists of frontend and backend but 99% of the time, you will have more responsibilities than that. Now i will say that the term "fullstack developer" is the degeneration of software development. Why?

Degeneration

People usually dig deep into their own field of expertise, whatever it is. A doctor, a pilot, an engineer... If there is more room to grow, we usually strive for it. Back in the days, software development was a multidisciplinary field and in each field, there were experts digging deeper. They had the time to be better at what they were doing. We used to have good backend developers, frontend developers or DB experts. We still have those but as you may easily guess, nobody can be expert on 3-4 subjects. We developers have above average brains but we are not supermans :)

Now software developers are trying to take care of like 6 different concerns. You can say they are responsible of the wholestack, in other words fullstack. This starts a self feeding cycle. Because it eventually fails. The applications start giving errors, the developers can't get better at anything since they don't have time. The maintenance of the software becomes harder and developers have burnouts and leave. And new developers see the job postings and try to fit those nonsensical requirements. They are not expert of anything, they are usually familiar with everything. They write bad code. Applications start failing ...etc. I have no idea who is the winner of this cycle.

Also, this cycle is kind of embraced by the industry. It is normalized, like the experts were dumb or suckers to excel in their fields. We started thinking that "a little bit of everything" can solve the problems. NO IT DOESN'T !!! You realize at this point, skills and effort are what makes a profession, well, a profession. You can't see a doctor of everything or a teacher of everything or a lawyer of everything. Everything everywhere all at once is just a fictional (and very good) movie :) You HAVE TO understand that whatever job you have, there is a certain level of depth under the hood and time spent on it. The degeneration is the assumption that you can get away with neglecting the expertise of software development fields. Side note, the whole world is going down partially for the similar reasons.

I wanted to write why i am specifically mentioning 6 different parts above, but each of them would require almost a whole blog post. The weird thing is me thinking that i need to defend my job or expertise to validate my point here. Just like i can't say that a doctor's job is mainstream, nobody can say software development is mainstream. Oh wait, Chatgpt says, or implies it, right?

Chatgpt will NEVER fully replace software developers

If you read my conversation with chatgpt, you would understand that it is meant to present information. It can also make deductions, which is very nice. You can find it writing code for like 20 different programming languages. You can see examples of chatgpt writing complex code and explaining it. It can easily bring modules together. It can find errors inside the code. Well this sounds like chatgpt is very capable of developing software, right? Or in the near future, it can write enterprise applications in a snap of a finger, right? I mean in the end, software is just code, right?

WRONG :) This is why i have explained how fullstack developer is a degeneration. As a senior software developer and an instructor, i can understand how much chatgpt can do, more than you can. Believe me it can and probably get even better since it is presented and trained with huge amount of code. Even more code than i can write in like 1 million years non-stop. That does mean it can bring peaces together, that does mean it can suggest code. But doesn't mean it knows how to code. I said in the other post "whatever it knows, it just knows". It has to start learning, not memorizing. Isn't that what we call studying? Let me elaborate:

It has never encountered crisis scenarios or it has never had issues with its own code. It has never witnessed the transition or evolution of any programming language. It can't update itself, it can't fix itself if it makes a mistake. It knows but it is knowledge, not experience. It can't have like 4-5 different views on a domain considering the inner workings of a company. It can't optimize the development process by taking various elements into account. Like having meetings, keeping the people engaged and motivated. Believe me at the end of the day, the application that you are developing is a product of huge processes and person to person relationships. It can write advanced code that works. But you can write advanced code that lives.

Can we learn a lot of coding from chatgpt? Yes absolutely, and you should do it. Are there mainstream coding processes these days? Yes absolutely, even i get bored of writing similar codes sometimes. Can we get help from chatgpt and speed up processes. Yes absolutely. Can we fully rely on chatgpt to write the whole software. Nope :) If one day you in the future where chatbots are writing all the code and software developers are unemployed and living on the streets and read this blog, that means degeneration has won the battle. That means nobody cares about how important the software in this digital age. That means professions are voided and this really sounds like Idiocracy :)

Stack of problems

Long story short, the qualities of professions are getting lost and being ignored. This is very very dangerous. Software development has its share from this ridiculous epidemic and it is called fullstack development. I am not criticizing anyone here, if you call yourself a fullstack developer, it is definitely not my place to say otherwise or judge you. I also know that there are programming languages help you develop both frontend and backend but as i mentioned before, it rarely stops there. This logic is leading people to believe that chatgpt will replace you one day. I don't think this makes sense. As far as i can see, in the light of my 15 years or so software development history, there are serious problems that must be addressed in this area. I am trying to leave my mark here. Well, i wish you conscious coding. See you at the next post :)


Leave a comment