8 ms·
> Many programmers have a bias in thinking that what they're doing is easy or simple In my experience it's exactly the opposite. People who do nothing but writ
by _bxg1 7y ago
> Many programmers have a bias in thinking that what they're doing is easy or simple
In my experience it's exactly the opposite. People who do nothing but write glue code between major services think they're hot stuff.
One of my personal career goals is to stay as far away from simple glue code as I can. Unfortunately it makes up most of our field right now. But it seems like an especially precarious place to be.
- NeverFade 7y agoWelcome to the wonderful world of Dunning-Kruger. Folks in the middle of the curve are blissfully unaware how much there is to know and how many difficult problems must be solved to put together those backend services they are gluing.
- amelius 7y agoI think, therefore, we should try to use different labels for different kinds of developers as much as we can. E.g. "software engineer", and "programmer" should be labels for different roles/capabilities, as should be "computer scientist". Using the terminology incorrectly should be frowned upon, similarly to how this goes in other disciplines.
- jefftk 7y agoI'm not sure the field is mature enough yet for us to be splitting things up like that. I've worked in performance critical code, research science code, website optimization, ads infrastructure, browser testing, experimentation frameworks, dumbphone mobile payments, and other things, in C, C++, Python, JS, Bash, and Java. Most of my coworkers have a similarly wide range of experience. These have a lot of core skills in common, both hard and soft, but it's such a mishmash of things that trying to impose precision via labels doesn't seem helpful to me.
- deadmutex 7y agoPerhaps this is due to the location where you work.
- jefftk 7y agoI'm in Boston, and more than half of the above were while working for a single company (Google)
- pjc50 7y agoSimilarly in the UK I have done bits of everything from IC design, IC design software, ARM assembly, webserver (Zeus), network engineering, sysadmin, web apps, Windows CE, and even some actual soldering. Small companies are great for this.
- analog31 7y agoMost people with engineering titles are primarily busy creating whatever represents "glue code" for their particular field. Most white collar work is like the saying about dissertations in the humanities: The transfer of bones from one graveyard to another.
- pjc50 7y agoAs jefftk's comment says, the field is too .. protean and ill-defined to do that. We can barely agree on "frontend" and "backend". There used to be separate "analyst" and "programmer" jobs, enshrining that would have prevented a whole load of efficiencies. It's also why there's so much difficulty in bringing wages down by just training more programmers: it's much harder than it looks. Teaching people to program is far more unreliable than other disciplines; the degree of self-starter on-demand continuous improvement required is very high. Other professions (e.g. actuary) may have a big hill to climb, but the requirements are written down and there is a clearly marked path up the hill. In software you may wake up to find that someone has moved the entire hill during the night and you have to make your own path, again.
- tomphoolery 7y agoThis! I think Rob Pike said it best in his initial talk about Go: there are two kinds of developers...programmers, and engineers. programmers want to build things, engineers are constantly monitoring and maintaining existing structures. the terms "builder" and "gardener" are also used in this context, but I always felt that the classic usage of "engineer" was someone who would maintain, monitor, and keep systems alive...whereas a programmer is tasked with building that system in the first place. Not saying that programmers shouldn't be responsible for the correctness of their own work or anything, nor should engineers never build anything from scratch, it's more a matter of your preference and what you personally like to do in your job. But what is a "computer scientist", really? Is it just some theorist who sits in an ivory tower and tells us all what to do? In my opinion, a "computer scientist" can actually be either a programmer or an engineer (or maybe have both in their blood? who knows). It's someone who is less concerned about building things for today, and more concerned about how computers are going to work tomorrow. It's a wholly separate role from us "construction workers" who have our boots on the ground and are actually building things...the scientists are concerned with how we're going to build things tomorrow. I don't know if Rob Pike, Robert Griesemer, Ken Thompson, or Russ Cox still work on actual systems code anymore or whether they just figure out how to improve the Go language, but assuming that they only work on Go full-time, that to me is the role of a "computer scientist", though for example Ken Thompson is also a "programmer" because he likes to build things.
- nnq 7y ago...except that people tend to use there words with reversed meanings too :| If a programmer wants to sound fancies he/she uses the term "software engineer". Also, separating "building" from "maintaining" (when "maintaining" means more than running / scaling / securing, and also includes adding features) is a a recipe for disasters! The builders/creators start creating unmaintainable messes because it's not their job to maintain them. I don't think these kinds of distinctions help in software... we need different ways to look at the problem... Also this lack of separation is kinda what makes software dev a cool field to work in... I love the hacker mentality and if it ever fully dries out I'm gonna quit working in this field and move to a fresher/younger one.
- robjan 7y ago"simple glue code" tends to be the part that has the most value added. We can keep building new frameworks and technologies over and over again but the real value is in using them to solve business problems.
- _bxg1 7y agoRight. The problem is that it isn't terribly hard to do. It certainly doesn't require a CS degree. Any reasonably smart person can do it after a three-month boot camp. This is why there's a correction on the way.
- mobjack 7y agoGlueing together code gets complicated fast as you start adding more pieces to the system. There is a reason why so many projects end up being a giant mess. Most people aren't smart enough to make it through a bootcamp and those who do still need years of experience to be fully productive.
- kradroy 7y agoThis is largely true. However, I've been cleaning up and scaling those systems glued together by dilettantes for years. My salary has been increasing, on average, 10-12% yearly for quite a while. I'm in management now and my primary job is to find and manage 1) people who glue together APIs to solve business problems AND 2) people who can fix the problems created by group #1. There is very little overlap between the two. I welcome more boot camp grads. The amount of work for both groups is growing. I don't see salaries for devs falling. They may flatten out for some business problems/areas, but new and/or underserved will always appear.
- TulliusCicero 7y agoPeople have been saying there's a correction (or bubble burst) on the way for the last several years. It's very much a "correctly predicted nine out of the last five recessions" kind of situation.
- robjan 7y agoThere's a definite bubble at the junior level. I feel it will be self limiting as and when the bootcamps start failing to place people and people stop seeing it as a way to easy wealth.
- alexandercrohde 7y agoMost doctors are doing simple glue stuff and think they're hot shit. You think I couldn't diagnose that cold, or a machine? Most lawyers are doing simple glue stuff and think they're hot shit. You think I couldn't refer that case to another law firm, or a machine? Most businessmen are doing simple glue stuff and think they're hot shit. You think I couldn't randomly guess at the market, but not outperform it, nor a machine?
- EpicEng 7y ago>You think I couldn't diagnose that cold I think you'd get the 90% case due simply to the preponderance of people who have a cold instead of some other, more rare condition with similar symptoms. Problem is you'd cause harm to everyone who doesn't have a simple cold because you have no idea what you're doing. Comparing the knowledge needed to be a good doctor to what is required to throw up some bloated SPA? C'mon, get over yourself.
- prirun 7y agoDoctors make a lot of mistakes too, just like programmers. But with doctors, it's easy to blame it on the vagaries of the human body. So even when the "cure" doesn't, people expect that because of the differences between individual bodies. This gives them a pass of sorts when they screw up, the medicine doesn't work, the side-effects kill you, you get a fatal infection in the hospital, etc. With programming, if you are designing the control system for an aircraft and it fails, people will be able to find out exactly what failed and why, and who to blame. It's hard to compare doctors and programmers, because there are many levels of medical professionals, just like there are many levels of programming.
- EpicEng 7y agoThat's a funny comparison considering doctors must pay outrageous amounts of money for malpractice insurance, but engineers are never held personally responsible for a bug (legally, at least.)
- sizzle 7y ago
- odyssey7 7y ago> One of my personal career goals is to stay as far away from simple glue code as I can. Unfortunately it makes up most of our field right now. But it seems like an especially precarious place to be. Integration platforms are getting good. The API integrations that make up a lot of my work might be better done with them in not too long. It's already reached the point where some clients speak with me only after an integration platform hasn't met their use case.
- jniedrauer 7y agoThere aren't a lot of areas left in CS where "clever" solutions are warranted. If you're writing clever code, then chances are you're doing a disservice to anyone who has to maintain the mess you're creating. Code is mostly just plumbing. Boring code is better 99% of the time.
- ken 7y agoThe flip side of this is that because digital plumbing is "boring", the industry is constantly seeking ways to avoid it. Writing assembly language was (usually) really boring, so we developed good compilers to do that for us. I look forward to the day where I can send data from one place to another and not have to bother with file formats, text encodings, port numbers, network protocols, and so on. IP (and especially TCP/IP) is so prevalent today that we use "IP connection" and "network connection" interchangeably. Someday I hope we have that consistency at some other layers of the stack. I shouldn't have to say "send me that file -- what app did you use to make it?"
- 3pt14159 7y agoI've been thinking through this for a while now and I've come to the conclusion that the details keep getting more complicated faster than other things can automate them. For example, I remember a time when software served ascii and when the Canadian government asked to buy a version of some software we were writing for the Americans the reason the head of the company said no was because we'd have to support French and that meant non-ascii characters. Now, UTF-8 is a given and there is a mess of potential issues. No longer are byte-by-byte comparisons reliable, especially in some languages like Vietnamese. Your example of IP connection and network connection is true, but overall connections are more complicated. Some clients can't use HTTP2, some clients are behind firewalls, some clients need CORS support, etc. And plus there is this accelerating wave of advancements everyone is trying to keep up with, but that come with real investment. Upgrading OSes, programming languages, frameworks, libraries. Figuring out how to keep data secure. I really don't see things getting less complicated as time goes on. At least not until we have some real form of AI, but even there I have my doubts because there will always be tradeoffs.
- logicallee 7y agoIn my opinion if you can write glue code between major services, you're hot stuff.
- crimsonalucard 7y agoI disagree, the fact that you can go to a bootcamp to learn this shows that you're not.
- logicallee 7y agoIsn't an alternative explanation that bootcamp actually makes a person hot stuff, despite not teaching much? For example maybe if you went to bootcamp, you (crimsonalucard) would be hot stuff when you came out (even if you've been programming for 20 years), due to exposure to all the external services you'll be able to glue together. The fact that your glue code will have runtime O(1) (a single call) instead of O(n^n), but only for up to 4, as the poor kids do something like have four different if statements for 1 to 4, and each one is a nested for loop, and over 4 it silently does nothing, is less relevant than the exposure to the API's at all. In other words, maybe terrible programmers can be hot stuff writing the latest glue code - even if it's brittle and barely works. With all the services huge companies are exposing, this wouldn't surprise me.
- crimsonalucard 7y agoYou're just redefining what being "hot stuff" is. Under that definition, anyone on the face of the earth can be "hot stuff." You don't even need to go to bootcamp. Just read some online tutorials, make a website. Done. You're just calling the average person "hot stuff." In my opinion, you're only hot when you know how to do something that is rare, very hard to learn and in demand.
- logicallee 7y agoI see a difference between a web site and a web site that exposes a service that on the backend connects API's of two different companies that do the heavy lifting.
- fragmede 7y agoThat sounds good, but ultimately seems pithy. Going back to the recent "my business card runs Linux" post, board bring up and PCB design is far from "simple glue code" and far more niche than web dev. Except that pay rates for that segment of the industry are lower than a bootcamp graduate can make in SF, The issue of precarious is also a bit "the grass is greener" sort of view. In 5 or 10 years when the industry again looks different, bootcamp level web dev work may be as precarious as you project. But right now, what's more precarious, specializing for one company in a corner of the industry where there are only a small handful of companies, or working for a company that you the employee, could easily replace?