On the myth of full stack developers
On the myth of full stack developers
There are some myths about full stack developers. People may think that full stack developers are very powerful people. They know everything. They know both the back end and the front end. One person can do all the coding work. But is this the case? The author analyzes the role of full stack developer from the perspective of enterprise recruitment and as a front-end developer, and his view is very novel.
As a web designer, I have enjoyed working with programmers, engineers and people with computer science degrees for most of my career. In this symbiotic relationship, each party has a safe and clear job role, and can do what they are best at and enjoy their work.
Computer scientists don't spend all their time writing code. They do architecture. I'm responsible for communication, forms and interaction. We all need to write code, because we are doing web development, but we write code in different ways to achieve different and complementary things.
Full stack developer
But for those who don't write code at all, it's not so obvious: it's easy to think that the person who writes code will take care of all the code - because for code laymen, all the code is the same.
This misunderstanding has bad consequences, and non coders are usually people who recruit technicians, which in turn exacerbates the consequences. Evil capitalism always extracts the most value from the least resources, because this is the way they earn profits. If they can find someone who is willing to do all the coding work, they can greatly reduce the most important cost: people.
Therefore, there are full stack developers in the market, just like strong orcs emerging from the dirty placenta: stronger, better, and more problems.
Why is there a problem? HTML, CSS, JavaScript, python, c# and SQL are all code, but they are actually completely different code, suitable for different types of people. Take front-end technology as an example: html is a meta language, which is closely related to language, narration and meaning, and belongs to the field of writers. CSS belongs to printers and graphic artists, while JavaScript (usually refers to the client here, but it is actually the real programming language used by computer scientists) is used to handle data transmission and events.
That is, if you put someone in charge of all these things (including API and relational database design, etc.), they are likely to be much weaker in some areas than in others. Worse, they are often not interested in improving areas they are not aware of or where they do not have a sense of achievement. In my experience, men are better at JavaScript or Python and usually get more praise from it, but they rarely get these from CSS skills. CSS makes the page look more "beautiful" and tends to be "feminine".
A full stack developer (actually a computer scientist who writes HTML and CSS at the same time) needs to be responsible for all code, although the syntax and purpose of these codes are fundamentally different, and become the gatekeeper of some types of code (some people don't care whether it is written well or not). This has two adverse effects:
Poor code quality;
A group of people who can (and like) write good code are unemployed and can only mutter "WTF" on one side.
Full stack developer
One of the most obvious problems that make people such gatekeepers is poor HTML output quality. Most full stack developers come from computer science backgrounds. They learn program control structure but not HTML document structure. They are not good at these things, but we think they also undertake these tasks.
For "classic" computer scientists, CSS can be very elusive. Functions like cascading may confuse them. In order to make CSS easier to write and manage, they "ate" CSS with something they are more familiar with, so CSS in JS appeared.
From a technical point of view, CSS in JS is usually defined as a solution (the definition of practitioners) or a problem (the definition of opponents). I don't think it will make CSS better or worse - it's just a different way of coding. But this is not to say that it does not cause serious cultural problems:
Put CSS into JS, then anyone who wants to write CSS must learn JavaScript. Moreover, it is not only JavaScript, but also another specific "flavor" of JavaScript, such as react. Worse, JavaScript enthusiasts don't want to use CSS on their turf.
I recently worked in a company with dozens of full stack developers, but no front-end developers. We want to develop a website, but no one understands flexbox except me. Of course, I'm happy to help, but I have to learn react to complete the work at hand. Fortunately, I learned it quickly, but I may not be so lucky to change another CSS expert. The value that CSS experts can bring to you is their CSS skills, not their JavaScript skills, so it is absurd to regard JavaScript as a requirement for them.
In conclusion, I think we need to solve the following problems:
We need to realize that this is exploitation. Although there are some full stack developers who have done a good job, they bear too much responsibility, and they are actually unwilling or should be responsible for everything.
We need to solve the problem that HTML and CSS are underestimated: gender bias. If there were no women who made pioneering contributions to computer science, we would not have computer science, but now men are "anti guest oriented". Anything that is not "real programming" is now considered trivial, stupid, and more suitable for women. For those who have such ideas, they should be beaten severely.
We need to re-examine the principle of separation of concerns. It is a heavy burden for people to master everything in order to accomplish something. Now we use self-contained components to conceptualize design, which is a good thing, but it should be a psychological model, which can not cause technical competition.
Most importantly, we need to educate those who don't write code at all. Different types of code can be used to accomplish different things, and everyone's understanding of the code and the way of writing code are different. I hope that in this way, more people can write code that suits them, instead of spending time on anxiety, such as not knowing what they are doing, or taking too many responsibilities. Of course, this does not mean that if you are willing to undertake the task of writing JS, CSS, HTML, SQL and c\s code or have enough time, you should not write these code!