Zero to CTO: An Idiot's Guide to Climbing the Software Ladder

Dec 25, 2017

About a year ago I started preparing myself for a master’s degree in Computer Science. Along the way I’ve been asking myself a ton of questions about my future: Is a master’s degree worth it? Can I advance my career with it? What does an advanced career in software engineering look like? What’s my end goal? What do I want to be when I grow up? I’ve been busy browsing job titles, job postings, resumes, LinkedIn profiles, blog posts, career guides, you name it: all in an effort to map out possible careers paths in this industry.

There was a four — or five — month stretch where I pitched a new career objective to my wife on a daily basis; thanks for putting up with all those conversations Kristen! And then I landed on a resolution:

Goal: In 20 years I plan to be the Chief Technologist of a mid-to-large size company.

Writing that statement down was a mini revolution for me, and it put a lot of other cloudy ideas into focus. But there was still the question of how. How does one actually become a CTO?

What follows is my attempt to answer that question. Of course I’m no “CTO” myself, I’m just the resident idiot around here. But over the last 6 months I’ve talked to CEO’s, CTO’s, product managers, VP’s; I’ve read hundreds of job postings for top-level type jobs; I’ve read the personal profiles of hundreds of people in the industry; I’ve read countless articles — good and bad — on the subject. I’m confident that if this plan doesn’t work, it’ll get me darn close, and unlike some of the bad blog posts I’ve read — which seem to do nothing more than suggest you need to suck up to the right people — this advice is concrete and actionable.

What is a CTO?

Before we start down the how path, it’s important to clarify one tiny little detail. I’ve seen quite a few descriptions of the “CTO” position, and many of them are quite contradictory, so I wanted to pen down my use of CTO for proper context as you continue reading.

If you live in the startup world, the CTO is most likely just the first engineering hire. Honestly, the only thing preventing you from being the CTO of a startup is, well, nothing! Go down to your local tax office, file a DBA for “${creativeNoun} Software” and then print out a business card with “CTO & Founder” under your name.

For much larger companies, the CTO can actually take on one of several flavors with a myriad of nuances establishing the boundaries between each. I’m not exactly interested in discriminating those differences here. In fact, the only critical feature of a CTO which I actually care about defining is this:

CTO: the chief advocate for the software engineering function of an organization

Of course, there are many organizations without “software engineering functions” who still hire to CTO positions (I’d say those are more like Chief Information Officers than anything).

At this point, depending on how your company wields labels, CTO may actually be interchangeable with VP of Engineering or Director of Software Development. I don’t personally care which collection of nouns and adjectives map to the definition above, just know that from here on out, I’ll be using “CTO” as an alias for that definition.

The Career Objective of a CTO Candidate

In all my searching for the thing, or things, that defines a successful attempt to become a CTO, there is really only one thing that matters: You want to be the name that pops into people’s heads when they come up with a list of candidates for their new CTO opening. In order to be that name, there are some bare minimum facts that must already be in place:

  • They must know who you are
  • They must trust you

That’s pretty much it. If you can work to become the name on the tip of the tongue of executive decision makers throughout your industry, then when one of them has a CTO opening, you’ll be well on your way to becoming their candidate, even before your first interview.

So, that’s the basis of my plan:

Objective: maximize the probability that your name will be on the minds of CEO’s, board members, and other decision makers as someone they know and trust to be the chief advocate for software engineering within their organization.

People Have to Know Who You Are

Of course, it’s impossible to know who those CEO’s, board members, and other executives will be — especially if your target horizon is similar to mine, at 20 years from now. Literally anyone you meet could one day become a CEO, CTO, board member, or someone generally related to the hiring of CTO’s. That means you need to make an attempt to let all people know who you are.

I’ve seen the phrase “personal brand” thrown around a lot, and it’s the closest wrapper around the concept that’s important here: you need to brand yourself, and market that brand to as many people as possible. There are a number of ways to do this sort of self-promotion, and none of them should be foreign to you.

Action Item 1: Regularly Contribute to a Blog

Perhaps the most scalable weapon available to your personal brand is blogging. It takes the same effort to write a blog that will be read by 10 people as it does to write something read by 10 million people. By slowly accumulating blog posts over time, you increase the likelihood that millions — and not tens — will actually read it.

Blogging establishes yours as a voice in the community, gives you something to point to from other avenues, and can potentially lead to other engagements like conference speaking. But blogging is also more than just a method to spread your brand, it’s a signal to those future decision makers that you know how to write about technical things to a lay audience.

Action Item 2: Practice Public Speaking

One of your future tasks as a CTO will undoubtedly be some form of evangelization. You will need to talk about your company, its software, make a sales pitch, or recruit talent around you. As I’ve included in my definition above the CTO is the chief advocate of software, and therefore must speak quite a bit.

If you don’t have any experience speaking in front of audiences, then I suggest you start practicing. Your current company likely offers some sort of internal forum where employees can give presentations on topics of their choice (if your company doesn’t have this forum, I’d suggest starting one yourself). Graduate from there to conference speaking, or speaking at local meetups.

People Who Know You Must Trust and Respect You

Getting people to know you is in itself not enough: people who know you must also trust and respect you. In truth, the people who know you should think that you would make a good CTO one day. It’s your job to convince those people of that.

Action Item 3: Be Empathic and Work to Build Durable Relationships

I’m not quite sure what the exact meaning of life is, but I’m confident it has to do with relationships. I know for a fact that life is much richer because of relationships, and most subsets of life are enhanced by relationships as well. So, wherever you are in your software career right now, you should aim to build relationships with the people around you.

Durable relationships directly translate to references and recommendations. Indirectly they build a sense of trust and respect among people with growing power (your friends today will be executives in 20 years). But you should be building relationships also because it’s the right thing to do. Everyone around you is better for the authentic, human interactions you can give them. Try to do that more.

On the other side of the relationship, your teammates are also relying on you to remember them as you advance in your career. One of your goals as a CTO will assuredly be to hire an effective team around you, and you will almost certainly be pulling in old teammates to work with you. Building durable relationships now will equip you with a pool of candidates from which to populate your future teams.

Speaking specifically to software engineers: you should make an attempt to build relationships with people outside the engineering cloister. I’ve found a rather narrow slice of personalities exist within technical departments, especially when compared to the larger company profile. Get to know all types of people, not just those from backgrounds similar to yours. If you need a further push, think on this: of the members of the executive team that will eventually hire you as a CTO, maybe only one of them has a technical background; or maybe none of them do since they are hiring a technologist to fill a void!

Technical Acumen

Of course, people won’t see you as CTO material if they don’t see you as someone smart. You should be constantly working to improve via self-study and education. As somewhat of a minimum, companies expect that their chief technologist will have a technical degree, so that’s a definite action item here as well, but the caveat is that this is not always a must. I know several C-level types with liberal arts degrees. However, a degree remains as perhaps the most dense way of signaling to others that you have what it takes. Get one if possible.

Action Item 4: Get a Technical Degree

If you don’t have a technical degree, but already have a bachelors, I’d recommend getting into a Master’s program. There are several masters degrees in “Computer Science”, “Information Systems”, “Management of Information”, etc. offered completely online. If you are young, and without a family, you should think about making this step sooner rather than later. (I personally believe that a computer science degree is the gold standard for CTO’s, but that’s a blog post for another time.)

Action Item 5: Build Visible Software

Degrees are nice, but experience is required. No one is going to hire you as the chief advocate of their software team if you don’t have yourself experience writing software!

You should also attempt to land jobs writing new and highly visible software applications. The developer stuck in a cave maintaining a legacy app that everyone in the company has forgotten about — well, you don’t want to be that person. It may seem like a cheap strategy, but by being on the most visible teams, you give yourself the best chance of getting noticed.

Often, being on the most visible teams also comes with the most risky projects, and will likely force you to reach way out of your comfort zone to learn new things. Just because a new project is written in a language that you’ve never used before doesn’t mean you are not qualified to be on that project. Learn the new things, and be better for them.

Action Item 6: Always be Learning Something Else

Outside of your formal education, and whatever it is you are doing during the workday, you should always be teaching yourself something else. There are a ton of free online courses covering just about every aspect of modern software development; there are even more books. You should always be learning something new. In general, keep in mind a mental map of all domains within computer science, and make an effort to learn something from every domain. When you’ve covered the entire breadth, start going deeper.

Action Item 7: Practice Project Management

In addition to building software yourself, you need to start practicing the art of orchestrating others’ talents. Even if you aren’t already an official project manager within your organization, you can always manage projects informally. Start by just asking your manager to lead, or co-lead the next project and work from there.

Business Acumen

Knowing how your software applications work is only a small slice of the things you should know as a CTO. Understanding the business of software and business principles at large is at least as important — if not much more important — than just being a technical whiz.

Action Item 8: Get an MBA

The most dense way of signaling you have an understanding of business fundamentals is by earning an MBA. Ironically though, MBA programs offer the networking aspect of their experiences as the most important reward - not the education. For this reason, I don’t think an early career engineer should necessarily quit working for a couple years for a full-time MBA program. The value of 2 years’ software experience is much more valuable than the 2 years of business education.

Instead, I think a part-time Executive MBA program might be a particularly well suited for aspiring CTO candidates. After you’ve established yourself as a high caliber senior engineer, and maybe when you’re already well positioned as a leader within your organization, you should consider gaining a business education. A strong technical degree and background coupled with a business degree — especially one from a technically oriented university like MIT, UC-Berkley, Carnegie Mellon, etc. — would be quite the compelling background.

Action Item 9: Work for a Startup

If you really want to get hands-on business experience, then I highly recommend working for (or founding your own) software startup. If you are young — without many dependents — and can afford the risk of running in the software fast lane, you will learn more about the end-to-end business of software than doing just about anything else.

Some successful CTO’s of mid- to large-sized companies actually started out as CTO’s of startups and gradually moved on to incrementally larger companies. This is another valid approach, but it doesn’t obviate the above points. Additionally, there is a slew of enterprise-level concerns that you will simply not encounter in fledgling startups, so it’d be wise to mix experiences in both small and large companies.

You Should be Able to Build a Team

The final point I’d like to leave you with is one of recruiting: as the chief advocate you will be asked to build an effective team through which you will execute your vision.

Action Item 10: Recruit for Your Current Team

The best way to practice building a team is to start recruiting right now. I don’t care if you are a junior engineer in a huge firm - you can always recruit others to join your team. In fact, you probably have a company incentive policy that rewards your efforts to bring in others to the team, often via financial bonuses.

If you have no idea how to start recruiting talent, have a talk with someone on the recruiting team at your organization. I’d be willing to bet they’ll be more than excited that someone from engineering is interested in helping them out.

If you’ve been following the advice above and have an active personal brand, then leverage that brand to start drumming up interest in the open positions on your team.

This is Not a Race!

In summary, here are action items I’m suggesting to aspiring technical leaders:

  1. Regularly Contribute to a Blog
  2. Practice Public Speaking
  3. Be Empathic and Work to Build Durable Relationships
  4. Get a Technical Degree
  5. Build Visible Software
  6. Always be Learning Something Else
  7. Practice Project Management
  8. Get an MBA
  9. Work for a Startup
  10. Recruit for Your Current Team

My plan is to work toward each of these points over a 20 year span, and I’d be happy to have 7 or 8 of these mastered/completed by then. Likely, most CTO’s don’t have all these items checked, but they all have some of them. Working methodically, continuously toward each of these will absolutely improve your career, of that I have no doubt.

If you’d like to stay updated with my progress as I work toward this goal, feel free to subscribe below - I’ll be writing a couple times a month on the lessons I’ve learned as I journey toward the role of chief technologist.

If you have any thoughts, comments, or personal experiences from your own journey, please let me know! I can always be reached at quentin@qdonnellan.com.

To all those currently working toward a similar goal, or just beginning: Good luck!

Subscribe

Every couple of weeks I'll write about my experiences from a career in software engineering, sign up and get my next article emailed directly to you!

Subscribe!

Every couple of weeks I'll write about my experiences from a career in software engineering, sign up and get my next article emailed directly to you!