How to hire a great CTO or a software architect?

Internal Promotion and External Hiring 

Tom DeMarco once wrote in his book “Deadline”;

  1. Get the right people.
  2. Match them to the right jobs.
  3. Keep them motivated.
  4. Help their teams to jell and stay jelled.

(All the rest is Administrivia)

Getting the right people is one of the most important things when you are managing.

One of his other books (Peopleware) he talks about hiring  a juggler.

“It’s ludicrous to hire a juggler without first seeing him perform, yet when we hire engineers, designers, programmers or group managers, the interview is just a talk.”

Hiring with “gut” is important and two “guts” are always better than one. There I suggest you always do it together with someone from the team. Let’s look at some of the attributes we are looking for, when we hire a senior developer or a software architect.

Planning: Can she act as a Product Owner on projects within his field of expertise. (E.g. Responsible for making and executing a technical road map)

Progress communication: Can she create an environment where others are motivated to share their progress? Leading by example actualized!

Communication of Domain information: Can she communicate the importance of technical matters to laymen, including managers and create support for the decisions?

Goal driven development: Can she create a strong purpose for the team?

Holistic approach: Is she open to change according to new learning?, Can she contribute to new areas of business and new ways generating value? Can she look for alternative and creative ways of saving time and saving costs. Can she advocate for when time needs to be spent and when it is worth it having high costs?

Quality: Can she sets standards for completeness and correctness?

Issue and risk management: Can she see impediments before they happen for her own and other behalf. Can she removes impediments for others? Can she realize when it’s time to stop the project and is able to clearly communicate the importance of stopping?

Decision: Can she make clear cut decisions after discussions and makes everybody believe in the decision. She doesn’t need to pull rank.

And then we bring a white board.  This is where the real fun starts.

IMG_4068

 

Algorithms: Can she understand time complexity and any space constraints? Does she know graph algorithms like Dijkstra and Kruskal? Can she explain advanced graph algorithms like maximum-flow Ford-Fulkerson. Does she know how to apply algorithms in practice?

Data structures: Does she know about hash maps and what they are good for? What problems are a heap structures good at solving? Does she understand data structures like Red-black trees, Fibonacci heaps and radix sort?

Problem decomposition: Does she understand the problem fully and can visualize the solution? Design the entire architecture from the ground up for all aspects of the product?

Edge: Is she active part of the tech community, with maybe a few open source projects under the belt?

Debugging: Does she understand the value of data breakpoints and can if needed debug assembly or opcode?

Fundamentals: Does she know how the garbage collector works, what the AST is and what operations like tree shaking does? Is she very aware of what happens under the hood?

Then we look at the some of the code she wrote, we always ask to bring project samples.

Clean and structured code: Can she decompose the existing code into smaller and more manageable chunks? Smaller and more concise/precise code without resolving to magic.

Knowledge of frameworks: Does she know, how WebComponents can be implemented in a project. Either using native WC of polymer.js ? Can build a application stack using subcomponents like knockout.js, pager.js, breeze.js. ?

We continue on the board again.

Patterns: Can she build a component model for structuring larger code bases? Can she apply pattern to real world problems in order to solve a problem in a better and more organized manner?

Server configuration: Can she debug of web servers like Nginx. Advanced routing. Setting up sharding and clusters for database systems?

Databases: Does she know about systems and concepts like Datomic and graphs based databases? Can identify and fix problems in database configurations?
Network protocols:  Does she have knowledge over the entire network stack from layer 0 to 4. Can debug further down into the stack than TCP and UDP?
And lastly Optimization and Performance strategiesHas she architected a high throughput solution using queues, caching and patterns like Map/Reduce. Knows what the Actor model is and how to apply it.
When we finish the meeting, we sit down and check out our “guts” 🙂
images
Have we managed to see things below?
  • Competency 
  • Enthusiasm 
  • Integrity 
  • Creativity 
  • Collaborative
  • Energy 

We would love to work with people who are doers, and we were fortunate to hire many talented people in the last many years. You might think “Crazy”, no one knows all this stuff, sure some don’t. You don’t need to go for a full checklist. Most of things depend on the size of your organization, your expectations, and so on.

Actually, we have managed to map out the competency list from Junior to Senior all to way to principal. We use this map as our guideline in hiring, promoting, in our education plan and also a crucial part of our assignment plan.

We have a similar competency list for designers, product managers, and marketers.

Thanks for reading.