DEV Community

Cover image for Developer is the next blue collar job
stereobooster
stereobooster

Posted on • Updated on • Originally published at stereobooster.com

Developer is the next blue collar job

blue collar
People who generally do not have a college education, and go straight into a physical, or modest working-class job after high school.

urban dictionary

Blue collars sometimes defined as low skill job, often a manual labor. I would define it a bit another way - it is job which requires low training (at least up front), so people who can not afford university go to this job, or people who get into complicated situation or lost their previous job, basically when you tight on the budget and you need money right now, and you need to start now or ASAP and you don't have time, or better say privilege, to spent 5 years in university.

Side note: there is an article with similar title by Wired, I found it after I started to write mine.

Demand

Everybody needs a website today or do some basic business intelligence (even if it is done with Excel) or do some email delivery to the clients. There are, for sure, PaaS solutions, but sometimes it is not enough and companies hire tech-savvy people to manage all those things, which may not even appear as a programming in first place.

A number of tech companies are growing, there are tech companies whose clients other tech companies - that is how big the market is. From what I can see the demand for developers (also QAs, designers, UX experts) is growing every day.

Same time other professions are on the way to extinction, especially monotonic manual labor which is being slowly replaced by robots, drones, and automation.

It would be nice to open development for a wider audience, but to do this we need to change some practices in the industry.

Education

Does the software developer need a university degree? It depends. If developers are responsible for some critical system, then yes they need to study some math and formal methods, because the price of the bug can be a life, a very expensive rocket, a lot of money etc.

But if a developer needs to do Wordpress theme, I don't think they need to spend 5 years in university, 1/2 year in coding bootcamp will be enough (10 times less). Don't get me wrong it doesn't mean that Wordpress theme isn't a "real programming" (it is), or it is not cool (it can be). It just needs a bit different skill set, visual design will be more useful than mathematical statistics. And you can start with less knowledge upfront and learn while you are working.

Don't take this argument as if consider education bad or redundant - if you have time and money and ability, go ahead and learn all the things. Knowledge is a virtue.

It would be nice to have programming as school discipline, the same way as reading, writing, and arithmetics.

On the other side, you can learn at university some combinatorial math and other computer sciences. Then you graduate, try to find a job and it appears that companies are looking for PHP or Rails or React developers or other technology that didn't even exist when you studied. They didn't teach me web a11y, or graphical design basics, which would be useful for my web developer career.

For sure there are companies which are looking for theoretical knowledge (like computer science) rather than practical skills (like React), but I guess there are less of them and it is harder to get in.

Interviews

Interviews are a mess.

They ask computer science questions, like build LRU cache or what is the O(N), but hire for frontend developer position to move pixels on the screen (no disrespect, I'm front-end developer myself).

They ask to solve some puzzles on the Interview, but you end up working with requirements, which is not about puzzle solving, but rather about a patience, and communication.

So many times I was hired for one position, but end up doing something different, for example, I was hired as backend Ruby developer, but later switched to frontend as React developer.

I "like" when position lists all technologies ever used by company, and it is expected that you would know every one of it, like frontend position, but it lists as a "nice to have": kubernetes, java spring boot, Kafka, MongoDB, Angular 1 and obviously you need to know all React RFCs which Dan Abramov showed yesterday in a conference.

Gatekeepers

Gatekeeping is wrong on so many levels, I even not sure where to start.

In some countries, developers are getting 10-100 times more than any other profession. For those people, developer position is a ticket for a new life. They can feed the whole family for one salary.

Should they be stopped by the fact, that "if you do not feel like you are painting when coding you are not a real developer"? No. Do your thing, don't pay attention to gatekeepers.

The software developer is one of the professions which allows working remotely. This can be so helpful for single parents or people who need to take care of someone with a disability.

Nobody should take away this opportunity from people. Shaming people because "they use 1000s of npm modules to deliver simple website" is inappropriate. This is not their guilt, this is a problem of the platform, of the tools. Give people better tools, give people accessible education (without the steep curve).

Ergonomics

We can not do tools the old way anymore. (By tools I mean programming languages, platforms, libraries, frameworks etc.) We need to start thinking about ergonomics upfront.

Before programming was a profession for some, now it includes hundreds of thousands of people. Each "hiccup" in the flow will cost 1000s of work-hours (even if it is 5 min per person).

  • Error messages should be clear, like in Elm
  • Frameworks and languages should provide codemods and upgrade path, like Ember.js
  • Languages should come with package and version manager, like rbenv and bundler
  • Choose convention over configuration, like Rails and Create React App
  • Languages should come with formatter, like gofmt or prettier
  • Languages should not include footguns, for example, prefer GC over manual memory management
  • Languages with footguns should include linters to warn against tricky parts of the language
  • Languages should come with static analyzers to prevent bugs at runtime, like advanced type systems or borrow checkers
  • All tools, like test runner, static analyzer, compiler or transpiler should have watch mode
  • All tools should have a short time to re-run, like OCaml and go compilers
  • There should be official starter projects and easy way to set up a development environment, maybe with docker or with one simple command

Side note: if you about to argue that it is not possible to write real-time programs in GCed languages, it is not true with the latest research, for example, Pony have non-stop garbage collector it combines actor model (like Erlang) and borrow-checker (similar to Rust).

Platforms should be designed without a steep learning curve, it should be easy to start and possibly learn on the go. Everything should be sandboxed and secure by default. It supposes to be hard to do the wrong thing.

Unions

A number of workers in the industry grow every day. More and more people with different backgrounds, more and more vulnerable people - people with a desperate need for money or people from minorities. Those people not always have powers to stand against companies, to get their rights protected. They need protection - unions.

Unions could help to fight against unethical decisions of companies.

By looking on those arguments at twitter about frameworks or where to put semicolon I hardly can imagine programmers joining unions, but who knows.

Photo by Randy Fath on Unsplash

Top comments (43)

Collapse
 
thecodetrane profile image
Michael Cain • Edited

Great article. I have said it before, and I’ll see it now: I look at myself as a β€œdigital carpenter”.

I do not have a CS degree, have very little interest in elaborate, intricate algorithms and know enough about IT to do my job well. I got into software development because it is lucrative and job-secure.

I think the majority of the people that are getting involved in the field are like me, and as your article pointed out the need for people like me is much greater than those who spend their days contemplating optimal garbage collection or caching.

Expertise is important, don’t get me wrong, however the world needs bread-and-butter developers like me to do the grunt work.

Collapse
 
rhymes profile image
rhymes

Expertise is important, don’t get me wrong, however the world needs bread-and-butter developers like me to do the grunt work.

True, though one could also use this as the foundation of an argument in favor of automatization and thus the end of people doing "grunt work".

Collapse
 
thecodetrane profile image
Michael Cain

Perhaps, but just like the construction business, we are a LONG way away from automating run-of-the-mill β€œdigital construction”. I see a future where β€œgrunts” will have automated tools to build more, faster. We will still be required, however.

Thread Thread
 
rhymes profile image
rhymes

I see a future where β€œgrunts” will have automated tools to build more, faster.

I wouldn't call them "grunts".

Anyway, some tools are starting to pop up. Zapier, IFFT, Stamplay and others I guess.

Collapse
 
tomvorel13 profile image
Tomas Vorel

Couldn't agree more.

Not everybody can nor wants to be the next Dan Abramov inventing the next game changing library in the industry. Some people just need a secure job that pays well and also get the sense of fulfillment that you are actually building/creating something (just as a carpenter would) and not just punching in numbers or trying to persuade other people into buying a product you don't really believe in, just so you can get the commission to buy that sweet new watch.

However, I would not advise anybody to get into the industry just for the sole purpose of getting paid. You'll get burnt out very quickly.

Collapse
 
stereobooster profile image
stereobooster

You remind me about a different question. But it is ok if learning happens as a part of a job, right? If, for example, every second Friday you are able to learn some things or do some coding dojo (at work time)

Collapse
 
thecodetrane profile image
Michael Cain

Absolutely. That is how most of us learn professionally, anyhow. Challenging yourself, whether on a specific task or through code katas is a good move all the way around.

Collapse
 
michielnuyts profile image
Michiel Nuyts

That grunt work will be automated at one point. I think educating yourself and becoming an 'expert' will become much more important.

Collapse
 
thecodetrane profile image
Michael Cain

Yeah, people say that but I look at how driverless cars are going and I’m pretty sure the grunt work is going to be around at least for our lifetime. You can’t automate creativity.

Thread Thread
 
desolosubhumus profile image
Desolo Sub Humus 🌎🌍 • Edited

I hate to break it to you, but this already exists. It's definitely not my cup of tea, but it is out there.

Collapse
 
stereobooster profile image
stereobooster

I am the one asking to solve puzzles on interviews. This is the best approach to know the candidate’s way of thinking.

1) Imagine you hired a person who excelled in puzzle solving. Now they work in a company and product manager ask to add another feature. It doesn't fit in the current architecture, a good solution would say no or plan out propper refactoring and later implement the feature, but PM insists and it is possible to hack around it (a person can and like to solve puzzles)...

2) People who like puzzles often have a blind spot for complexity. They can and like to solve puzzles so they barrier for complexity is higher, they can create a pretty complex solution without realizing it. So I would test candidate for simplicity "tooth"

3) The interview is a stressful experience already, asking this kind of things makes it even worth

4) If I would be asked puzzle questions on an interview, but actual job ends up being not that "puzzly" I would be disappointed. I don't know what you interview for, maybe it is justified, but in most cases not

Patience level and communication skills are not ever checkable during the interview process.

When I said communication, I meant basic levels, like simply not being a jerk, don't insult people, don't create a hostile atmosphere. And this is pretty easy to spot, just ask them to remember something, like about their previous job or similar. I don't know why, but jerks can't hold it, they will show it.

Collapse
 
larribas profile image
Lorenzo Arribas

Good article, brings up a few points I've given a lot of thought to over the years.

Here are my two cents:

I think we use "software developer" too broadly. Someone solving really hard problems for NASA and someone coding landing pages have roughly the same title.

And yet, we talk about interviews, gatekeeping and tooling as though there was a one-size-fits-all.

Our industry is very young and culturally rooted on anyone-in-their-basement-can-beat-the-establishment. I think that's why it hasn't adopted a more hierarchical and professionalized structure like doctors, architects, civil engineers, and so on.

But in my opinion, it will. At some point, we need to accept that there are different jobs that require different skills. Some jobs are harder and require a steeper learning curve and a higher education level. Others are easier. Others save lives. Others end them. Not judging a book by its cover doesn't mean all books are the same. And we need to distinguish and verify who is allowed to do what.

I also think (and wish) the long-term future will look less like:

"I am a lawyer and we have a developer automating our contracts"

and more like:

"I am a lawyer and a part of my job is to automate my firm's contracts"

(Replace lawyer with any other profession. The idea is that basic coding skills will be like writing or using an excel sheet now. Duh, of course I code)

Collapse
 
gypsydave5 profile image
David Wickes

"I am a lawyer and a part of my job is to automate my firm's contracts"

Isn't this why we gave them Excel, the most widely used image based programming environment in the world?

My partner was writing an Excel macro yesterday. I told them - you're programming! But they said - no, I'm not - I'm not a programmer; I was just using Excel.

So I said - when you're writing an email, you're writing. But you're not a writer. There are professional writers, specialists in copywriting or fiction writing or journalist, but everyone can write and often does in their jobs.

We need to stop thinking in terms of the magic black terminal screens and walls of indented text when we talk about the democratization of programming. It's already happened - Microsoft Excel is an interactive development environment in the style of Smalltalk and Lisp.

Things like Jupyter notebooks are also improving the situation. Ergonomics of existing languages is a red herring.

Our industry is very young and culturally rooted on anyone-in-their-basement-can-beat-the-establishment. I think that's why it hasn't adopted a more hierarchical and professionalized structure like doctors, architects, civil engineers, and so on.

I think you're placing the cultural cart before the economic horse here. The reason we haven't professionalized is because there's been no need to - demand for devs far outstrips supply. As soon as that tops out, and companies want to discriminate between 'good' and 'bad' developers, I think we'll see professional bodies and regulation become more required and sought after. Basement hackers will go the way of unlicensed doctors and disbarred lawyers.

This will also be accelerated as soon as we start killing people with badly written code, at which points governments will intervene and demand regulation of the industry. It's only a matter of time.

Collapse
 
larribas profile image
Lorenzo Arribas

I agree that some professionals are already programming through Excel and Jupyter-like notebooks.

But, apart from seeing people use better tools in a more sophisticated way, I believe basic theory, formal syntax and algorithmic thinking will be a part of the skillset of all future professionals (like formal writing skills or math concepts are now).


I think you're placing the cultural cart before the economic horse here. The reason we haven't professionalized is because there's been no need to - demand for devs far outstrips supply.

That's a good point. Supply-demand is probably a better explanation for the lack of regulation.

This will also be accelerated as soon as we start killing people with badly written code

I wonder if we're running late already. A few political conflicts have already been linked to poorly regulated and thought-out technology.

Look at nytimes.com/2018/10/15/technology/...

Or the multiple data leaks as of late (and the consequences they might have).

Collapse
 
nektro profile image
Meghan (she/her)

Someone solving really hard problems for NASA and someone coding landing pages have roughly the same title.

Are they though? Coding is not hard. Coding well is extremely difficult. And this idea that anyone just starting can do it (for a production environment (for a bank no less)) is dangerous. There are different problems being faced by both of those engineers, but neither of them is without a massive pool of domain knowledge necessary to do them well.

Collapse
 
larribas profile image
Lorenzo Arribas

If I understand you correctly, I think we're on the same wavelength here.

I was referring to the title names. I've seen companies with very simple products and little to no Quality Assurance processes look for Senior Software Engineers. And I believe we should not be using the term "Engineering" so lightly.

 
stereobooster profile image
stereobooster

If this is not a discrimination, I don’t know what is.

Discrimination is the unjust or prejudicial treatment of different categories of people, especially on the grounds of race, age, or sex.

Jerk is not something person was born with, jerk is how a person behaves. So no this is not a discrimination. They can choose to stop being jerks.

But even despite all the above, I’d prefer to have a professional jerk in my team rather than stupid guru of intercommunication. I am working in CS, not in the shelter for aggrieved.

I don't need to add anything to that. Exactly why I wrote my article. I'm saying we need to open doors for people who typically discriminated and oppressed and you suggest to hire more jerks who will discriminate and oppress people.

Jerk is somebody with lower empathy level - they don't feel when they offense people, they believe because they can solve puzzle or two they better than others. We all people, we are different but this doesn't make one person better than another.

Thread Thread
 
rkfg profile image
rkfg

But even despite all the above, I’d prefer to have a professional jerk in my team rather than stupid guru of intercommunication. I am working in CS, not in the shelter for aggrieved.

It's so refreshing to see an actual adult person in IT, focused on the job. I believe this is the right mindset required to invent and push the industry forward. And no, I'm not being ironic or anything, I'm pleasantly surprised that not babysitting people in a huge curated IT-kindergarten is still a thing. Best of luck to you and your company.

 
stereobooster profile image
stereobooster

These two sentences are mutually exclusive.

No, they are not. There are some acceptable behavior and some unacceptable behavior, for example, you can't kill, torture or rape people (exaggerated example). One person's freedom ends where another's begins. So being different, as different race or sex or sexual preference or being disabled doesn't limit other's freedom, but being a jerk is.

You tend to judge people by your own standards,

Those are only standards I have. Do you have like some additional set?

which basically means you discriminate and oppress them in the first place.

Discrimination would be, for example, if I would say that every woman is... If I'm saying that this person is a jerk this is not a discrimination (and if I'm sure I don't have any hidden biases).

Collapse
 
larribas profile image
Lorenzo Arribas

Unions could help to fight against unethical decisions of companies.

Many countries in Europe have union-like governance structures for each profession (one for doctors, one for engineers), where they stipulate base conditions (ethical, financial, and so on) for their work contracts.

Unions are a difficult topic, but it's certainly an interesting idea.

It's also quite 'upbeat' that employees of big companies are actively fighting for their ethics mashable.com/2018/06/02/google-def...

Collapse
 
gypsydave5 profile image
David Wickes

The idea would be that of 'professional body' - i.e. in the UK the doctors have the BMA which covers trade union activity as well as professional training and development.

This would be a good fit for software developers... but I fear it's time has not yet come, and we're all too disorganized to get something like this off the ground.

Collapse
 
lysofdev profile image
Esteban HernΓ‘ndez

I think Unions in software development need to focus on helping developers stay employed in a volatile job market in order to really catch on. I wouldn't mind paying a monthly fee for employment services that keep me employed on a contract-to-contract basis. This organization would reduce the cost of hiring for companies and the frictional cost of transferring between contracts for technology workers.

Unions will fail if they try to negotiate salaries or guarantee long-term employment with companies because enterprises simply aren't as long-lasting as they used to be (and this is a good thing).

Finally, Unions could help provide quality healthcare to remove this burden from the employer. Medical plans can be included in memberships which would allow the Union to adopt a single-buyer model for providing health care to members.

Collapse
 
nektro profile image
Meghan (she/her) • Edited

I read that Wired article and saw this:

These sorts of coders won’t have the deep knowledge to craft wild new algorithms for flash trading or neural networks. Why would they need to? That level of expertise is rarely necessary at a job. But any blue-collar coder will be plenty qualified to sling JavaΒ­Script for their local bank.

I think I just a heart attack.

Collapse
 
stereobooster profile image
stereobooster

I didn't read it, just noticed that it has similar title.

Collapse
 
david_j_eddy profile image
David J Eddy

"...there are tech companies whose clients other tech companies - that is how big the market is." I have a friend that works for a small support center than is a client of a domestic support help desk that is a client of an international on-site service provider than is a client of a global hardware manufacturer.

Yea, like programming the computer field is abstracted all the way down.

Collapse
 
desolosubhumus profile image
Desolo Sub Humus 🌎🌍

I tend to think of gatekeeping as more like my resume getting shredded because I don't match the programmer stereotype. I don't have a CS degree, or any degree, for that matter, I didn't go to the right college, or any college at all, really, I'm not the right sort of guy, or a guy at all (I'm a woman), really, I don't live in the right city, or even a city at all (I'm rural), I'm too old and therefore not a good match (even if I keep getting mistaken for someone over 10 years younger when people actually meet me), I don't make enough money to live close enough to any job openings and remote working is only available to senior developers, and on and on. It's hard to convince an employer that I'm passionate about code or that I have soft skills when they won't look at my resume or take my calls, much less give me an interview.

Collapse
 
stereobooster profile image
stereobooster

There are companies which ready to take juniors remotely - remote first companies. I hope you will get through this barrier. Hang in there. It will get better

Collapse
 
desolosubhumus profile image
Desolo Sub Humus 🌎🌍 • Edited

I've seen companies like that, but they generally require that people live in the same state (in the US) or in the same country (outside the US) for that to happen. Due to the specific state in the US I live in, I'm rather screwed for that.

I do hope it gets better, though after over a decade of rejection before I can even get to the stage where a human looks at my resume (Booking.com was the one exception, but I was still rejected well before the interview stage), I'm not holding my breath. Gatekeepers are the worst; even more so when the gatekeeper is a faceless bot.

What disappoints me the most is that while code itself isn't sexist, racist, classist, or any other -ist, but algorithms can be written to mimic such -ists. I truly do hate seeing code used like that.

Collapse
 
schmowser profile image
Victor Warno

Thank you for this insighful article! I frequently wonder whether software development is a simple job - able to be done by everyone who is willing to learn systematically - or a hard job - requiring everyone to have a scientific degree. Really depends on what you are working on.

Especially scary are the stories you provided about the impact a bug can have. That such a machine for radiation therapy can be programmed by only one (!) developer is astounding if not utterly dangerous. That just shows how important communication and teamwork can be in the development world. Pair programming, peer reviews and thorough testing could have prevented some accidents. But surely, there have been holes in different parts of the conception.

You just made me want to reread Clean Code! You just made me think about possible ethical discussions developers will face! :)