[HN Gopher] The cloudy layers of modern-day programming
       ___________________________________________________________________
        
       The cloudy layers of modern-day programming
        
       Author : antirez
       Score  : 108 points
       Date   : 2022-12-06 10:36 UTC (12 hours ago)
        
 (HTM) web link (vickiboykis.com)
 (TXT) w3m dump (vickiboykis.com)
        
       | gilbetron wrote:
       | I've been comparing much of modern-day programming to assembling
       | a kit from a knockoff Lego brand. It seems like it's easy, but
       | then there's a lot of cursing and annoyances as the pieces don't
       | quite fit together.
        
         | plugin-baby wrote:
         | Knockoff Lego quality is getting very very good these days.
        
       | mvaliente2001 wrote:
       | Although I sympathise with the sentiment, that's just half of the
       | story. Today, I can deploy a high available cluster in minutes
       | using any cloud technology + kubernetes and my favourite web
       | framework. True, I need to learn half dozen of frameworks, and
       | _it feels_ like I'm not working in the core problem, but had I
       | tried to implement an equivalent system without those tools would
       | have taken me months, and I would end with an ad-hoc half tested
       | non-reusable mess.
        
         | jjav wrote:
         | > Today, I can deploy a high available cluster in minutes using
         | any cloud technology + kubernetes and my favourite web
         | framework.
         | 
         | I think the point is (at least for me it is), when you do that,
         | have you done anything new that few or nobody else has done
         | before?
         | 
         | No, it's just a well worn path which thousands of organizations
         | have done already.
        
       | xxpor wrote:
       | Do architects reinvent the I-beam every time they design a new
       | building? No, of course not.
       | 
       | The reason society works is because you can _reuse abstractions
       | that other people have already invented_. It allows you to scale.
       | Without economies of scale, you end up with Baumol 's cost
       | disease, which is extremely obvious in the US in industries like
       | child and elderly care.
       | 
       | We don't _want_ most software devs to be doing anything because
       | gluing stuff together. If they weren 't, we really screwed up
       | somewhere.
        
         | CyberDildonics wrote:
         | I beams aren't abstractions, they are a well designed standard
         | that can consistently meet certain expectations.
        
           | jacoblambda wrote:
           | I beams are both an individual abstraction and part of the
           | greater abstraction.
           | 
           | Your catalog of beams, bolts, brackets, weld patterns, rebar,
           | piles, and concrete pour standards are all abstractions over
           | extremely difficult subfields of materials engineering and
           | structural engineering.
           | 
           | They exist so that your engineer can focus on building the
           | structure using parts and resources with known, standardised
           | behavior under the conditions the building will be put in.
           | 
           | Of course you'll see engineers break away from these
           | abstractions when they need to for a given structure but
           | those abstractions do exist and are commonly used so that a
           | given structural engineer doesn't also need a PhD in
           | materials engineering and countless other specialized fields.
        
         | dijit wrote:
         | I like this allegory because it puts the complexity into a
         | visual mindset and brings to light an interesting question
         | about the _nature_ of our abstractions.. For example:
         | 
         | Are our abstractions I-beams or Pre-Fabs[0]?
         | 
         | We all know that the rise of pre-fabs is, at its heart, the
         | story of cheap developments all lazily (and hastily) thrown
         | together in arrangements that are of low quality, mid-to-low
         | beauty and do not last for very long.
         | 
         | Skyscrapers of the early 20th century stand today (with
         | I-Beams) and are considered by many to be beautiful,
         | maintainable etc;
         | 
         | People want pre-fabs, since they're cheap, the economy will
         | always be in the pre-fab.
         | 
         | But pre-fabs have a limited shelf-life, and reconstruction is
         | more expensive than spending a little extra up front cost.
         | 
         | [0]: This is the sort of pre-fab I am talking about:
         | https://en.wikipedia.org/wiki/Prefabricated_building#/media/...
        
       | tester756 wrote:
       | If you feel like "modern programming is boring configuration
       | mess"
       | 
       | then ask yourself - what have you done in order to have
       | interesting job, projects, challenges, etc?
       | 
       | I mean, if you decided at some point that $big_salary for
       | throwing JSONs via REST from CRUD app
       | 
       | is what you want to do until you pay your loans (e.g decade),
       | then it's fine, but don't be shocked that you aren't doing
       | bleeding edge R&D at some fancy place.
       | 
       | Like what prevents you from putting effort for year? two? and
       | switching from X to Y?
        
         | mythhouse wrote:
         | > Like what prevents you from putting effort for year? two? and
         | switching from X to Y?
         | 
         | I don't think it only takes 1 yr to switch to something
         | interesting. Any R&D lab wants you have a phd with published
         | papers.
        
           | tester756 wrote:
           | The first step you can do is: actually start working with
           | this on daily basis
           | 
           | Maybe over years you'll gain an expertise to work in
           | research, idk.
        
         | nesarkvechnep wrote:
         | Every project I worked on was JS/Node hell. Then I decided to
         | switch to Elixir/Erlang and now I'm much happier. Of course,
         | there are uninteresting or badly engineered projects but
         | overall it's much better.
        
           | xcambar wrote:
           | There's a true joy in working with some languages. It's like
           | using a great pen or driving a well-made car. You get focus
           | and flow.
        
         | CyberDildonics wrote:
         | _If you feel like "modern programming is boring configuration
         | mess"
         | 
         | then ask yourself - what have you done in order to have
         | interesting job, projects, challenges, etc?_
         | 
         | These two things don't connect to each other at all
        
           | tester756 wrote:
           | How so?
        
       | nijave wrote:
       | This seems to be touching more on the complexity of
       | productionizing a system than cloud. I think you still run into a
       | lot of these same problems getting your code to run somewhere
       | else--especially when the management and operation of the system
       | is split between many people/teams.
        
       | aaroninsf wrote:
       | I don't really understand the problem, or maybe it's more, I
       | don't think this problem exists as an existential one for more
       | than the set of people for whom it's an existential probem.
       | 
       | Programming and software engineering and their subdomains and
       | superdomains are no longer a priesthood or an academic exercise
       | or playground for Levy-style oldskool hackers, or rather, no
       | longer remotely those things exclusively.
       | 
       | Most of what most people who fit in the supercategory do is work.
       | The specifics of the work vary. If they aren't the ones that give
       | you joy, change categories is a good and readily available
       | solution.
       | 
       | If you want to hack on beautiful code, there are 1000x more ways
       | to do so today spanning the purely aesthetic defined as many ways
       | as you like (live coding, avocational language design, exercises
       | in new tricks for old tools like the demoscene and emulator
       | worlds), to the aggressively useful (small tools made by small
       | teams of solo devs upon which empires balance).
       | 
       | You don't need to be a mid-level IC at MassiveCorp unless you
       | can't give up access to the mana-tap of massive scaling. In which
       | case maybe that IS your thing and the complaint is flat.
       | 
       | The joy hasn't left. Maybe it's just harder for the author to
       | find? Or the problem is simply that no matter what you do for
       | work, it's work, "chase your bliss" being of course a lie,
       | because work IS work, and dissatisfaction like water will always
       | find its level.
        
         | adra wrote:
         | It sounds about right. At the end of the day, most developers
         | work to produce features. Features and business domains are far
         | less likely to be exciting than technical problems, but the
         | business domain is way more important to adding value. Both
         | need to be kept in check, but I'm sorry to say, technical
         | achievement will not put food on the table or revenue on the
         | balance sheet. At the end of the day, you almost always need to
         | actually sell what you're doing (in one form or another).
        
       | dongobread wrote:
       | It's very unclear to me why the writer ran everything through GCP
       | and Colab. Having everything on a single environment with
       | near-100% uptime is certainly still possible by renting a VPS,
       | which is usually a much cheaper alternative anyways.
       | 
       | There's also many other alternatives that could be used if memory
       | efficiency is the goal, e.g. polars/data.table instead of pandas,
       | an OLAP database instead of bigquery etc. While I agree that
       | pasting together configs is tedious and annoying, a lot of this
       | type of work is due to developers themselves trying to replicate
       | new trends at $bigco$ instead of optimizing for their own needs.
        
       | rockemsockem wrote:
       | I think this problem is almost entirely self-inflicted (by either
       | a person or an organization, sorry to people in organizations
       | that do this and who recognize the insanity and are powerless to
       | stop it).
       | 
       | BigQuery and Colab are fantastic tools largely because they allow
       | less technical folks to try things out with very little friction
       | and BigQuery scales to ridiculous amounts of data making formerly
       | impossible queries possible. The example fits neither of these as
       | the author is quite apparently very technical and the data is
       | minuscule.
       | 
       | The author could have applied some economics thinking to this and
       | correctly concluded that they could have run this exploration on
       | a laptop using a regular old file and Jupyter (or just normal
       | Python if they want to avoid the IPython infrastructure). Post-
       | exploration they can run their application on a properly specced
       | VM. IDK if BERT requires a GPU these days or if it can run well
       | enough on a CPU, but either way, these resources are easily
       | available on GCP without all the vendor-ops the author talks
       | about.
       | 
       | To cap things off, the author says at the end that "in no
       | previous universe would I be able to try out Stable Diffusion".
       | Stable Diffusion requires 6 GB of GPU RAM and ~10 GB of storage.
       | That was modest 5 years ago for commodity hardware.
       | 
       | I am not a cloud-decrier by any means, I love the cloud, I use it
       | every day, but most of what I use is basic storage (buckets) and
       | VMs. With just a little bit of abstraction it's easy to make
       | something that runs in the cloud run locally just as easily. That
       | also makes it easier to switch clouds if you find a better deal
       | somewhere else.
       | 
       | TL;DR: use the right tools for the job
        
       | mattgreenrocks wrote:
       | One thing I had to learn to value my sanity here was to simply
       | not argue about certain topics, such as software architecture. It
       | was like there was this wall of people who emerge from the
       | shadows anytime I argue for better architecture, because it
       | wasn't directly responsible for Important Enterprise Business
       | Features.
       | 
       | Now I realize there's probably more than one flavor of engineer:
       | 
       | 1. software eng: ships features, prefers to use ready-made
       | abstractions
       | 
       | 2. infrastructure-ish eng: ships things that enable shipping of
       | features, prefers to invent abstractions
       | 
       | The things they value are very different! I suspect HN tends more
       | toward SW engineers (because statistics) with some stuff for
       | infrastructure engineers.
        
         | agumonkey wrote:
         | It's not far from the top-down vs bottom-up too. Having a wide
         | enough infra helps adapting at the upper layer faster and
         | cleaner.
        
           | mattgreenrocks wrote:
           | Very true. So few people talk about this topic is saddens me.
           | I have had success switching mindsets when I get stuck on
           | one.
        
         | nijave wrote:
         | I think in any moderately large business you'll have both.
         | 
         | 1. Is usually implementing business logic for the product 2. Is
         | generally working on things #1 uses to work productively
         | 
         | I'm not sure about the composition on HN, but I see a lot of #2
         | in "DevOps"/SRE roles. Usually these roles are skipped for
         | small startups but at some point they get big enough they need
         | dedicated people to take them on
        
       | jakeinspace wrote:
       | What scares me about ChatGPT is less so that I'll lose my job
       | (though it's possible), but more so that I'll be using language
       | models to work at higher and higher levels of abstraction doing
       | mainly configuration tweaking. Some of the particular pain points
       | expressed in the article should be removed with AI in the loop
       | development, but it's another step away from "real programming",
       | which is what attracted most of us to this field. Yes, creating
       | things is the end goal, but I'm terrified that I won't be able to
       | extract nearly as much joy when my job becomes largely prompting
       | GPTn to swap out frameworks and UI paradigms for me like magic.
        
         | gryf wrote:
         | This.
         | 
         | I already started using ChatGPT to solve problems because I
         | can't be arsed to read through ten vendors worth of
         | documentation. It wrote me a fairly complete and accurate chunk
         | of code the other day to solve a problem.
        
           | agumonkey wrote:
           | I have to admit that having it giving short summaries of
           | framework docs and models felt like drugs in my veins.
        
           | IanCal wrote:
           | I've found it's often like pairing with a junior developer
           | who is familiar with whatever problem you're describing and
           | types insanely fast, and that's without learning too much how
           | best to prompt it. A recent discovery was that you can ask it
           | what problems may exist in its code, then ask it to fix them.
        
             | [deleted]
        
         | rr888 wrote:
         | Its already like this. My first job in the 90s I wrote our own
         | linked list classes, a logging framework and a persistence
         | layer. Now it feels like I write css and yaml all day.
        
           | agilob wrote:
           | Think about that guy who wrote his own operating system as a
           | hobby.
        
             | soulofmischief wrote:
             | RIP Terry Davis <3
             | 
             | https://templeos.org/
        
           | therealdrag0 wrote:
           | You could switch to a job where you're not writing css and
           | yaml?
        
       | [deleted]
        
       | lordgrenville wrote:
       | As some other commenters have said, this is really a self-
       | inflicted problem. The author has chosen to do an EDA task which
       | is very manageable on a laptop via a convoluted stack of cloud
       | services - possibly just to illustrate a point. But even if this
       | all worked smoothly, the fact that it is far removed from
       | "software engineering" has more to do with the fact that it's a
       | data analysis project. If it were about about writing firmware
       | for audio hardware it would look very different.
       | 
       | Nitpick: ! for shell commands is an IPython feature, not Jupyter.
       | It doesn't work with other kernels.
        
       | zubairq wrote:
       | Loved this article! Yes, I think this accurately described 90% of
       | my consulting engagements!
        
       | somrand0 wrote:
       | oh yea.
       | 
       | using a software framework like django for "rapid application
       | development" gives me a feeling closer to writing configuration
       | files rather than actually "programming" (where "programming" is
       | writing hardcore algorithms).
       | 
       | but don't get me wrong, I liked doing that, I got paid to do it.
       | But let's call it for what it is: that python code (django app)
       | was really django framework config.
       | 
       | this is a simlar phenomenon but worse, at least I could look
       | around all of the actual code of the program for which I was
       | writing configuration as code.
       | 
       | then, the thing about hardcore algorithms is that they need to be
       | written once, and then everybody can use them. this is a giant
       | problem. as I think about this, such hardcore algorithms are
       | digital artifacts, so they are subject to the same problems all
       | other digital artifacts (media, videos) are. a problem also known
       | as software piracy. but software has been about composing proven
       | algorithms together since day 1. the problem by this point is
       | socio-economic. not technical.
       | 
       | I see the whole debate around "who will pay for critical
       | infrastructure software" as another instance of "how should
       | artists make money in the digital era".
       | 
       | But this comment (which I'm editing) is already at 0 points.
       | somebody doesn't like what I'm trying to say, but I knew this
       | already.
        
         | agumonkey wrote:
         | it's config until you need an option not in the 'language' and
         | then you have to get real dirty
        
         | einpoklum wrote:
         | > they need to be written once
         | 
         | Well, if you were writing abstract pseudo-code, then maybe. In
         | practice, the same algorithms are often reimplemented multiple
         | times.
         | 
         | > and then everybody can use them
         | 
         | ah, if only that were true... implementations are often not
         | that flexible, nor are programmers that keen on utilizing
         | existing implementations.
         | 
         | > this is a giant problem
         | 
         | Problem? To the extent it's true - it's a boon, not a problem.
         | Image if whenever you made a chair - suddenly everyone could
         | get a chair without taking your own chair or spending any time
         | and resources on chair construction. It's a miracle!
         | 
         | > a problem also known as software piracy.
         | 
         | 1. Piracy is when people on ships with guns rob other ships.
         | Arrgh, matey!
         | 
         | 2. Sharing and copying software or other media is a good thing,
         | not a problem.
         | 
         | PS - I haven't downvoted you. Point taken about django "config-
         | programming".
        
           | somrand0 wrote:
           | well sure, I completely agree that it's indeed a boon. a HUGE
           | boon.
           | 
           | the problem I describe is not a technical one, but a social
           | one. and it's only a problem due to the current way society
           | works. It's only a problem for some people (e.g me); them who
           | are well satisfied by this "status quo" don't see any issue
           | beyond lacking enforcement of IP 'rights' and the need for
           | better DRM, and copy protections, and other things like that.
           | 
           | you're focusing on the technical aspects (plus you seem to be
           | deliberately using the wrong definition of piracy).
           | 
           | I'm talking about the social economic aspects: I'm saying
           | that this boon brought about by digital technology is only
           | benefiting a select few. I tend to think about this 'boon' as
           | potential that we collectively seem to be choosing to forego;
           | I think it's my life's mission to do everything I can to
           | avoid this "foregoing" of the great potential unleashed by
           | digital technology; I feel like I'm swimming against the
           | current most of the time.
        
             | einpoklum wrote:
             | > I'm saying that this boon brought about by digital
             | technology is only benefiting a select few.
             | 
             | If you mean how most people in the world are under stricter
             | social control with the advent of technology than they were
             | in primitive tribal society (or maybe even middle-age
             | agrarian society), then maybe.
             | 
             | But if you mean the benefit from being able to make these
             | copies - then definitely disagree: People get to have tons
             | of free (libre & gratis) software, and lots of free
             | (gratis) cultural products like images, audio, video and
             | text. Are you bemoaning what we do with this glut, and
             | perhaps the problem of over-abundance, shallowness of
             | cultural taste etc.? Otherwise I'm still missing your
             | point.
             | 
             | About piracy: I'm using the right definition, it's the
             | copyright crooks who are using the wrong one :-P
        
         | slim wrote:
         | I think you nailed it with configuration vs programming. modern
         | software development is configuration. notice that
         | "development" is not programming either. so this trend has been
         | going for long time
        
       | midiguy wrote:
       | Would you rather do some library gluing, or reinvent a thousand
       | wheels with every project? The latter is neat the first few
       | times. Whatever your preference, your value as an engineer is
       | much higher if you can glue. Imagine if a carpentry workshop
       | gives a carpenter a fully-fledged set of industrial power tools,
       | but the carpenter insists she can recreate all the other tools
       | with just her whittling knife because it's in the 'true spirit of
       | carpentry'.
        
         | nijave wrote:
         | Ideally a healthy blend of both. Wheels where it relates to
         | your companies core competences or there's a gap in the market.
         | Glue for everything else (you don't need to invent an
         | infrastructure provisioning solution unless you're and
         | infrastructure provisioning companies--there's plenty of mature
         | solutions). Other places like application libraries--it might
         | make sense.
        
         | deathanatos wrote:
         | I'd rather re-invent _some_ wheels. The problem with VendorOps
         | as I see it is that quite often the vendored  "solutions"
         | aren't solutions: _they do not meet the requirements!_ Yet ...
         | they sort of get like 20% of the way there, so they get adopted
         | nonetheless, and the devs toil away on trying to get glue code
         | to push it the remaining 80% of the way.
         | 
         | But if we had a system _that we owned_ , then it could be
         | adjusted to fit the requirements, elegantly. But we don't, so
         | we can't.
         | 
         | The other problem is the "Ops" part: vendor owned systems are
         | opaque AF, and when something goes wrong, impossible to debug.
         | Then you become a support ticket monkey, praying you can
         | convince the powers that be on the other end that a. it is
         | truly _their_ stuff that 's broken, not yours and b. we pay for
         | it, so yes, you should support it.
         | 
         | When a. or b. fails, then you end up writing yet more glue code
         | to try to work around the bugs and outages that your vendor
         | just doesn't give a shit about.
        
         | hooverd wrote:
         | Wheels aren't licensed rather than owned and charged per
         | revolution... yet.
        
         | a1369209993 wrote:
         | > Would you rather do some library gluing, or reinvent a
         | thousand wheels with every project?
         | 
         | Wheels. Absolutely wheels. Library gluing is what gets us
         | garbage like Electron that needs to die in fire.
         | 
         | Imagine if a carpentry workshop gives a carpenter a bunch of
         | IKEA kits and tries to conflate wanting to make furniture that
         | isn't cost-cut prefabricated crap with insisting she can
         | recreate all the other tools with just her whittling knife
         | because it's in the 'true spirit of carpentry'. (Honestly, if
         | anything, comparing Electron to IKEA is a insult to IKEA -
         | there _are_ cases where using IKEA is actually reasonable, they
         | just aren 't actually _carpentry_.)
         | 
         | (You use libraries when it makes sense to use libraries, just
         | like you use 2x4s when it makes sense to use 2x4s. Sometimes
         | you can make the whole thing out of 2x4s, just like you can
         | make a whole program out of:                 tr -cs A-Za-z '\n'
         | | tr A-Z a-z |         sort | uniq -c | sort -rn | sed ${1}q
         | 
         | but if you're just gluing (screwing?) 2x4s together, you're
         | going to get bad results when you need something that's _not_ a
         | 2x4.)
        
       | Havoc wrote:
       | I suspect this effect is a big part of why Rust keeps winning the
       | most loved language polls - because it has some of that old
       | school programming vibe that got lost somewhere along the way
        
         | adra wrote:
         | Just give it enough time before incentives drive a language
         | with large developer adoption to encourage adoption and wide-
         | spread appeal vs. a niche language that has little value
         | proposition to a company beyond an excuse to keep some key
         | developers that are bored happy doing their side-projects.
        
       | gptadmirer wrote:
       | I am a fullstack web dev, for about 8 years now.
       | 
       | These days I am learning Arduino and thinking of learning AVR
       | programming.
       | 
       | Is there a career path for this kind of intersection?
        
       | Dave_Rosenthal wrote:
       | Like many other commenters (of a certain age?), I too have this
       | unsatisfied feeling about a particular kind of modern software
       | development. The kind where you never really dig down and design
       | anything, you just plumb a bunch of stuff together with best
       | practices you find on stack overflow.
       | 
       | Many commenters are attributing this problem to the modern high-
       | level tools we now have access to. But I don't think this is the
       | crux of the issue. You can face the same issue (you're plumbing
       | things, not a designing a system) whether you are working with
       | low level or high level components.
       | 
       | Heck, you could be working on a hardware circuit, but if the only
       | thing you had to do was make sure the right wires, resistors,
       | capacitors, etc. were in place between the chips you're still
       | just doing plumbing work.
       | 
       | To me, one of the most satisfying things about programming is
       | when you can build something great by starting with a concept for
       | your lower-level primitives, your tools, and then work up through
       | the higher levels of design, ultimately having _the pieces you
       | designed_ fit together to form something useful to the world.
       | 
       | This building-things-to-build-things idea is even satisfying in
       | other areas. Just gluing a bunch of wood together to make a piece
       | of furniture is fine, but building your own jigs and tools to be
       | able to do the kind of cuts that enable the end design you
       | envision is way more satisfying, and opens up the design space
       | considerably.
       | 
       | If I had to lament anything (and perhaps this is what's most in
       | alignment with the post) it's that most of the high-level
       | primitives you touch these days tend to be sprawling, buggy, not
       | focused, and just generally not of high quality or performance.
       | It's possible for high-level primitives to avoid these pitfalls
       | (e.g. Sqlite, the canonical example) but it does tend to be the
       | exception.
       | 
       | I think there is still plenty of interesting and satisfying
       | software engineering work to be done when starting with high-
       | level libraries and tools. You just need to think about how to
       | use their properties and guarantees (along with maybe some stuff
       | you build yourself!) to enable the design of _something more_
       | than just the (naively-plumbed) sum of the parts.
        
       | jjav wrote:
       | Good article, great points. The Knuth quote on lack of creativity
       | is right on the money. It's why I've been drifting away from
       | hands-on programming even though I'd rather not. I still love
       | programming as much as I ever did as a teenager. Late at night
       | when everyone is asleep and I can work on my own code, it's as
       | much joy as it ever was. What's different is that at $DAYJOB back
       | in the 90s and 00s it used to be just as fun all day.
       | 
       | Nowadays when it's just gluing frameworks together and
       | configuring AWS services... it doesn't really feel any different
       | intellectually than cleaning toilets. Sure the pay is better but
       | as a creative challenge they're pretty much on par.
        
         | mythhouse wrote:
         | > it doesn't really feel any different intellectually than
         | cleaning toilets
         | 
         | There is a big difference. one is cleaning shit other more shit
         | creating more shit :)
        
         | thr0wawayf00 wrote:
         | > Nowadays when it's just gluing frameworks together and
         | configuring AWS services... it doesn't really feel any
         | different intellectually than cleaning toilets.
         | 
         | Comparing your six figure white collar job to basic janitorial
         | work is pretty damn cringe and pretty objectively untrue.
        
           | jacoblambda wrote:
           | You're right. Cleaning toilets is at least a laborious task.
           | 
           | Your standard CRUD applications and web services are largely
           | just a rigamarole of reciting the right incantation and duct
           | taping bits together. It's immensely non-stimulating work
           | when done properly.
           | 
           | This isn't an insult by any means. It's a testament to the
           | triumphs of decades of engineering efforts to turn the
           | process of orchestrating extremely complex electronic systems
           | spanning continents into a largely trivial task for most
           | projects.
        
           | pcthrowaway wrote:
           | OK, what if we say plumbing then? Same idea, and the pay is
           | within an order of magnitude at the median.
        
             | thr0wawayf00 wrote:
             | Personally, I think it's pretty hard to make that kind of
             | comparison accurately without having professional
             | experience in both fields. One could also argue that it's
             | as intellectually stimulating as being doctor, but how do
             | we actually know that?
             | 
             | I've cleaned toilets professionally, and I'll say once and
             | for all: writing software, no matter how monotonous or
             | boring, is nothing like cleaning toilets. And I'd be
             | willing to bet that someone trying to make such comparisons
             | has ever had to do that kind of work.
        
       ___________________________________________________________________
       (page generated 2022-12-06 23:00 UTC)