![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
- Programmers have more logical minds than other people.
When working with computers, I find a lot of discrete math concepts to be useful. You gotta know your ANDs and ORs inside-out. But what does a "logical mind" even look like? Personally, my life is motivated by bicycling, puns, relentless curiosity, snuggling, and snacks. Every one of those motivations is irrational. My thought process is a fishing net wrapped around those things. How logical can it be, really?
- Programming is a single discipline.
- There is a meaningful concept behind the term "full-stack developer".

Nah; it's a grab-bag of frameworks, cloud services, browser standards, platform variations, and so on. It's possible to find two self-identified "full-stack" developers whose working knowledge overlap is limited to basic HTML and lightweight browser debugging.
For example: A "full-stack" developer who:
Uses AWS to host a database application written in F# on the .NET platform using Fable to transpile the F# to javascript, with an Elmish messaging model and a front end laid out using standard React components, and data supplied by GraphQL. (This developer does not touch a single line of Javscript except perhaps when debugging.)
And a "full-stack" developer who:
Uses a virtualized linux hosting provider to run an interactive, high-volume visual data browsing tool, written in Python on the back end using the Django ORM to store data, and using typescript to build the front-end code using custom UI components styled with custom CSS, and an SVG-and-canvas-based tile rendering pipeline to keep the browsing experience fluid.
(I have done both, and several other variants that also have virtually no overlap among them, including obsolete ones like using Perl and cgi-bin to render raw HTML with all interaction through forms, and using Flash to construct a "serverless" interactive game. Oh, and all those Java plugins; who can forget those?)
- Programmers are better at picking up disparate knowledge from other domains than other professionals.
- All programming languages are the same because Turing something handwave.
- 10× programmers exist.
Not as generalists, definitely. Though I will say this: Programmers who have massive knowledge of a very specific domain, and the ability to explain it, do exist. When surrounded by a highly functional team, those people can reduce the number of mistakes by 10x. That benefit is very real.
Drop them into an unfamiliar context, or take away the team, and that benefit goes away.
- It’s easy to make a good UX as long as the core problem domain code is sound.
Yeah, and if you build a really great engine, then all you need to do is bolt a chair to it, and you've got a really great car!
- Hand-written assembly is better than compiled code.
I think anyone who has ever tried to make a really goood French Cruller donut at home will undersand how this could be wrong.
- Social problems have technical solutions.
- Social problems are of overriding importance in programming.
These are interesting ones. I find more truth in the statement that "technical solutions tend to create social problems", or at least invent new kinds of dysfunction. But I think there is also a strange trend of considering all software development to be a political act.
This probably comes from the assumption that all software development is meant to interconnect with an anonymous end-user, or at least have an audience, and through that it shapes the flow of social influence or power, and is therefore tangled in politics -- social, sexual, legal, et cetera. But that's a reductive argument, because if that makes all programming political, then it makes everything else political for the same reasons.
People in this new century generally don't remember it - or weren't alive for it - but there was a span of time when computer programming was something that usually happened on non-networked devices, as people manipulated data for their own personal ends. I'm not saying that made it apolitical; I'm saying that it made the end user and the audience a far smaller part of the process. Companies wrote code to handle their own internal procedures. Individuals wrote code to amuse themselves with the blinky lights, and what they created often never left the device they wrote it with. I grew up during that time and was surrounded by code that was parochial. It had nothing to say about society or politics, except perhaps that I lived in an area with enough affluence to give me and my friends the spare time to poke at computers and learn a trade.
On the other hand, some code - like the code that chooses what to drop into a social networking "feed" - is astonishingly political.
no subject
Date: 2023-02-03 12:59 am (UTC)I believe you are right here, except for one item: - 10× programmers exist.
Since I did calculate performance, decades ago, when I was a manager, I know that performances may vary about 1000 times. Either some are 0.001x programmers, or some are 1000x programmers, or there's some logarithmic average, and some are 0.03x and others are 30x. Otherwise there would be no reason in having long exhausting interviews, if everybody's almost the same.
no subject
Date: 2023-02-03 01:35 am (UTC)I've also found in my interviews that you can separate out the people who are going to be useful almost immediately and learn quickly, from the people who are going to struggle for a very long time to reach a reasonable degree of contribution, just by throwing a few small coding tests their way and letting them interactively work out the solutions.
But my point is, a lot of the advantage beyond that is situational. Take a developer who is massively productive writing hand-tuned driver code for embedded systems, and drop them into a team that's building a machine-learning assisted visual effects pipeline, and that 10x drops down to 0.5x for quite a while. They may learn quickly and adapt well because they're good programmers overall, but that "10x" label is no longer accurate.
It's also quite possible to hire a programmer who can crank out huge amounts of code that only they can understand, and/or that they are unwilling or unable to document, and thereby reduce the overall effectiveness of everyone around them, even as they forge ahead. I've dealt with that type before, and they need a good team around them to interpret, document, enforce standards, and generally push back, or they end up coding their employer into a corner that's very expensive to escape...
no subject
Date: 2023-02-03 01:41 am (UTC)I only meant my experience with growing a system where Nx means the speed of code contribution. And it was in the USSR, and I had a full freedom of getting rid of the people who don't contribute. So we wound up with a pretty advanced team building a system that very rarely had any troubles with the code. This was before anybody heard of unit tests. My opinion was, and mostly still is, that this was caused by a bunch of female engineers, who might have been just a little bit slower - but they produced an impeccable code. Quality.
no subject
Date: 2023-02-05 08:34 pm (UTC)Why would that be strange? All communication and creation are cultural acts, and culture shapes politics. I know, it's a bit of a zoom way out from programing.
I got a bit of understanding from O'Neal's Weapons of Math Destruction, mostly from the ham-fisted programming errors put out as actual products with inadequate testing. When someone says, "Oh, if it works for my buddies and I, it should work for the world," these people are acting politically, either consciously or not.
no subject
Date: 2023-02-06 12:20 am (UTC)no subject
Date: 2023-02-06 01:08 am (UTC)When a company releases a product, they create something that reflects their ideas as to what that product will do when sold. So, yes, what that product does is absolutely political. Take your example of "Social problems have technical solutions." Wow. I disagree so strongly that it hurts. Social "problems" don't exist; what we have are social predicaments, and the only tools to leaven them are social. I've seen too many "technical" "fixes" for social "problems" that are best described as developers projecting absolute confusion as to what "social" really means.
Beyond that, does a gadget rely on surveillance? Advertising for revenue? For those software bits and bobs that operate cameras or sort pics, how accurately do they reflect reality?
When they don't reflect reality well, or when they lock a customer in to an operational paradigm the customer finds repugnant, yes, the device can well be considered political. Nothing like 2nd Amend. or our weird non-empire Empire; but political nonetheless.
no subject
Date: 2023-02-06 02:04 am (UTC)But there are things that apply. For example, a social problem like inter-group warfare can be greatly reduced by the technology of better communications systems.
With your "works on my machine" example, you seem to be making the case that a software team's inability to see all ends, or the deadline pressure that causes them to miss bugs, belongs in the same category as a software design decision, like surveilling a user over the internet through the camera on their phone. That waters down the meaning of "political" a bit too much for me.
Douglas Adams begins his wonderful book "Last Chance To See" by stating that the first ape to use a twig to extract insects from a log was using "twig technology", and that everything since has been advancements in "twig technology". I love the metaphor and Adams was a very amusing writer. But, technology is a thing. When a person uses a device and they personally have almost no understanding of how it works, they are using technology.
no subject
Date: 2023-02-06 07:58 pm (UTC)Here, I would argue that you example actually presents a case for the same tech increasing the severity of tensions. Consider what happens, for example, when someone at the helm of a tech company or in government and with access to that helm decides to up the ante on propaganda. Better communications tech, better message propagation.
…you seem to be making the case that a software team's inability to see all ends, or the deadline pressure that causes them to miss bugs, belongs in the same category as a software design decision….
O'Neal's book has some pretty grievous examples of missed "bugs," so grievous, in my opinion, that calling them merely "bugs" hardly removes the insult they provoked. That's where I was going with calling these situations "political" as in a situation where one party is hardly being politic.
While I do like your twig tech example, I still take issue with lumping all tech, from twigs on up, as a group. Each tool is developed for a task. Even two tools for the same task can approach the task in such different ways that to lump them both as "tech" raises interesting questions, and (hopefully) forces people to recognize other approaches exist.
When a person uses a device and they personally have almost no understanding of how it works…
…the onus of responsibility lies on the developer.
Sadly, US laws have largely missed that responsibility. In the UK, it's called the Duty of Care; in the EU, the laws lean more toward a phrase that for the moment escapes me, but it can be summarized as "if it was reasonable for you to foresee the harms from the practice, you should have done so." Our US ticky-box compliance culture has given a pass to the harms currently underway.
no subject
Date: 2023-02-06 08:10 pm (UTC)