Async Tech Diligence
Here is our live tech diligence doc for you to use as you see fit!
We have two deals in progress at the exact time I happen to have taken the first real vacation in two ish years. I'm in the UAE which happens to be 12 hours ahead of pacific time. It's a pretty time annoying difference to schedule calls.
One of the biggest challenges about tech diligence is that:
- It's basically an impossible task to get 100% correct.
- People are precious about the code and don't want to give us access to poke around.
- There's almost always something super hacky they forgot they did. And some universal law forces us to find this out at a super inconvenient time at some point in the distant future
I have been doing these tech assessments remotely anyways and last night as I couldn't sleep, walking around that mosque (which had the most amazing padded walking path... everything here is so new and nice!) it dawned on me that I could just do tech diligence async.
Here are the questions I came up with (again, couldn't sleep) late last night. We're going to ask people to record these as videos so we can reference them later. It should be less work on the seller, as well as less work on me to cram everything into a zoom session while asking someone to randomly open files.
Instructions:
Please cover as many of the following items as possible in video format, showing as much code as possible and where relevant, showing the code, and then the corresponding UI. Don’t worry about production value. An unlisted or private link on youtube works great.
If something is not relevant feel free to skip it, or if there is something omitted here you’d like to highlight feel free to embellish!
The goal here is that we as the new owners would be able to watch this video and reasonably understand how to add a new feature, build, and deploy it to production.
Front End
- What technologies does the front end use?
- Any tricks to starting the front end?
- Which are the key 3rd party components used?
- How is authentication with the backend done? Sessions? Bearer token?
- Please walk through an example of fetching data from the database and displaying it in the UI.
- Please walk through an example of user-input getting sent to the backend.
- What’s one ‘hack’ you had to do to get something to work.
- If you had to refactor one area of the application where would that be?
- How do you develop locally?
Back End
- Data Models
- Please go over key data models and relationships.
- An ERD diagram (even an auto generated one) is really helpful.
- APIs
- Please walk through an example of fetching data from the database.
- Please walk through the most complex create or update process.
- How does authentication work?
- What is the most critical path in the system?
- If you had to refactor one area of the application where would that be?
- What’s the ‘hackiest’ thing in this codebase?
- How do you develop locally?
- Any tricks to starting the api?
Dev Ops
- How do you deploy to production?
- Where are keys / secrets stored?
- Walk through your CI/CD set up if applicable.
Other Areas (ex. Chrome Extension, Queue, etc)
- If it’s a front end type thing like a chrome extension, please use the front end section above. If it’s more like a back end service use the back end section above.
Did it work?
Not sure yet. We have one deal properly closing this week and I'm going to use this as a handoff doc. Documenting code sucks, and doing it all half-assed to rush to meet the transfer deadline typically results in really shit documentation. The only exception to this was the Workclout team who really put a lot of work in to great documentation.
The second deal, I'm going to use this guide as the initial overview of the code. So this doc will be both a handover doc with sufficient detail as well as an initial diligence doc.
An Ask:
I'm sure I'm missing stuff, and will add to this doc over time, but i do think doing this async is not only possible but it's more efficient than scheduled interactive multi-hour zoom calls.
If I missed something, or you have some killer questions you ask, please ping me and I'll add it to the doc!
Have a great weekend.
✌️,
Andrew