One of my favorite quotes:
“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies.”
I think about this a lot because it’s true of any complex system or argument, not just software.
The biggest misunderstanding I hear year-over-year is homeschoolers are "not exposed to the real world". Isolation exists for some, but my extensive interaction with homeschoolers is they are immersed in healthy communities, hand-picked by parents to keep away problem children. Who would plant a flower next to a sick or hostile one? Parents of healthy children should give 0 s*ts of societal/political pressure against this concept. Your kids are a bad influence for whatever reason? Not my problem to fix.
Homeschoolers are some of the most resilient and well-behaved people I know.
Modern academic life is only well suited to a small percent of the population. Those children who are truly happy and excelling in that setting.
So much time and resources, to produce what exactly? A piece of paper and fancy picture to stare at? Forced mass education was a good idea for developing societies, but personalized education has been possible for at least a decade now, at a fraction of the cost.
And to add insult to injury, there's an increasing torrent of deranged ideologies teachers and professors share with students.
* It's fascinating to watch the points on my comment go up and down a ton. Very controversial issue. I believe it highlights pressure from social and political structures in society, and/or personal experiences. They vary so much.
I remember reading the 6th paragraph as a teenager, it’s still good: “First of all: what is work? Work is of two kinds: first, altering the position of matter at or near the earth’s surface relatively to other such matter; second, telling other people to do so. The first kind is unpleasant and ill paid; the second is pleasant and highly paid. The second kind is capable of indefinite extension: there are not only those who give orders but those who give advice as to what orders should be given. Usually two opposite kinds of advice are given simultaneously by two different bodies of men; this is called politics. The skill required for this kind of work is not knowledge of the subjects as to which advice is given, but knowledge of the art of persuasive speaking and writing, i.e. of advertising.”
> 5. Being visible. If you do great work but nobody knows about it, did it really happen? Share your wins, present at all-hands, write those design docs that everyone will reference later.
And don't forget that when managers or seniors are involved, there's magic alchemy that comes from spreading the credit around. Suppose Bob works under Alice and Bob, mostly solely, accomplishes something significant. If Alice presents and takes credit for it, Alice might receive 1 credit point. If she presents it as Bob's work and never mentions herself, Bob will get the 1 credit point. But Alice will pick up some credit just for presenting (let's guess 0.5 unit), Bob will get the 1 point, and because Alice now manages Bob, whose stature just went up, she'll get an additional (let's guess) 0.25 point. So you've got 1.75 units of credit instead! Never be shy to give credit to others. You will benefit too!
When Jeff Hodges gave a presentation of his "Notes on Distributed Systems for Youngbloods"[1] at Lookout Mobile Security back in like 2014 or 2015, he did this really interesting aside at the end that changed my perception of my job, and it was basically this. You don't get to avoid "politics" in software, because building is collaborative, and all collaboration is political. You'll only hurt yourself by avoiding leveling up in soft skills.
No matter how correct or elegant your code is or how good your idea is, if you haven't built the relationships or put consideration into the broader social dynamic, you're much less likely to succeed.
Why is programming fun? What delights may its practitioner expect as his reward?
First is the sheer joy of making things. As the child delights in his mud pie, so the adult enjoys building things, especially things of his own design. I think this delight must be an image of God's delight in making things, a delight shown in the distinctness and newness of each leaf and each snowflake.
Second is the pleasure of making things that are useful to other people. Deep within, we want others to use our work and to find it helpful. In this respect the programming system is not essentially different from the child's first clay pencil holder "for Daddy's office."
Third is the fascination of fashioning complex puzzle-like objects of interlocking moving parts and watching them work in subtle cycles, playing out the consequences of principles built in from the beginning. The programmed computer has all the fascination of the pinball machine or the jukebox mechanism, carried to the ultimate.
Fourth is the joy of always learning, which springs from the nonrepeating nature of the task. In one way or another the problem is ever new, and its solver learns something: sometimes practical, sometimes theoretical, and sometimes both.
Finally, there is the delight of working in such a tractable medium. The programmer, like the poet, works only slightly removed from pure thought-stuff. He builds his castles in the air, from air, creating by the exertion of the imagination. Few media of creation are so flexible, so easy to polish and rework, so readily capable of realizing grand conceptual structures....
Yet the program construct, unlike the poet's words, is real in the sense that it moves and works, producing visible outputs separate from the construct itself. It prints results, draws pictures, produces sounds, moves arms. The magic of myth and legend has come true in our time. One types the correct incantation on a keyboard, and a display screen comes to life, showing things that never were nor could be.
Programming then is fun because it gratifies creative longings built deep within us and delights sensibilities we have in common with all men.
I've learnt that just about everything in life boils down to feelings, which is interesting. No matter how rational a person or people claim to be, usually it comes down to feelings... Life choices? Business decisions? Who gets promoted? It's all vibes and feelings. People will deliberate and argue over facts but ultimately there will be some "weighting" factor which is feelings and will make or break the outcome. You can have a perfectly argued decision that fails some vibe check and is hence discarded. Or a terrible argument that plays to some emotional point so is accepted. It's all feelings. Rare is the opposite.
For instance, on the planet Earth, man had always assumed that he was more intelligent than dolphins because he had achieved so much -- the wheel, New York, wars and so on -- whilst all the dolphins had ever done was muck about in the water having a good time.
But conversely, the dolphins had always believed that they were far more intelligent than man -- for precisely the same reasons.
- The Hitchhiker’s Guide to the Galaxy
I really like the Poisson Distribution. A very interesting question I've come across once is:
A given event happens at a rate of every 10 minutes on average. We can see that:
- The expected length of the interval between events is 10 minutes.
- At a random moment in time the expected wait until the next event is 10 minutes.
- At the same moment, the expected time passed since the last event is also 10 minutes.
But then we would expect the interval between two consecutive events to be 10+10 = 20 minutes long. But we know intervals are 10 on average. What happened here?
The key is that by picking a random moment in time, you're more likely to fall into a bigger intervals. By sampling a random point in time the average interval you fall into really is 20 minutes long, but by sampling a random interval it is 10.
Apparently this is called the Waiting Time Paradox.
I think about this a lot because it’s true of any complex system or argument, not just software.