I am not sure about other professions. Maybe researchers also fit this pattern, but there are probably less researchers than programmers, so the typical person is this position would still be a programmer.
The pattern is approximately this:
The essence of the company is selling the things you do. Those are very complex things that other people in the company mostly don’t even have a clue about. You create the magic, the rest of them provide you an infrastructure. (Which of course is important. Without selling to the customer, without doing the paperwork, etc. you wouldn’t make money. But still...) There are very few people able to do this magic, and everyone complains about lack of them. A random person taken from the street probably couldn’t replace you even in five years of training. Just doing what they taught you at school and following orders in the work would not be enough; you need some talent, curiosity beyond your work. -- And yet, somehow, you are usually treated as an unimportant person, your opinions about the process are irrelevant, sometimes you are even not given adequate tools. When the magic works perfectly, it’s merely business as usual. If the magic somehow breaks, you are treated like an incompetent idiot.
And the worst part is that some of your colleagues actively participate in this pattern. They take personal pride at not doing anything that would resemble an union; they play negative-sum games against their colleagues. For example: The manager tells you you should do something in 2 hours, which is an obvious planning fallacy. Based on previous experience, you say it takes 4 hours. One of your colleagues starts contradicting you, saying that you “only” need to do this and this (making it sound really trivial by ignoring all the technical details and all things that could go wrong), and that actually 1 hour should be enough. He simply couldn’t resist an opportunity to signal that he is smarter than you; because signalling “I am smarter than you” is what this loathsome little shit does as automatically as breathing (he probably subconsciously expects that his mommy would be so proud of him what a smart little boy he is). But the end result is that you all have a lot of work and not enough time to do it properly, bad working conditions and tools (because the same little shit will argue that state-of-the-art tools and quiet workplace are not really necessary for someone as smart as him), and you somehow succeeded to make each other seem incompetent despite being a very small fraction of population that even has a clue about the magic you are doing. Sigh. So technically smart, so socially stupid.
It’s not just about signalling intelligence. Lawyers also signal intelligence. But they don’t signal it by saying: “Look ma, I can do it much faster and much cheaper than he can, ain’t I smart?” Because anyone socially savvy can see it actually isn’t that smart.
I’d say: start respecting yourself and respecting your colleagues who are competent at what they do. (If someone is clearly incompetent, and is a shame to the profession, that’s another thing. But if they merely take a bit more time to implement this, or they have a little less experience with that, because they are younger or specialized at something else, just let them breath. Let the managers judge whether they are adequate, it’s not your job.) There is a lack of programmers; everyone is complaining about the lack of programmers. So don’t act like your only option to survive is to cut your colleagues’ throats. Aim for “everyone is good, I am super-good” image, instead of “I am okay, everyone else is an idiot”.
Sigh. Trying to make nerds cooperate is probably futile, because most of us are too clever to win. When given a choice between having a cake and having your mommy be proud of you, we usually throw away our cakes and our potential allies’ cakes, too. It takes a while to realize that being hungry sucks.
What Lumifer said. All these internet schools are great for people who have the ability to program, so now they all have an opportunity too. But there is a limited number of people with that ability. We will have more programmers, but probably still not enough.
Also, it seems to me that the programming jobs are getting more and more complex. Fifteen years ago, I could make decent money by coding desktop applications in Visual Basic. These days I am using Java + JSF + PrimeFaces + EJB + JavaScript + JQuery + SQL + XML + HTML + CSS + Maven to make an application that in some sense is actually more simple, but it has a web interface, which is required a lot these days. Compare how much time would it take to learn one technology vs. almost a dozen of technologies. (But if I tried to get a similar job in the next company, they would probably complain that I don’t have experience with Spring or Struts or Hibernate or Selenium or whatever else. Unless my knowledge is perfectly tailored to needs of one specific company, I have to learn more technologies than I will actually use.) What are all these technologies used for? Essentially, you read a value from database, display in on web page, let the user edit it, and store it again in database; or display the data in a table, and allow user to sort or filter the table by individual columns. Somehow this requires dozen programmers and five years of work.
The internet courses also have a huge rate of dropping out.
I am not sure about other professions. Maybe researchers also fit this pattern, but there are probably less researchers than programmers, so the typical person is this position would still be a programmer.
The pattern is approximately this:
The essence of the company is selling the things you do. Those are very complex things that other people in the company mostly don’t even have a clue about. You create the magic, the rest of them provide you an infrastructure. (Which of course is important. Without selling to the customer, without doing the paperwork, etc. you wouldn’t make money. But still...) There are very few people able to do this magic, and everyone complains about lack of them. A random person taken from the street probably couldn’t replace you even in five years of training. Just doing what they taught you at school and following orders in the work would not be enough; you need some talent, curiosity beyond your work. -- And yet, somehow, you are usually treated as an unimportant person, your opinions about the process are irrelevant, sometimes you are even not given adequate tools. When the magic works perfectly, it’s merely business as usual. If the magic somehow breaks, you are treated like an incompetent idiot.
And the worst part is that some of your colleagues actively participate in this pattern. They take personal pride at not doing anything that would resemble an union; they play negative-sum games against their colleagues. For example: The manager tells you you should do something in 2 hours, which is an obvious planning fallacy. Based on previous experience, you say it takes 4 hours. One of your colleagues starts contradicting you, saying that you “only” need to do this and this (making it sound really trivial by ignoring all the technical details and all things that could go wrong), and that actually 1 hour should be enough. He simply couldn’t resist an opportunity to signal that he is smarter than you; because signalling “I am smarter than you” is what this loathsome little shit does as automatically as breathing (he probably subconsciously expects that his mommy would be so proud of him what a smart little boy he is). But the end result is that you all have a lot of work and not enough time to do it properly, bad working conditions and tools (because the same little shit will argue that state-of-the-art tools and quiet workplace are not really necessary for someone as smart as him), and you somehow succeeded to make each other seem incompetent despite being a very small fraction of population that even has a clue about the magic you are doing. Sigh. So technically smart, so socially stupid.
It’s not just about signalling intelligence. Lawyers also signal intelligence. But they don’t signal it by saying: “Look ma, I can do it much faster and much cheaper than he can, ain’t I smart?” Because anyone socially savvy can see it actually isn’t that smart.
I’d say: start respecting yourself and respecting your colleagues who are competent at what they do. (If someone is clearly incompetent, and is a shame to the profession, that’s another thing. But if they merely take a bit more time to implement this, or they have a little less experience with that, because they are younger or specialized at something else, just let them breath. Let the managers judge whether they are adequate, it’s not your job.) There is a lack of programmers; everyone is complaining about the lack of programmers. So don’t act like your only option to survive is to cut your colleagues’ throats. Aim for “everyone is good, I am super-good” image, instead of “I am okay, everyone else is an idiot”.
Sigh. Trying to make nerds cooperate is probably futile, because most of us are too clever to win. When given a choice between having a cake and having your mommy be proud of you, we usually throw away our cakes and our potential allies’ cakes, too. It takes a while to realize that being hungry sucks.
By the way, how long do you think will it last, with current popularity of learning to code, coding bootcamps, MOOC etc.?
Long. Bad programmers are a dime a dozen, good programmers are rare because to be one requires both high IQ and a a particular way of thinking.
Teaching idiots how to code isn’t going to help.
What Lumifer said. All these internet schools are great for people who have the ability to program, so now they all have an opportunity too. But there is a limited number of people with that ability. We will have more programmers, but probably still not enough.
Also, it seems to me that the programming jobs are getting more and more complex. Fifteen years ago, I could make decent money by coding desktop applications in Visual Basic. These days I am using Java + JSF + PrimeFaces + EJB + JavaScript + JQuery + SQL + XML + HTML + CSS + Maven to make an application that in some sense is actually more simple, but it has a web interface, which is required a lot these days. Compare how much time would it take to learn one technology vs. almost a dozen of technologies. (But if I tried to get a similar job in the next company, they would probably complain that I don’t have experience with Spring or Struts or Hibernate or Selenium or whatever else. Unless my knowledge is perfectly tailored to needs of one specific company, I have to learn more technologies than I will actually use.) What are all these technologies used for? Essentially, you read a value from database, display in on web page, let the user edit it, and store it again in database; or display the data in a table, and allow user to sort or filter the table by individual columns. Somehow this requires dozen programmers and five years of work.
The internet courses also have a huge rate of dropping out.