V Shaped Engineers: The evolution of T-shaped

The concept of T-shaped individuals goes back 25 years apparently, but I became aware of the term probably 7 or 8 years ago. A T-shaped individual has depth in a given area, but also has the ability and passion to be involved in a wide variety of other areas.  I appreciated the contrast shared on the Code Renaissance blog between a T-Shaped Individual and an I-Shaped individual

T-Shaped people are like the traditional I-Shaped person, a specialist, but they also branch out wider, where an I-Shaped person will primarily go deeper and deeper

These days a rough synonym for T-shaped individuals is that of Full Stack Developer

Benefits of T-Shaped

I appreciate teams built with T-shaped individuals because they tend to adapt to the challenges ahead of them easier.  Because of the breadth of the team members if there is a bottleneck in one area of the team’s workflow (be that software development or something entirely different) the team can adjust to address the constraint and move forward. 

Additionally T-shaped individuals tend to be passionate about many things which creates a very positive team dynamic.  The variety of discussions and the insights from those discussions are better and create a learning environment (and generally an open minded one as well).  Perhaps this also explains my preference/advice to those considering going back for a second degree to look at a different field rather than doing a graduate degree in the field their previous degree was in. 

I-shaped specialists if not careful approach every problem with the same solution because it is the solution they are passionate about.  The well-used everything is a nail when all I have is a hammer analogy could be applied here.  That isn’t to say specialists don’t have a place, but the number of places they can be utilized is limited.  If you have more than enough work in that space than this isn’t a problem unless they become the constraint (how often in a software engineers career has the DBA been the constraint….)

Not only does the breadth of a T-shaped/full stack engineer help them do work in different areas it also increases their troubleshooting/problem solving capabilities.  They are better able to connect the dots and trace the challenges across different domains.  The relationships between different fields/concepts are more readily seen as well which can be a catalyst for greater insight.

For those technical

Arguments against

One argument against is that as applications and systems grow you need more depth and that those that spread themselves out as much as down will not be able to address the technical challenges that emerge.  I think there is a truth to that.  I am not yet settled but I believe given the choice to be either deep or broad and not very deep that deep is the better choice because the solutions you propose will generally be based on facts about the technologies that you truly understand.

Another argument against is that in the new application world that we live in where machine learning, mobile platforms, and persistence platforms beyond relational have emerged that no one can have advanced knowledge in all.

To this point I would simply say that the T-shaped concept and by association the full stack engineer does not purport that a single individual is advanced in all the areas above.  A team of T-shaped individuals would ideally have the appropriate balance of depth in the required areas. 


The concept of T-shaped individuals applies to not only software architectures and layers, but also languages and frameworks, business domains, etc.…  Additionally when using the term T-shaped the perception is perhaps given that there is one area of depth. 

Much more frequent (and more desirable) in my mind is more of a V-shape.  As you expand beyond your areas of greater depth you inherently are a little deeper in adjacent areas because of their relationship with your areas of specialty. 

Regardless of the term used

  • T-shaped
  • Full Stack
  • Generalizing Specialists
  • V-shaped

the more you want to lead the teams or lead the engineering of software applications the more true this concept becomes.  An I-shaped individual generally doesn’t have the relevant skills to function on a more broad scale (thus the visualization of an I).  Unfortunately often T or V shaped individuals asked to lead become — shaped individuals because they fail to continue to invest in their depth as their leadership requires them to broaden out.  All too common in our industry is the software engineering manager who is so out of touch that they no longer could function in a technical capacity (or have any technical street cred left).  That is why I so enjoyed the recent interview that Shawn Wildermuth did on his Hello World podcast with Scott Guthrie who heads up Microsoft Azure.  He talks about his journey from a deep technical role and how he balances it.  He includes a fun story about a recent incident where he inadvertently showed his continued technical street cred to a team of engineers who were troubleshooting a production Azure incident.

Here is to the continued development of V-shaped individuals and to the encouragement of leaders in all disciplines and domains to continue to invest in their depth as well as their breadth.  We are all the better for it.


Posted in Technology | Leave a comment

2012 in review

The WordPress.com stats helper monkeys prepared a 2012 annual report for this blog.

Here’s an excerpt:

600 people reached the top of Mt. Everest in 2012. This blog got about 5,400 views in 2012. If every person who reached the top of Mt. Everest viewed this blog, it would have taken 9 years to get that many views.

Click here to see the complete report.

Posted in Technology | 1 Comment

Launching a Debugger on application start

I have been working a lot with Entity Framework Migrations lately and needed to debug the migrate.exe utility, but to do so I needed the debugger to start when the process tried to start (as opposed to downloading the now open source code and trying it that way which I could have done).  I found this link on MSDN that addressed the situation perfectly.  Now everytime I launch migrate.exe it attempts to connect to a debugger prior to executing.  Lovely!


Posted in Technology | Tagged , | 1 Comment

Installing Windows 8 RTM on a Retina Macbook Pro

I thought I would capture my experience installing Windows 8 RTM on my Macbook Pro (the new Retina version with SSD).  First I must say that I am enjoying my Macbook much better now that I have an SSD in it.  Computers without SSDs are just painful to use these days especially as a developer. 

For the most part the upgrade went exactly like any other upgrade.  That was good.  When I booted up the first problem I ran in to was that the Trackpad drivers for the Mac wouldn’t load and I couldn’t load the Boot Camp Control Panel (weird error about not being able to access the startup disk).  I looked in Device Manager and found that there were two Trackpad devices registered, but they couldn’t start.  So I decided to start with those first two items and resolve them.  Thankfully the Internet is a wonderful place, full of all sorts of answers!

Issue #1 – Not being able to access the Boot Camp Control Panel

The essence of the solution was to run the Boot Camp Control Panel in a different UAC security context


Issue #2 – Trackpad wasn’t working

The solution is simply to map the drivers to USB Input Devices and then back and magically it works (weird I know!)


Issue #3 – Windows 8 Enterprise kept complaining about activating

From the command-line you access a UI that allows you to enter in a key that is valid which is what was causing this to complain in the first place.  This may be because I used my MSDN account to install Windows 8 Enterprise (I am doing that to test it out at my employer for those wondering about the license concerns there).


Posted in Technology | Tagged , | 1 Comment

8/21/2012–News of the Day

Technical News

  • I was troubleshooting an issue with a SQL Server script that we use to upgrade the database of an application we develop.  I ran into the weird situation where if I renamed a column in a table and then tried to update that in the script I would get a script compile time error saying that the column didn’t exist.  If I created a temp table with one row in it and did a cross join in the update statement like below the script would compile and run just fine.  Most of the websites I looked at explained that you could also accomplish the same thing by using dynamic sql with the update statement.  Somehow the compilation step for this “hack” I did with the temp table must be forcing the sql statement to be compiled in a more dynamic sense.

select ‘1’ as SomeText
            into #dummytable

update q set q.ValueTXT = convert(varchar(255), q.ValueTXTTMP) from [dbo].[SomeImportantTable] q cross join #dummytable p

Posted in Technology | Tagged | 1 Comment

8/7/2012–News of the Day


  • How To Properly Define “Great Leader”–And Act Like One
    • A great leader helps a group of people identify what they want and how to get it, and then influences that group, free of coercion, to take coordinated action to achieve the desired outcomes. A great leader achieves results at a level far beyond what others achieve.
    • Leadership has three building blocks. We call these three modes of behavior the 3 As of Leadership.
      • Analyzing: Figuring out what outcomes are desired and how to achieve them.
      • Allocating: Establishing a plan to concentrate scarce resources, like money, time, and people, toward their highest and best uses, and away from areas of waste.
      • Aligning: Influencing people to behave in a coordinated way, according to the plan, to achieve the desired outcomes.


  • Defend Your Sweet Spot
    • People who are great at something often don’t know exactly where their greatness comes from. They have a sense that it’s bigger than they are. And with that sense comes a fear that the magic is ephemeral and if they distract themselves it will disappear. That fear is legitimate.
  • Let Your Ideas Go
    • One such game is Fold It, which helps scientists advance their field by knowing how a protein should fold. A woman, an admin who has no bio science background, ends up being the best protein folder in the world. This is something that wouldn’t have happened if she had to first be picked, or vetted or in any other way been “allowed” to participate.
  • Have You Fallen Into The Busy Trap?
    • We are creating the Busy Trap ourselves. I think it’s a way of avoiding our fear of death. If we are in the Busy Trap, we don’t have to spend time alone, or thinking about ourselves, or thinking deeply about the stuff we are interested in. By always being tired and overworked, we get to claim that we are “productive” even if the things we are doing are pointless. We get to prove our worth by being able to declare how busy we are. But, in a lot of cases we aren’t really doing much.
    • 3 Ways To Break Out Of The “All Work” Or “No Work” Death Trap


  • 15 Ways to Split an Epic, a Team Exercise
      1. 1. Extract a smaller story by focusing on a particular user role or persona. (“Prioritize your users first, then your user stories.” — Jeff Patton) E.g.: “first time user,” “social networker,” “my mom,” etc.
      2. 2. Extract a smaller story by substituting basic utility for usability. (First make it work, then make it pretty.)
      3. 3. Extract a smaller story by splitting on CRUD (Create, Read, Update, Delete) boundaries.
      4. 4. Extract a smaller story by focusing on distinct scenarios, such as the “happy path” (main success scenario) vs. alternate (exception) flows.
      5. 5. Extract a smaller story by focusing on a simplified data set.
      6. 6. Extract a smaller story by focusing on a simplified algorithm.
      7. 7. Extract a smaller story by buying some component(s) instead of building everything yourself.
      8. 8. Extract a smaller story by discarding technologies that increase hassle, dependency, and vendor lock.
      9. 9. Extract a smaller story by substituting some manual processes for full automation.
      10. 10. Extract a smaller story by substituting batch processing for online processing.
      11. 11. Extract a smaller story by substituting generic for custom.
      12. 12. Extract a smaller story by reducing supported hardware/OS/client platforms.
      13. 13. Extract a smaller story from the acceptance criteria of another story.
      14. 14. Extract a smaller story by substituting “1” for “all.” (NOTE: Look for impliedinstances of “all,” as the word often won’t be written explicitly.)
      15. 15. Extract a smaller story by scanning for keywords such as “and,” “or,” periods, and other kinds of separators.
Posted in Business, Leadership, Technology | Tagged | 1 Comment

8/3/2012–News of the Day




Posted in Technology | Tagged | Leave a comment