Potential Consulting Client Questions
There is a process that kicks off after I hear that a company is looking for help with their Elixir project. This process usually involves a series of emails and calls. During this process, the prospective client will have many questions for me. Some of these questions will be straightforward logistics: availability, costs, verification of technical skills, etc. Hopefully, they will also ask a bunch of questions to understand if and how I might be a good fit for the company’s values, culture, and needs – ideally filling a gap they have identified outside just of an additional set of Elixir hands.
I will have my own series of questions to understand the client’s current situation, what they are looking for, and if it’s a good fit for my interests.
When doing these kinds of interviews, it is essential to be deliberate about what questions you want to ask and what you are trying to learn from each answer. Time can fly by, and it can be easy to fall into a casual chat that might be entertaining but not helpful towards the decision to be made.
Additionally, this is the client’s first impression of you. If you can show up, be well prepared, and ask solid questions alongside implied suggestions for raising the bar, it will come off well.
Aside: I’ve worked as both in individual contributor roles as well as team management roles. All of these questions are relivent to both, but if I am in a manager-level role, I’m likely to have more influence.
Company Background Questions
Who is CompanyX, who are their customers? what do they sell, what is the pitch/positioning? Why do they serve these customers and needs over something else?
Why: Basic background questions. We all have some industries and customers that are more or less attractive to us. I have a personal value of Meaningful Work, so the better the client aligns with my perspective of this, the better.
Is the company owned privately or by venture capital/public stock? Is there a parent company? What phase is the company in? Is it profitable? Trying to find market fit? Is there a growth target on the horizon?
Why: Knowing the company’s financial situation helps me have some context around the project. For example, if the company is investing in exploration or market fit, there might be more appetite for quicker prototype turnaround over production-ready software.
What are the company’s core values? How are those values demonstrated in day-to-day actions?
Why: Having a detailed expression of your company values helps those who contribute to the company fill in the details as they do work. With the values defined, it is easier to reconcile a problem with a particular solution when you can ensure it aligns with the company values. Without defined values, people start to substitute their personal values, and when that happens across the organization, a lot of friction is introduced because the values and the solutions they derived do not align.
Name an aspect of the company’s culture that you love and something that you think should be better. What experiments is the company actively doing to improve that unsatisfactory element? How does the company come together to identify and work towards improvements to day-to-day processes?
Why: I have a personal value of Continuous Improvement, and so I would hope to work with a company that has some process in place for ongoing reflection and experimentation towards improving themselves. This can come in many forms, but a traditional format is regular team retrospective meetings or 1:1 meetings with team leaders.
Can I see or demo the software product I’d be working on? Can you give me a demo (live or previously recorded)? Are their publicly available customer support pages?
Why: I’m trying to look and see how polished the user experience is. I want to know some specific things: Does it work in multiple browsers? Is it responsive? Is it fast? How do the forms look and feel? What is the error/validation experience for these forms like?
Team Process Questions
How many developers are there? How are projects and teams organized? Is there an org chart? If so, can I see it? What about this organization style is working well? What challenges does it introduce? What does my position in this look like? To whom do I answer to?
Why: This is a kickoff question more than anything. My historic clients have extremes, some with 100s of engineers and large team structures and some with very small teams. The key questions are built to inform the knowledge of what they have and how I would fit in.
Is the team fully remote? Do we ever have in-person retreats?
Why: I’m working with the assumption that I will only ever work remotely, but it is good to know if the whole team is remote or if some work together in an office. I’m a big fan of retreats to help build camaraderie, so if the team is remote, I would hope they have retreats on occasion.
What is the company’s proficiency ratio between senior level / mid level / junior level developers? How does the company/team prioritize individual learning / improvement?
Why: Seeing a healthy mix here is an excellent sign. Specific allotments of time/resources are also nice. A good answer might include that education goals are captured in manager 1:1 sessions and, when possible, assignments are reworked to allow an individual to get experience in a topic of interest (ie: deployment, documentation, testing).
How do you plan and track work? Who decides what to work on / prioritize? What is the process like from napkin idea to deployed feature? How do you make time for refactoring / experimentation / learning new technologies? Where am I in this process?
Why: Again, I’m looking for alignment with my personal value of short feedback loops. Also good to understand my position in this flow. Ideally, I’m near the top and have an opportunity to influence the shaping of the features. I’m particularly good at discovering edge cases for new features, so the better a client can get that out of me, the better value for their dollar.
How do you measure/guess/estimate how much work can be done in a given timeframe/sprint? How do you understand the team’s velocity? Is this working well for you?
Why: There is a balance to be found regarding software estimates. It will be curious to hear how the company currently does this. I prefer measuring some kind of points / complexity size on tickets along with historical data to help inform the contributors what the team has been accomplishing sprint to sprint. But in that same breath, the group decides the sprint’s scope with possible stretch goals. It is NOT about Amy doing X points and Bobby doing Y points. It is about team velocity. Once you start pointing out individual numbers, team members stop doing acts of generosity (helping answer questions, pairing, code review) in preference of more selfish goals.
How do teams communicate internally? With other teams? How is knowledge captured and shared? Does everything live in Slack, or is there more structure?
Why: I hope there is more structure than just Slack. I’ve done Slack-driven development before and try to avoid it when possible. I don’t have firm requirements on the specifics of the other structure, but I value it being updated with the work as it is done and favor async processes as much as possible. I like the idea of ShapeUp pitches, as it does an excellent job of helping to shape the scope via appetite.
What regular events, meetings, or other team ceremonies should I expect? What happens at these events, and on what cadence do they occur?
Why: I have some specific questions about events I like (sprint grooming / retrospectives), but this is more open-ended so that they can fill in unique events.
Do you have a testing process before new work hits production? Dedicated QA teams?
Why: Good QA teams can add significant value to the software. Not every client I interact with uses them, but asking this and getting a positive answer is a good sign.
After deployment, how do you measure or understand the success of a new feature?
Why: Meaningful work (see Personal Values) is work that solves real problems for people. Verifying the features we worked so hard on are successful in production means a lot. Knowing how unsuccessful features are observed and tweaked is essential too.
Is there a company manual outlining all these processes and the reasons behind them? Can I see it?
Why: I’ve asked how they work over the last few questions, but have they documented it? Is this written down and well-understood across the company?
How does upper management communicate with the company at large? What is the cadence for scheduled communications?
Why: I get value from regular updates on the company’s progress at large. I don’t have a significant preference for the format, but quarterly updates would be a minimum acceptable threshold.
Does the project have dedicated UI designers? Do they work closely with the development team? Is there a standard process for handing off assets, specs, and motion simulations?
Why: While I can do a minimum level of competent UI work, ideally, there would be some people on the team who were focused on designing the user experience exclusively. I’m curious to hear how they interact with the development team and how mockups in a tool like Figma make their way into the code.
How is customer support handled? Do I have any interaction with the customers or their bug reports?
Why: I’m a more customer-focused developer than most (having built my own set of products in the past). Having some vision into the feedback and errors customers report helps me better prioritize future work. When building out a sprint of work, you need to find a balance in addressing customer bugs/feedback, code refactoring, general project de-weeding, and future enhancements. Excluding any of these at an extreme can, overtime, cause issues.
Technical / Code Questions
Do you use GitHub or some other version control? Is there a single repo or multiple repos?
Why: Kickoff question of sorts. I’ve almost exclusively used GitHub but I am curious about GitLab and others.
How do contributors merge in new code? What is the process? Can I see some recent pull requests? What kind of automated code checks do you run? (Test runners? Credo? Dialyzer? Sobelow? Code coverage?)
Why: I want to understand how they branch and do code reviews. I want examples of constructive code review comments and not endless chatter or empty approvals. I want to see that PRs are small and short-lived. I’m looking to see what kind of PR automations they run.
Do you require tests with code changes? What is your testing philosophy?
Why: My personal preference is to test, and test at the user-contract level way more so that validating specific implementation internals. Some places require a 1:1 module to test module design. Others do no testing or have left past test degrade and no longer run the test suite. Good to know where they stand.
How do you deploy? How often do you deploy? Are there dedicated stage-like environments? Can I deploy WIP branches to a temp environment?
Why: I’m looking for evidence of regular and automated deployments. The ability to deploy WIP branches is nice and has been valuable in past work, but it is not something you see everywhere.
How do you observe production? Log capture? Error capture? Telemetry? Flame graph per HTTP request? What aspects of the current observability system are working well? What would you like to improve?
Why: There is a large gradient of possibilities here. Understanding what they have and where they want to be is helpful. Personally, I’m interested in getting better at observability.
Do you write inline project documentation for modules and functions? Do you write other guides or docs that live in the repo? Is this documentation published anywhere? Automated publication? Can I see it?
Why: If they are documenting their domain-level modules and functions, there is a high likelihood they are investing in the codebase’s quality. The lack of inline docs is a bad sign for me.
How do you track work to be done? What kind of issue/ticket tracker software do you use? How do separate idea tickets vs. scoped/shaped tickets? Do you ever have ticket grooming sessions to answer open questions that block ticket implementation? Can I see the ticket board and some current/recent tickets?
Why: We asked broad questions about the process, but this is more specific. I’m looking for a clean separation of tickets in the idea stage vs. the scoped/shaped stage. A good scoped/shaped ticket has all the info the implementor needs to do the work: descriptions of the wanted behavior, things that we are not doing with this work, links to pitch documents, designed mockups, references to people who can unblock questions, a clear understanding of when the ticket is considered complete. Most complex work should happen across a series of tickets: how is that organized/tracked?
How do you track bugs? Who enters these bug tickets? How do you prioritize and schedule bug fixes? Can I see some recent bug tickets?
Why: I’m looking to see how detailed the bug capture is. If the bugs are being entered by customer support, how much info do they transfer? Do they attempt to verify the bug before it is handed to engineering?
Does the team do any pair programming? If so, what tools do you use to facilitate those sessions?
Why: I like pair programming but do less of it than I would like. I use VS Code Live Share but am interested in tools like Tuple.
Do you publish a changelog to the users? If so, how?
Why: Most of my recent clients have not done public changelogs, but depending on the product, I could see them being valuable and challenging to deliver at scale. Curious if the potential client has this need and how they are solving it.
Is there any high-level documentation for the structure or architecture of the application? Can you give me a short code walkaround? Are there specific areas of the codebase you suspect I would be working in more than others?
Why: It will be hard to grok any complex architecture during a single meeting, but getting an overview and some specific guidance on what you’d likely be contributing to is helpful.
Understanding My Role
Will I be in an individual contributor role or a team management role? What does that role look like, and what would my responsibilities be?
Why: I’ve done both, and they are very different. This was probably answered before but listed here for verification.
What observable characteristics would signal a successful consulting outcome? What would signal a negative consulting outcome?
Why: I am probably not their first consultant. Knowing specific quirks about the previous positive and negative experiences can significantly shape what I want to focus on for this unique client.
If I were interviewing for a full time job there were be a whole bunch more questions about compensation, perks, vacation and the like – but these are questions for potential consutling clients so I will not list them.
Hopefully this list of questions has inspiried you to dig a little deeper during your own initial project proposal calls. If you have something I am missing I’d love to hear it.