Jean identifies a narrow slice of perspectives that disproportionately drive the conversation about what "good software eng" looks like: both the code itself and the work that produces it.
Here's my $0.02, as a S.Eng and an educator, on what this conversation misses.
So first of all: a few tweets downthread, Jean brings up FAANGs. I promise, I'll get to FAANGs. But that's not where this conversation starts.
It starts with the dissonance between what 90+% of devs do and what they THINK they do.
/2
The lion's share of "THE OTHER STUFF," from my perspective, are the parts of engineering that The Conversation about "good software engineering" habitually ignores or under-discusses.
Once again, educator and practitioner here: I think "the parts" are like 80+% of the job.
/3
I've said this before, so this'll be review if you've ever broken bread with me:
MOST dev education, from academia to YouTube tutorials, is "How to build Y from scratch using X."
Meanwhile, most engineering projects look like "add to, fix, or maintain this thing."
/4
And I think if you were to ASK devs what they do, they'd often SAY "I build [thing]." But that's aspirational. They want to be building. They think of themselves as builders.
Enhancements, repairs, and maintenance lack relative desirability, so the convo glosses over them.
/5
What's the impact?
We fail to hone a slate of skills that we then spend 80+% of our time using.
Like debugging skills, or figuring out what the hell this code is meant to do (I call this 'forensic software analysis').
...and the follow-on impact of THAT is that, because we're bad at these things, we spend more time doing them worse, and in the process make our jobs less fun for ourselves and leave behind code that makes our successors' jobs less fun, too.
/7
For example, let's take just one: debugging.
It doesn't even have to suck.
It CERTAINLY doesn't have to be as stressful as it is when we're all conditioned to treat debugging like standing on tiles barefoot during a game of "the floor is lava"
/8
For the record, I know plenty of FAANG devs and ex-FAANG devs. They, too, do loads of debugging. Maintenance. Forensic software analysis.
The "dark matter of software engineering," to me, is less "FAANG vs not FAANG" and more "A dev's plum project vs most of the actual job."
/9
I'm also gonna note, I'm not a willing subscriber to the FAANG-hegemonic view of software eng.
I WILL concede that commonly used open source dependencies, and therefore a disproportionate piece of everyone's code bases, belongs to these companies, so we'll discuss that.
/10
For the uninitiated: FAANG stands for "Meta/Apple/Amazon/Netflix/Google," and it's like the Harvard-Yale-Princeton of tech employment.
/11
So, note that I said the dependencies "belong to" these companies, not "come from these companies. The things we credit FAANGs for, upon close inspection, are themselves often testaments to the fact that quality tools come from everywhere.
For example...
/12
FB did not build React. They acquired it.
Apple did not build the iconic touchscreen. They acquired it.
Google did not build Android. They acquired it.
Netflix did not build Metaflow. They acquired it.
These places don't universally generate 'excellence'. They buy it up.
/13
But, OK, so the QUESTION was "are their practices universal?" and the proposition was that they're NOT, and I agree.
Most folks don't have billions of rows of data. They don't have HUNDREDS of engineers theoretically available like interchangeable parts.
/14
That is a very unique, particular situation, and I'd say it applies to...honestly not even most teams at the FAANGs. Again, that situation is aspirational and therefore overrepresented.
Let's compare it to some of my clients.
/15
My clients are often social-good projects run on grants, donations, and the goodwill of the privileged.
In that world, 'Bus count of 1' is aspirational. It's frequently 'we WISH we had a dedicated person, but for now it's either LaQuan's Friday evenings or nothing.'
/16
In THAT world, you can't count on context handoffs, and your patterns have to withstand it.
It's not "we do this because our engineers suck." It's "we do this to navigate a constraints that no giant OS sponsor deals with to this degree."
Another example: there are operational & ethical questions associated with the use of small-n data.
"What guardrails do I need to efficaciously and ethically predict off of a training set with confidence intervals THIS big?"
In fact...
/18
Default and commonly-taught practices are INSUFFICIENTLY RIGOROUS or small-n data.
We train people on giant datasets with no ethical concerns like MNIST and Iris, and then ask them to analyze 200 medical records.
Teams need much MORE knowledge to do that correctly.
/19
OK, so in addition to the slew of skills we use all the time as engineers that we mostly don't discuss in tech education,
there's also a slew of constraints and circumstances we face all the time as engineers that we mostly don't discuss in tech education.
What do?
/20
"Fix all of tech" look brah I'm TRYING, but it's taking a second. Patience plz.
In the meantime, on the backend, we can get more nuanced about how we evaluate practices, skills, and solutions.
Starting with, ditch "best practice." That's fake. That's not a real thing.
/21
There's no universal best practice because there's no universal. If we're acting like it's universal, there's some specific context that we don't realize we're treating as the default.
INSTEAD of evaluating a skill, practice, or solution on whether we "like" it or whether it's called "best", we can EXPLICITLY consider who it's for, how they use it, and whether their context transfers to us.
So, organizers try to include all the realistic contingencies in these simulations. Otherwise the simulation is useless for preparing people to act under pressure.
As of 2021, all the simulations I participated in while studying have been shelved.
Why?
/2
Because all of those simulations fail to account for an organized effort from a reasonably large, highly connected portion of the population to resist epidemic response measures.
/3
I have, four times now, witnessed a group of software and machine learning whizzes gather in a room (or Zoom) to brainstorm the reinvention of transport for eco-friendliness and human convenience.
All four times, the brainstorm "invented" buses. To the letter. All four times.
This is why, when people ask "can AI save XYZ," I usually think to myself "If AI can save XYZ, listening to folks who didn't grow up rich can save XYZ for like a millionth of the cost of AI trying to save it"
By the way, all four times were personal experiences.
I'm not counting the time when E**n M**k tried to reinvent transportation and invented the bus, or when Via tried to reinvent transportation and invented the bus, or when Uber tried to reinvent transportation and invented th
I want to share an observation that might prompt some thought.
Anytime a colleague who has been at a company <6 months has tried to get me to apply to their team, they either didn't stay for 6 months or they wanted out by 6 months.
This impacts how I respond to that request.
/1
I don't blame my colleagues for this.
I think tech companies (maybe all companies but I'll stick to what I know) tend to try hardest at the recruitment step and a lot less hard at the retention step.
And sometimes they effectively sell a fantasy to hire.
/2
Look.
Working for someone is a big bet.
Selling my friends on working somewhere is a BIGGER bet, by an order of magnitude.
@venikunche This is a tricky question. Here's why:
I think what you're asking is "at what age did you experience your age used against you personally."
But ageism has affected my career in tech separately from my personal age. It does this by shaping the ecosystem itself. Examples:
1/
@venikunche 1. I have never, at a tech company, had a manager over the age of 29, with one exception, who was 32.
It has therefore been impossible for any of them to possess significant management experience. This has affected my experience of, and expectations for, being managed.
2/
@venikunche 2. I have never had a mentor within my same employer with more than ten years' field experience.
To get these, I have had to specifically go find people outside my employer. Most of them have their own businesses because employers fail to recognize their value as FTEs.
3/
1. Most meetings already suck. They don't get better because the folks planning the meetings disproportionately hate meetings less due to they have what we call a high Caucus Score.
2. Remoteness EXACERBATES the way business as usual discounts the needs & contributions of low Caucus Score, remote, or asynchronous teammates. If a meeting is recorded, it's also, consequently, remote.
Let's talk about contract work versus permanent roles, specifically as an engineer (maybe it applies outside engineering, but I'll stick to what I know).
I have done, and still do, both of these, and I'd love to bust some myths about them.
MYTH 1: You have to choose one or the other at a given point in time.
I realize that, for plenty of folks with children and other obligations, having anything in addition to a full time job is not tenable, and I acknowledge that.
That does not mean it's always impossible...
/2
...to try a contract role while in a full time role, if they are curious about it.
Before I started my consultancy, I picked up teaching on the side of my day job. Once I started feeling more fulfilled in teaching than at work, I got A LOT more curious about contract roles.
/3