Thursday, December 26, 2019

Are you a Full-Stack or T-shaped developer?

When I first started programming as a profession in 2000, the idea of a cross functional developer was still in an infancy.  However, I suppose, the idea originated with the mainframe.  There, you would find a COBOL developer who knows SQL.  Mainframe developers know those two programming languages due to the coupled nature of SQL and COBOL.  It didn't make much sense to have a DBA or SQL-only expert come in an 'install' SQL to your COBOL program.  In today's world those two concepts compose two parts of the three-tier architecture application; business logic and persistent storage.

No one talked about full-stack or T-shaped developer just 17 years ago.  Today, it's a big deal.

Term review:
Full-Stack Developer:  A developer who can easily cross tiers of an application by creating usable solutions.  The three tiers commonly associated are presentational, business logic and persistence.  This developer has skills in: JavaScript, HTML, CSS, an OO-language like Java or C#, and SQL or noSQL database concepts.  It is also becoming increasing clear that some sites may skip over the OO-language in preference of JavaScript for their business logic tier.  What's also become useful in a DevOps world as well are skills related to configuring the platform where all of the above is going to run.

T-shaped Developer:  A developer who has a breadth of knowledge (the top line of the T) and a depth of one or a few skills within that knowledge (the down line of the T).  To a degree the Full Stack and the T-shaped developer go hand in hand.  However, a T shaped developer may also include skills related to project management, business analysis and people management.

I look for both types of developer depending on the role being hired for.  If I'm looking for a pure developer; a coder with headphones on most of the day, churning out commit after commit, and interfacing with other developers, then I'm looking for the Full-Stack variety.  If I'm looking for a lead or senior developer, then I'm looking for the T-shaped developer.

What do you need to get there?
First, I think a Full-Stack developer becomes a T-shaped developer over time.  This is a natural progression as you become more experienced and have the social skills to push properly for your vision.  Therefore, T-Shaped is really a very experienced Full-Stack developer!

So how do you become a Full-Stack developer?  Lots of training.  I think you have to spend time on your own to find the bits, pieces and parts that make up the above description.  The world is about websites and mobile applications; you can make your own on your own time.  There are plenty of tutorials to cover all of the technologies involved in a Full-Stack developer.  You just have to invest the time.  Finally, I think you have to put yourself in a professional position to do all of the above as well.  Interviewers like experience that involves for a business and what you do on your own.  You have to have both.  That will set you apart from others.

Conclusions:
A full stack developer is a T shaped developer!  Being human we are unlikely to be able to master many disciplines at a high level of performance in each.  Full-Stack Development is a starting point.  You can get going on the three tiers and see where that takes you as you go deeper and deeper into software development life cycles.  Good luck!