I mean, think of all the mediocre, industrial-grade food you've eaten over the years. School lunches, maybe. Low-grade franchise food. Whatever's in the vending machine. How many people involved in making that are focused on the experience of the person eating the food? As opposed to maximizing revenue, or just doing whatever the manager says, keeping their head down, and getting out at quitting time?
Or let's think of all the food we've eaten that was made to please the cook, not the eater. A friend has an aunt that every year sends a giant box of absolutely terrible Christmas cookies. They're like iced cardboard. The important thing to the aunt is feeling like a big giver, not the experience of the eater. Or on the other end, consider fancy chefs who make tell-me-I'm-clever food, where the presentation is dramatic, but the actual taste is not so great.
Every time I cook for others, I see it as an opportunity to really see the person, to find the best intersection between my skills versus their desires and needs. And it's the same for software.
The goal of cooking meals is to have a meal at the end. Because people need to eat. The food is the solution to the problem you have.
People don't consume software, slurping up lines of code like ramen. Having a steaming bowl of software is not the end goal. The end goal is to solve some _other_ problem which may or may not, once you dig into it, require writing software, and if it does then still: more software doesn't mean more food.
Most of us get paid to write software other people have requested in order to solve their problems. Every problem software solves can be solved by a sea of pencil pushers or factory line workers or human calculators or office clerks with filing cabinets or telephone switchboard operators or typists. The world used to run that way.
It no longer does because it is extremely cheap to program a computer to do repetitive actions. Compared to previous real-estate and labor-pool costs, paying even a thousand programmers to automate work done by people is incredibly inexpensive.
The problem is already solved. Your job is to translate the solution into a well-specified, easy to manipulate series of steps for a computer to execute that can be operated in production as cheaply as possible. You are literally the last step in the race to the bottom. You are literally payed to solve the problems of translating flexible human activities into code. That's the problem you are solving.
If someone asks you to program something that they don't already know how to do, then you are solving three problems - what to do, how to do it, and whether or not it is cheaper to do in software, which it ALMOST ALWAYS IS. You should be being paid three salaries - one as a business executive, one as a business analyst, and one as a software engineer.
The people pushing you to "solve problems, not code," are people pushing you to do more work in one job role to keep them from paying three people for those jobs. As a software engineer, you should be able to assume by the time something hits your task queue that others have decided that it will be cheaper to use software to solve the problem, they were competent in that assessment, and you can start executing.
As a consultant, I frequently take on all those roles for a client. But they pay me as a consultant to do those three roles. Remember that as an employee, in an extremely in-demand field, with specialized expertise compared to the rest of the work pool, you are a sole proprietorship trading time for resources. If that trade is lopsided, you need to push back and negotiate higher pay and a promotion. Don't give away work responsibilities for free because of culture hero points.
OK then, I think the confusion is that your experience (and definition) of software development doesn't align with mine.
> You should be being paid three salaries - one as a business executive, one as a business analyst, and one as a software engineer. ... Don't give away work responsibilities for free because of culture hero points.
I don't know what culture hero points are. Anyway, while I agree those are three different roles, I don't think because the "BA" role exists the "Soft Dev" role should just ignore req gathering and demand a fully completely spec that they then in no way question: that feels like waterfall from the 2000s. In the same way I think that a BA should understand how software works to a point and use that knowledge to direct their design, a software dev should understand the problem and design and contribute to that solution. The roles are not rigid black and white barriers where you throw things over the wall to the next person, they are just places where you concentrate.
I know what you mean, but this is the wrongest thing I've seen in quite a while!
Because it ignores performance.
Try implementing a video game with human clerks.
Pinball is certainly a precursor to video games; there's other low-impact games of manual dexterity like ring toss/bocce/..., darts/target shooting. Choose your own adventure books/pencil and paper role-playing/wargames obviously predate computer gaming -- the computer just runs a timer maybe and acts as the gamemaster.
People have been playing various forms of puzzle solitaire with cards for years; Bejewelled or whatever could be done with a custom deck. Minesweeper is not different in kind from the old logic game Mastermind. Even something like Tetris seems new, but I think is similar fundamentally to a tabletop game like Boggle: randomized input + a timer to find solutions -- the geometrical nature of Tetris is kinda just an implementation detail.
But I would venture that the number of problems that are only quantitatively different -- i.e., faster -- because of computers utterly dwarfs the number that are qualitatively different, or even impossible without them.
"Reality is the only place you can get a decent meal."
Video games are simulators of things in real life that are taken to extremes because death in the real world is permanent. They do impossible things - like fight aliens - but you can definitely fight using weapons (even airsoft or nerfed counts) in contrived situations in the real world. Imagine a cast of actors and you fight them with an airsoft rifle. No computer needed.
The goal of making applications is to have a piece of software at the end. That piece of software is the solution to the problem you have.
Actually, in that very sentence of yours you explicitly repeated what I already wrote
what even is gaming
I can think of many classes of artists, but cannot put a blank statement for _all_ of them.
It may also be joked that some politicians aren't solving actual problems (but creating new ones) in their day job.
By creating problems, they solve a problem of a lack of suitable problems. Thus creating the much needed liquidity in the free market of problems.
It would be more accurate to say some politicians solve problems for some time; after which their solution becomes someone else's problem.
Literally you can google "AI solves world peace" or "AI solves COVID-19" and you'll hit an article.
We also call ourselves ninjas when most of us are just building hugely complex infrastructure behind what is ultimately just a CRUD website.
Ultimately, the end result is we're just building interactive documents. "Interactive document maker" or "Dynamic form writer" is a more humble term than "Problem solver" or "Coding Ninja" because that's literally all we're doing.
And of course software development is about solving problems. And of course it‘s not just about where to place data.
But I think it is mostly just American programmers. Or maybe just big city programmers. I've had the opportunity to work with people in Spain, The UK, and Prague, others remotely as well, but I haven't seen the level of ego in those guys as I have seen in Americans.
It's part of the reason I loathe the idea of hiring developers from America. EVERYOTHER industry is perfectly fine with criticizing or reanalyzing the work of others either underneath their authority or about their competitors. I'm sure even some of these programmers have even said "OMG this caffe macchiato is crap. I'm never drinking from this place again." But nope, don't criticize programmers or ask them to redo work. It's just so rude.
But it is probably the fact that companies like Google literally put slides and children's toys in their offices for their apparently adult programmers to enjoy. An artifact of programmer scarcity I'd imagine.
I myself have had my cancer personally cured by AI and machine learning, but does the electrician who provided power to the computer get any credit? No, and that is a huge discrimination problem.