Why T-shaped people? (2018)
jchyip.medium.com
jchyip.medium.com
Anyway to improve productivity it was decided the whole dev team would participate in a half day training course about "T-shaped" people. It was your typical corporate training nonsense, a hour of watching videos, weird team activities including making animal noises with blindfolds on, playing with lego, etc.
The training was concluded by explaining we should no longer pigeon-hole ourselves to duties that fit our job description and if we have capacity in our sprint to pick up other duties.
The whole thing was a disaster. We had backend devs doing frontend development with jQuery when we were using Vue. Frontend devs started doing UX design and things looked like trash. QA was done by basically anyone so as you can imagine bugs started appearing everywhere.
I think this is one of those things that makes sense in theory, but is kinda hard to implement within a corporate structure. As a generalist and someone who came from a startup back ground, I used to find the way corporates pigeon-hole individuals into specific roles quite constraining, but I've come to appreciate that having experts and very explicit duties does make a lot of sense from a quality and accountability perspective. Smaller companies and teams can probably benefit from having their employees wear different hats, but in larger teams I think it's good to exploit the specific expertise of individuals as much as possible.
Tangent, but what is it with corporate teambuilding and this sort of games? I had to participate in one where people had to crawl on the floor, blindfolds on, while the "master" gave commands....... I mean come on, sounds like a fun evening, but in that context it left me quite uncomfortable.
For me, T shaped people know their speciality, but know enough of the surrounding context.
I've seen people write technically perfect but practically useless software, because the program didn't fit the business context. I've seen installation horrors where devs and infras took weeks to do a simple deployment, because they couldn't describe to each other what network config needed to be done or what was possible. And of course, the architects that used to be good devs but are now locked in an ivory tower and have no idea that their specs are unusable expensive dreams.
So for me, T shaped people can communicate to other people. They do their thing, but can explain how that thing fits in the whole. They can troubleshoot outside their part if the stack. The boundaries between specialities should be owned by multiple people instead of nobody, and T shaped people make this possible.
This mostly depends on the organization. If you have only access rights for a tiny sliver of the system, you can only be an expert. If technology swaps faster than your underwear, you can't specialize. If people don't get a chance to fail and grow, they won't become neither specialist nor generalist. So a T shaped course should be given to the CxOs and high level managers as they are the ones who can make it happen.
That said, your example merely indicates that corporate workshops are bullshit. It does not contradict the value of T people.
In my experience, two highly specialised but disjoint people can only produce rubbish. This is where you need some entry-level intersection of knowledge.
In your case, I don’t expect a FE dev to care about persistence, nor a BE dev to worry about form validation. But both need to be aware of the customer, the business, and robust API design.
If you are large enough for corporate training events, chasing T shaped people probably isn't that important.
If you work on a product team then it really helps to know a bit of everything, architecture, writing frontends, writing apis, databases, designing scalable services, managing hundreds of servers and other infra through automation, ci/cd, data engineering, ux, testing, talking to users, talking to stakeholders, gathering requirements, managing a project, managing yourself. From time to time you may ask the help of an expert.
It was bad implementation clearly. You don't get to be generally good at different stuff without first being a lowish worker on each of those, having a person to hold your hand. You can't just declare that everybody should do anything after 2 hours of generic presentation and call it a day.
That's what it is. You do scrum, you write your code, you do the work of 4 but earns as one.. and that's because its fun, t-shaped people don't like to stay in their comfort zone. /s
I believe you, but I have so many questions. Where the devs prevented from chatting with each other before starting to hammer on the keyboard? Were the backend devs not curious when they had to import a new dependency (jquery in this case)? Who did the code review?
Having a backend dev do frontend is not different from a junior employee starting at the company. People have to support them, with advice, tips and reviews. Did the company failed at regular onboarding this bad too?
Honestly the whole thing sounds like malicious compliance. People didn't want to do a thing and they made sure it will be done badly.
Some times managers do things to shake things up a bit. Some times they are right, some times they are wrong just like ordinary humans.
But what it takes to ruin the environment is not always a poor manager but just one stubborn grumpy senior dev who refuses to comply, and get some people along with him.
Though what you describe sounds awful too. Hopefully with the recent era of tooling and discipline on the frontend side, we'll see less of that.
A single anecdote of a misguided manager ruining it for their team does not invalidate the idea of T-Shaped people.
At least that's how I understand it.
Unlike generalists, they have gone through the tough process of going very deep into something. They understand that there's a lot of detail under the surface of any domain and they know how to get there when needed, whereas a generalists would disregard or be ignorant of any complexity.
In my experience these people are definitely better managers (unless they suffer of old physics prof disease), but I don't see the large benefits for more specialised roles. The more I switch to being a generalist, the less I can actually deep-focus, and talking to friends and colleagues, it doesn't seem like I'm the only one.
That said, interest and curiosity about other fields, especially the ones you actively work with or neighbour is probably always a great quality to have.
I'm not really clear if David Epstein merging the two ideas is the 'true' idea of T-Shaped people in the hive mind of the internet or not.
tldr: T-Shaped could include multiple specialties (which make it not look much like a T)
So suddenly the graphic designer is writing HTML and CSS, the front-end developer starts writing SQL queries, and the product manager starts writing JavaScript.
The experiment lasted about a month with a lot of hurt feelings, because essentially all the code just had to be totally reverted.
The graphic designer knew how to write CSS for his browser and screen resolution, but didn't have the faintest idea how to deal with window resizing, browser quirks, unexpectedly long text, or how to integrate with our established frameworks at all. Just threw a lot of CSS straight into "style" fields instead of CSS files. The SQL queries fell apart in production because the front-end developer didn't know how indexes worked at all, or to aggregate values on the database server instead of client-side. While the PM's JavaScript was similarly just modifying the DOM directly instead of using the framework, leading to total spaghetti code (and global variables everywhere).
The worst part wasn't even the wasted time, but the damaged personal relationships. Because nobody had even the level of expertise to understand why their code had been reverted, so they blamed it on politics instead. The PM thought it was totally unreasonable to require usage of the framework, the front-end dev blamed the database architecture because indexes didn't seem like something anyone should have to deal with, and the graphic designer similarly could never be convinced of any good reason why CSS shouldn't be inlined into HTML. All of them wound up blaming the actual team member experts for getting jealous of their turf and trying to unjustly sabotage the new people's contributions.
Just a disaster all around.
Now obviously that was kind of a worst-case scenario. But nevertheless, ever since I've been extremely wary about people picking up development outside the area of expertise they were hired for, simply because people don't know what they don't know. In other words, they don't even ask to get assistance on how to do something properly, because they're totally unaware there's a proper way that's different from what they just naturally hack together.
Particularly now with so much technology support from remote working you can just keep an open channel. As soon as you get stuck or want to ask something, you just share your screen and ask for some help. Not much more difficult than that.
But it had nothing to do with an open channel. Everyone was literally sitting next to each other. But my point at the end was that it doesn't solve anything because nobody even thinks to ask in the first place.
It makes sense in single team context, say one person being very good at SQL but rest of the team having some basics will mean most of the "simple" tasks related to can be done by anyone instead of shoving everything onto expert.
Or say having just enough frontend skill that backend team can create their own internal admin panel for a service without involving frontend/UX in it and paying communication tax.
Fast forward to 2020, when I went from a 60 person startup to working at AWS in Professional Services where I do the same type of enterprisey things as a billable consultant, I realized that in most of those areas, there are plenty of people who can run circles around me.
But, my “specialty” is that I am a generalist and can go into your typical enterprise and talk to everyone in the organization from sales, to finance, to security, to developers, to the infrastructure people, etc and I’m self aware enough to know what I don’t know and know when I need to bring in a specialist.
I think it can be beneficial to show people where you can start learning a new subject but they have to choose to learn
Yikes, what a terrible take. To me, "T-shaped" people have at-least-minimal competence across a broad spectrum of the business. They don't do the work of other specialties, but they use their knowledge to avoid making excess work for those other specialties -- for instance, they make better-informed suggestions in brainstorming. Your backend devs know how the frontend stuff works, so they don't make tortuous APIs; they know how QA operates, so they plan for testability; they know the pitfalls of UX so they don't make rigid state-machines that punish users. And, if a disaster strikes and a team needs a helping hand in a pinch, maybe somebody with some depth outside of their role can pitch in. Making everybody do everything always is not T-shaped, it's, I dunno, #-shaped.
Since then, I started teaching myself concepts from the ground up in any software field you could imagine; compilers, programming language theory, category theory, functional programming, low level embedded systems, front end web design and development, backend development, devops, networking, data structures and algorithms, databases, distributed systems, operating systems, you name it, I've done at least some of it. So far it's been the best intellectual investment of my life. I just know so much about how stuff works now that I didn't before and it feels great.
I'm also interested in entrepreneurship and building SaaS products, so I also had to teach myself sales and marketing, product design, the UX process including interviewing potential customers, and so on, which are whole fields in themselves, but now I can confidently say that I can design and code a product from scratch, market it, and have a decently high chance of it being successful.
If anyone else has the time, I highly recommend getting acquainted with these various fields, you may think they're unrelated but you'd be surprised, I've often found overlap between disparate fields where they fixed the very problem I was facing in a different field.
If you go to any school's CS degree program and go through their list of courses, you can basically do them for free by watching the videos and doing the assignments. This is what Scott Young did [3].
[0] https://teachyourselfcs.com
[1] https://craftinginterpreters.com
[3] https://www.scotthyoung.com/blog/myprojects/mit-challenge-2/
> Dave Rooney uses a metaphor of “icicle-shaped”, that is, people who pick up whatever skills they need when faced with a problem to solve. This matches more closely to how I actually operate. https://medium.com/@daverooneyca/icicle-shaped-people-45f364...
And, of course, since software has been eating the world, domain knowledge about the field in which your software is actually used is one of the most valuable traits to have, because it matters very little how perfect and elegant your solution is if it is a solution to the wrong problem.
Agreed, which is why I tried to limit it to CS only. If I were to do it for many subjects, that'd be impossible.
If you commit to maintaining an expertise-level of knowledge in all the domains you mentioned, you're going to spend 75% of your life reading instead of doing.
I like to say that my skillset follows a pareto distribution. That is, roughly 80% of my knowledge is accumulated to the top 20% of my areas of interest. But that doesn't mean I suck at the bottom 80% of my areas of interest. It just means that I'm fully committed to constantly bettering myself in my core domain (in my case, front-end development), and also keeping up to date with the latest advances.
I also know how to work with databases, and I'm somewhat familiar with newer ideas and trends (Snowflake, Planetscale, CockroachDB, etc). But aside from some basic marketing copy, I couldn't really explain why these new databases are any better than what we had previously. And I certainly wouldn't want to be trusted to make a decision on which one to use. I know I could figure out how to work with them, and I'm content with that.
I still have yet to find a way to manage external perception of my abilities to even a minimal degree. Very draining.
No chance to sell that where I am now... I'll see what I do about it come Jan.
100% agree on the draining part.
> If you commit to maintaining an expertise-level of knowledge in all the domains you mentioned, you're going to spend 75% of your life reading instead of doing.
I'm more so talking about the fundamental concepts of these topics, such as implementing an OS or database from scratch, rather than the latest trends in the fields. If there is a major trend then I'll look into it. Taken that way, it doesn't take as much time as you might expect, since it's not about learning and using the latest libraries, it's about things that haven't changed for 50 years, like database ACID transactions.
And then I started working at a company where there are actually people who are considered some of the best in the world in every conceivable area that I thought I was good at.
Every week there is an announcement about a new service or feature at AWS. For instance, my specialty is supposedly “serverless”. I didn’t know that Fargate (serverless Docker) supported Windows for over a year.
Even if you think more generically like front end development, there is always something new.
- creating their own languages that are used by millions
- writing and optimizing databases used by millions
- writing a custom micro VM (the open source Firecracker project that is the basis of Lambda)
No matter how good you get at any of these areas, unless you focus on one, you will never be as good as someone who eats, drinks, and breathes those things everyday and have to make sure they scale to millions of transactions
Sure, I can optimize a database for a small to medium size company. But when I reached the limit of my knowledge and skills, it’s nice to be able to reach out to the team that makes sure that the databases underlying Amazon retail are running smoothly.
What about body building? You aren't T-shaped with a broad base and shoulder?
I do agree with the basic idea of being T-shaped, however. I've personally seen project teams having fragile delivery capability due to a lack of skills, or lack of skill overlaps, which made the team reliant on individuals that could be off sick, on vacation, or assigned elsewhere.
This was originally described by Tim Brown of IDEO [0] fame, but as the OP explains has been extended and adapted since.
I think it's a really good thing to consider earlier in your carrier, helping to enable you to be a better, rounder and more valuable contributor.
In many ways HN has helped me to develop as a "F" shaped person, the breadth of content on here is invaluable for developing a wide area of knowledge. But also the depth of insight available can pull you in and take you on a development journey where you become an expert in an area.
X-shaped for leadership I-shaped for individual depth-skill without communication skills tree-shaped for a person with depth in many areas or branches of a field Multiple Mountains shaped (coined by Forrest Z. Shooster) for individuals with depth in overlapping several fields rather than a shallow depth in many or a singular depth in one field who specialize in the overlap between those fields
Γ- and Μ-shaped individuals (gamma and mu, respectively) have been described by Brittany Fiore in her ethnographic work of data science research communities to indicate people with supporting strengths in computationally- and software-intensive fields.[3][4]
Similarly, π-shaped skills (after the Greek letter pi) refer to "a broad mastery of general management skills atop a few spikes of deep functional or domain expertise".[5]
what is this MBA gobbledegook
But even the first situation can fail if you are under constant pressure and deadlines with no breathing room because it sours the enjoyment of learning.
The original used to be available without needing to log in, but now it appears to be hidden behind a login at https://www.facebook.com/notes/373922293851423/
The text of it:
Keith Adams worked on kernels at VM Ware. Then virtual machines. Then search performance at Facebook. Then the HHVM implementation of PHP. Then machine learning. Now he’s Chief Architect at Slack. In between he worked on hundreds of little projects that lasted hours or days or weeks. Keith is a Paint Drip Person.
I was a big fan of the T model of skills, introduced by David Guest in 1991: know about a lot of things, be really good at one. The more I taught it, the more unhappy I got with the metaphor:
- Skilled people are good at several things.
- Skilled people’s interests develop over time.
- Skilled people don’t plan their next focus area. Sometimes it seems completely unrelated to their previous focus area.
- Skilled people are always exploring, just for the sake of curiosity.
- Skilled people resurrect interests sometimes.
All of these metaphor fails led me to the paint drip model of skills. - You draw a brush across the top of the canvas.
- Sometimes enough paint accumulates that a drip starts to roll.
- Once a drip starts to roll, it’s not clear how far it will go.
- You keep drawing the brush across the canvas, regardless.
“Moving the brush” is the curious exploration. Keith reports that he tries a project a week or so, but that most “don’t go anywhere” (I beg to differ). The drip rolling down is an area of specialization. Once it starts rolling, it’s not clear how far it will go. In any case, the brush keeps moving. Eventually the last drip stops and a new one starts.How is this white midwesterner who knows only English going to handle displaying Japanese ruby text in epubs? Or implement the epub table of contents (TOC) for vertical Japanese? I didn't even know Japanese ruby existed before the task of implementing it landed in my lap.
Thanks top the web, googling, and a few coworkers with a little expertise (and CoreText on Mac OS) was how. I am by no means an expert now in Japanese ruby, or even CoreText, but I love how I am a lot less ignorant about these things too.
Ignorant of PDF until I was told to support it more deeply in Cocoa (Mac OS).
Ignorant of color theory and color management until I was pulled into the ColorSync team.
Ignorant of image metadata, XMP, or even XML parsers until image metadata support also landed in my lap.
Display prefs, display calibrator, Common Cartridge.... It's funny how many things land in your lap when you are a kind of "gofer" for your team, ha ha.
Each time, as I said, I felt disoriented, anxious, worried I would be able to implement the feature. But after so many weeks of struggling, and eventual success, I have come to treasure those experiences.
Like a coder who does embedded systems but also knows a bit about how to write a webpage and how databases work.
Once a client demanded that we worked with some encryption framework that required open ports. A delegation of the crypto company had to come to spend the day and hold some meetings because the networks people couldn't take my word for it.
Anyway, whatever the reason, for the company it's interesting to have both the right people and the right policies.
I'm not sure what made that people not even wanting to take a look at firewall permissions. It was obvious that the ports were closed. Actually I learned that my workstation had a public IP address, totally useless anyway because all ports were closed from the outside.
All I can do at decent level is computer related stuff, call me one trick pony.
Meanwhile I know people who are perfectly capable making money of truck driving, drilling, a lot of construction related work, simple mechanics, and a lot of more.
https://matt.might.net/articles/phd-school-in-pictures/ (might not be the original source of the idea though)
The drawback was that they were pretty much only interested in that specialty. They might be curious about other things, but they were genuinely happiest doing what they loved.
I specialize in solving problems.
I've never found anyone with my capacity for researching, understanding and quickly putting together a plan to address some exigency.
Whether that be triaging an issue in an opaque production environment or crafting a marketing plan to help tell the story of what my local community does well, that's what I specialize in.
I don't write for the benefit of others, but I do write for the benefit of me, to keep that skill sharp.
I'll tell you my secret sauce, which is being gifted with some intelligence and applying oneself relentlessly. It's a straightforward recipe for success and it's only remarkable in an ocean of mediocrity.
Sometimes it's a true passion for a field, other times it's because there would be so much friction switching tools or learning the internal standards and tools of a business. For instance programming means not only coding, but also familiarity with the tools, libraries, and coding standards of a coding shop, which take time to learn.
Sometimes it's just due to human nature, that larger organizations become silo'd, and practicing two skills means navigating the politics of two silo's, twice the number of meetings, etc. Also, if you belong to silo A, and help out with B, then the manager of A gets annoyed with you. So in a sense specialization is a way to find a comfort zone in a typical human organization, even in what are considered to be good workplaces.
Then I switched jobs to a bigger organization and became surprised by the number of people who claim to be full-stack but are uncable of developing an application from nothning.
That was some of the top rate BS I had to encounter.
This shift is so far limited but important, it means some have realized too many have lost the big picture and we need it to keep anything working well...
There’s huge value in understanding the entire stack in the early stages of development so you’re not having to rope in five different departments just to get something live, but you also need to know when you’re out of your depth and it’s time to call in the people who do nothing but deal with a small subset every day.
To seems like keep crying "do not be rich! It's bad!" and now I see something I call a small reversing trends where more and more sources start stating "we need more generic/wildcard/T-shaped/$choose-a-label-not-to-say-generic-directly". I call it "a bit late, but still good".
Why should generalists be so broad.. they should be an expert in some things!
Heinlein said it best, "Specialization is for insects"
https://jgreaser.wordpress.com/2015/06/26/valves-t-shaped-mo... https://steamcdn-a.akamaihd.net/apps/valve/Valve_NewEmployee...
I've always wondered if they were the ones to come up with this or if it was taken from somewhere else?
It's very difficult to become one of the best in one field, but it's much easier to become one of the best in the cross-section of two fields.
It might not be exactly linear, but you should consider that by committing to a team of T shaped engineers you’re also committing to a team of very highly qualified and very expensive engineers.
Should be pretty easy to con a ship at least, ships aren't that smart /s
Ah well I didn't even know there was a loop to be so far out of...
https://en.wikipedia.org/wiki/G%C3%B6bekli_Tepe#/media/File:...
Maybe I'm watching too many documentaries.
I feel like establishing if someone is an expert or represents one of these shapes is going to be even harder.
The idea was that you could be an excellent biologist or developer, but you always need the transversal skills like interpersonal communication, public speaking, entrepreneurship...
It made sense for me at that time.
It seems like that's a pretty common shape.
It’s very hard for an I-shaped engineer working with a (problem) domain expert to be as innovative: no matter how much they communicate it will always be a tiny fraction of the internal bandwidth of a single brain.