I do like thinking of myself as a wizard, though.
I do like thinking of myself as a wizard, though.
We get commissioned to build something that does X. Then we design and build it. With experience we develop our own tools / practices and a familiarity with our materials. Experienced masters might experiment and develop completely novel things or masterworks. Sometimes many of us will be commissioned together to build something really big or challenging.
How many of you have girlfriends who are genuinely interested in your craft and regularly talk with you about it ? Say, once per week. But if you're a photographer, that's instantly understandable to anyone. Anyone can chime in.
This reminds me of the time when Charlie Chaplin said to his friend Albert Einstein: "People like me because everyone understands me. People like you because no one understands you."
Another had an MIS degree. She loved my enthusiasm, but didn’t care much about the content.
Another was a photographer with a tremendous amount of curiosity about everything. She listened raptly for hours at a time to every word I said about every low-level or mathy thing. She took it all in and asked great questions. Then she learned programming and became a software project manager.
I believe the biggest factor in the difference in interest was the “cares about people” vs “cares about phenomena” spectrum.
In general, though, I would never even bring up the topic with friends or girlfriends.
And compilers are fascinating - you are, essentially, formalizing the act of translating between languages. Something anybody who speaks more than one language can understand.
You probably can't translate everything you do into a great story, but the basics of your field should be straightforward.
It helps me improve my communication and teaching skills. It's fun, because it highlights the parts I don't clearly understand as well. She cares about it because it's so fundamentally different from anything she does, it's an entirely different world. (Vice versa, too. She's given me beautiful explanations on color theory, for example)
Yes, it requires work, from both sides. But for me personally - if your partner doesn't care enough to ask (or you don't care enough to explain), why have a relationship in the first place?
(Sidebar: s/girlfriend/partner/g, please.)
IT is intangible.
You can touch a server and a network cable, but their work is utterly mysterious and unintuitive compared to a domestic water pipe.
Which is why IT seems like magic, but plumbing, carpentry, and car maintenance don't.
I've found that my place is within a team of 5<x<20 - it's large enough that I can work on "meta" stuff like workflow improvements and refactoring existing functionality to make it generically applicable where appropriate, but small enough that my contributions are not lost in the noise and I can see the impact I'm having on the team's overall velocity.
If all I were doing every day was implementing yet another CRUD form, then I would feel the same way you've described.
Also software is a huge field and where u work in it probably has an effect. I never do internety stuff for example, I make computer games.
Given how political certain projects have become, i dunno...
The tools are different but the ideas are the same.
For example, soon after I got my degree I was making browser based games, and the artist I was working with was really impressed with the particle effect fireworks I’d added to the highscores table out of boredom and was expecting to be told to remove.
And, on the other hand, a real time perlin noise warp tunnel I added to a later game was described as an embarrassing glitch that the boss thought looked like a bug rather than a deliberate effect. (And, unlike the fireworks, had actually been a requested feature).
The feedback was all negative. The boss and the designers basically said, "Just make it blue."
A couple episodes like that help make you sufficiently jaded and cynical, but also teach you pay attention to the requirements and not to go overboard.
1: https://www.cs.utah.edu/~shirley/papers/sunsky/sunsky.pdf
This doesn't address your first paragraph, but I wanted to comment on this.
I identify as a hacker. The terms "wizard", "incantation", etc are fairly ingrained in our culture. But if I do something and someone refers to it as "magic", it actually makes me uncomfortable; it means that they don't understand what I did or how I did it, and rather than trying to understand it, they dismiss it as something magical. This might sometimes be because they have better things to do at that moment than consider what I did---which is fine. But comparing it as magic still rubs me the wrong way. I don't do magic: everything I do is explainable, and I can explain it to you if you ask.
I used to practice magic when I was much younger---I was an illusionist for a couple years. I was pretty good at it. I did street magic, mentalism, and various other things that seemed impossible or even supernatural/metaphysical. Magic. I still do some tricks I remember for my kids. But whenever they think that it's real---whenever _anyone_ thinks that it might be real---I make sure that they understand that it is an illusion. A trick. A hack, if you will. With my kids, I show them how it's done. And they still love it.
The article shows a regular expression and calls it a "magical incantation". It looks opaque, but it can be understood. The language can be learned. You can format it in a sane manner and dissect it. (Displaying a regex that complicated on one line is a disservice to others, with the intent of making it look opaque. It's like removing all whitespace and newlines from your code or writing complicated one-liners and saying "look, it's magic".) It isn't a magical incantation.
It occurs to me that the first steps I take in most new-to-me established projects are basically magic - I'm looking for specific shell commands that the other dev(s) use to perform certain actions: build, run, test, deploy, etc. What's more, there are often undocumented environment dependencies - env vars that need to be set, certain executables that must be installed on the dev's system and in the path, etc.
> It looks opaque, but it can be understood.
I don't think "magic" in this sense means "cannot be understood" - only that it's incomprehensible at some point, and it's performed without understanding to achieve the desired result.
I fully agree with this. In fact, I've reified it into a pattern I use to learn new things: Copy, Paste, Break, Fix. Start with copying and pasting, to make sure I know what happens ("My environment is broken! Their code is broken! I've found an ancient tutorial and the example is broken!") then, once I know it's good, break it somehow, and fix it. Then I make changes to the example, fix what breaks there, and then iterate until I've gotten a good end result.
When an engineer makes something, they are making a _physical_ object by essentially designing and putting _physical_ parts together. Obviously, there's a LOT of math, simulations and design principles that they do as well, but the layman doesn't need to know that - they just see someone who creates parts to build bigger things. A doctor uses his tools and knowledge to _physically_ manipulate the body and fixes physical problems in the body. No layman will ever perform a heart transplant, but they can understand the concept of taking another heart, moving it and connecting the blood vessels and nerve. What does a programmer do? We put together a line of text that somehow represent electricity that is somehow filtered through microscopic parts, resulting in a machine capable of emulating human speech? What?
And now we're getting into quantum computing and cryptocurrency - things that require a massive wealth of knowledge across many fields to fully grasp, and also neural networks and machine learning - things that programmers understand the intended behavior of, but is impossible to perfectly understand their oftentimes random-seeming behavior. It's not a stretch to say that we're reaching a point in time where technology has essentially become like magic.
There is a large difference between competence and ignorance. They're qualitatively different, and different in each field.
e.g. programmers do magic things like read the error messages on the screen. Non-programmers not only don't do that, they can't comprehend why it's necessary. (Without exaggerating too much)
The same applies for mechanics, carpenters, etc. I've seen good people work, and they do things that I just don't get. I'm not sure any amount of training will result in the same intuitive understanding.
It's why I went into programming, and not anything else...
More than once it has crossed my mind that it would be worthwhile to build custom error message dialogs that can't be closed for at least 30 seconds (maybe with a secret override) for some areas of our products. The number of times I've been on a support screenshare with customers where they try to connect to some external service, and it fails, and they instantly dismiss the prompt that would tell them exactly why it failed, if they would just read it, is maddening. At least that kind of a built-in delay would give me time to fire up the snipping tool and grab a screenshot from my end...
Enterprise Windows software is so much fun.
I wrote code for 8 years before encountering another programmer. During that time, I could barely believe that more than a handful of people in the world could possibly be navigating this rabbit hole effectively. It’s too complex and abstract - how would two people even communicate about it?
Turns out I was wrong about the first part, but a little too right about the second part. Even mathematicians find more agreement about what is true than programmers do.
[1] https://hackaday.com/2017/11/09/stop-motion-with-the-time-gl...
Maybe if you had seen some of the eldritch devious monstrosities I've seen people create in Excel (even without VBA) you might reconsider that statement.
Be very worried if someone says "we have this Excel spreadsheet that needs to be turned into an app"....
Excel functionality is on part with some programming languages.
https://www.youtube.com/watch?v=INa41RSwiCc
But eh, I suspect a good programmer in most fields wouldn't be seen as 'magical'.
For a layman who's curious about computers, he can just go to a computer and try stuff. Worst outcome from there is loss of some data.
If you're curious about chemical engineering, you're restrained a bit, because you're not really going to go near equipment that can easily blow you up, burn you, freeze you, or poison you.
So without the tantalizing hints that IT drops near you all the time, you're not going to wonder whether chemical engineers are wizards.
From personal experience, that is more than scary enough for some to never attempt anything at all.
That would include people like psychologists, hypnotists, marketers, politicians etc. Once you know all the tricks it stops being magical, but it takes a lot of time and effort to know all the tricks.