This is a work in progress! Bear that in mind.

HCI Design Every Business Decision

  1. Think about Human-Computer Interaction Design when making any decision.
  2. Ask yourself why → how → what.
  3. Do needfinding and talk to real people.
  4. Conduct interviews to define a problem.
  5. Write down personas and scenarios.
  6. Ideate → 25 stickies → 3 sketches → 1 final sketch
    • you and write down 25 ideas – no judgement
    • do some affinity mapping
    • you isolate down to 3 of them sketched out
    • you make one final detailed sketch to prototype
  7. Storyboard and mind map.
  8. Implement an MVP.
  9. Do RITE testing (rapid iterative testing and evaluation)
  10. Problem before solution: understand the problem before designing the solution.
  11. Address your riskiest risk.
  12. Complete required periodic tasks to maintain your company before working on improvements. Unless there’s no product market fit worth maintaining, in which case find PMF.
  13. Complexity kills.
  14. Keep Cognitive Biases in mind.

Team Management

  1. Promote a constantly moving distributed team.
  2. Delegate all tasks. As a CEO or engineering manager, you should only prepare, communicate, review, merge, and iterate on coding tasks. You need to context-switch a lot, so don’t assign yourself self tasks. Management is your role not coding. The schedule of a startup CEO and engineering manager and the schedule of a developer look very different.
    • heuristic1: only engineers should be assigned trello cards and subtasks, not you
    • heuristic2: assign every trello task/subtask to an engineer
    • heursitic3: turnaround time for feature requests from bizdev should be around 1 month on average — otherwise your startup isn’t iterating in a RITE fashion
  3. Generously give feedback to new team members even if it’s way off. Mastering this art of delegation and feedback makes you scalable.
    • You can even ask them to undo wrong work. This is an investment in their training.
    • It’s an art to delegate work to a person and give feedback to them to get them to achieve an end, rather than do yourself.
    • But, make sure you delegate the right things to the right people.
      • Think about what each person would like and be able to do, and delegate accordingly.
  4. Let engineers make time estimates (in hours or days), multiply them by 3, and then set trello card deadlines.
  5. Leverage TV (task visualization) and MPST (minimum possible subtask breakdowns) to make better time estimates.
  6. Add developers to your github repo but use a wiki (to update) establish rules of the codebase.
  7. Use a careful feedback sandwich to keep morale high. As clichéd as it is, it works very well, as long as your compliments are genuine and growth mindset oriented.
    • For example, say you don’t think someone did a good job with content. But, you think they were very organized in their presentation. Then you can say to them that you thought their organization is strong. But, improving content in particular ways will significantly bolster the content depth of the well organized presentation.
  8. Remember that every time you give feedback, it’s an investment in your team.
    • Over time new members will know the codebase better and will code in the way the team expects them to.
  9. If an engineer fails to to do a task after 2 chances, let them go, so your team is pruned: clean and strong.
  10. If your team gets into debates a lot then: always use an hourglass when holding discussions. It’s a round robin, and each person gets 1 minute to talk, where they can’t be interrupted. Minimize discussion and focus on people’s strengths.
  11. Always congratulate team members in front of their peers when they achieve a significant feat.
    • For instance we congratulate engineers in our network when they get a client.
    • We give them even stronger praise, in front of all their peers, when they successfully convert a free trial client to a paying client.
  12. Praise team members for collaborating.
    • Silo’d organizations suck. We encourage you to collaborate groups of people that make connections on their own and collaborate.
  13. Inspired by the 5 levels of remote work, we encourage you to setup slack based check ins. They are little slack bot reminders that encourage your team to write an update in a channel at a specific mutually timezone convenient time on weekdays. This facilitates real-time text based communication for critical items that aren’t well served by otherwise asynchronous slack communication.
  14. Leverage effective tools for collaboration. For instance we use:
    • Google Drive, especially sheets and docs
    • Trello, where each board has the following lists:
      • to do, in progress, done, in review, completed, think about later
    • Box for large files
    • Slack for communication
    • Google Analytics and Webmaster Tools for site traffic analysis and decision making
    • Zoom for recorded webinars (see here for our first webinar)

Recruiting and Hiring

  1. Even if engineers are skilled and responsive, you may not want to put all eggs in one basket.
  2. Interview, try, and hire multiple engineers.
  3. Assign engineers pieces of work so that you can evaluate them. And so you can get the right cultural match and work dynamic in place. Some LD-specific advice:
    • You can tell them to spend no more than X number of work sessions on a particular subtask to keep costs under control.
    • You can and even should reject work sessions you are not satisfied with within 2 days.
    • This way you can build up a team of distributed engineers who are familiar with your project codebase.
      • at least one of whom can help at moment’s notice, even if some engineers don’t stick around

Customer Success

  1. No response to a client or customer should be custom.
  2. Learn from every situation and add it to a standardized but detailed customer support handbook.
  3. Answers for new questions / scenarios should be developed, standardized, and documented.
  4. That way, in future, you don’t have to reinvent the wheel, and can use the standardized response.
  5. In addition, add each Q&A pair to a public FAQ document or portal for your customers.
  6. You should do all this so you can focus your time on important, scalable work.
  7. Now, when truly new customer situations come in, they are rich feedback to learn from.
    • They can’t be answered by standard responses.
    • You may even need to modify your product or processes.
  8. Deal with negative events like customer complaints, team complaints, rejection, hacking, legal disputes, blocking (i.e. when your clever guerrilla marketing is labeled spam), etc. as feedback on the robustness of your system (a regular expense, not to be personally affected by)
    • Don’t waste days on a negative event – write down the steps to resolve the matter over the next few days, and deal with it as a daily chore.
    • Collect as much info on the offending party / incident asap and counter it diplomatically.
    • Don’t let one incident stop you from enjoying everything else which is going great.
    • If you personally don’t get flustered and waste time, you and your team will be better equipped for customer success.
  9. Anticipate concerns that your customers face, and message them with an answer in the following format:
    • If you are concerned about [something you know they are concerned about], then you can overcome that obstacle by doing [A and B].
    • For instance we message our engineers saying: If you are concerned that you haven’t been invited to interviews by any clients, then you should send your profile to peers in this network for a peer review. Remember when the client’s first impression of you is through your profile so you want it to look good.
  10. Leverage effective SaaS tools to streamline your customer service. For instance we use:
    • Zendesk and Zendesk Chat for customer support
    • Calendly for customer appointments
    • Hubspot CRM for keeping track of leads and customers
    • HelloSign for digital contracts
    • Freshbooks for digital invoices
    • Mailchimp for sending non-spammy mail
    • Twilio for sending automated reminder texts
    • Slack for coordinating work for clients
    • Rocketreach to get potential clients’ contact info

Software Development

  1. Before sending important messages or pushing code take a few minutes to:
    • scan each piece of what you have done calmly,
    • walk through a few scenarios,
    • and see that it makes sense.
  2. Don’t rush because you’ll just pay for that time down the road when correcting mistakes.
  3. Follow this guide to engineering management which covers DevOps, Continuous Integration, linters, unit tests, end2end tests, package management, logging, a dev testing environment, a protected prod server, and organized peer code reviews on github.
  4. Specifically, regarding organized peer code reviews on github, we recommend all tech teams maintain a github wiki. The wiki should have certain heuristic questions, best practices, and rules to check during code reviews.
  5. We recommend blocking pushes into master until at least 3 team members approve a pull request (PR). During the peer review phase, we recommend that the 3 team members go through the project’s “wiki rules” and make sure the pull request’s diffs respect them.
    • Code, unit tests, end to end tests, linters, and static analysis scripts will run.
  6. When approving code from a development environment to production, your team will need to do the following at minimum:
    • Manually test features (that were pushed after the commit currently deployed to prod) on dev server if possible.
    • Manually click into all tables on database admin to make sure there are no migrations errors.
    • If it’s a major deploy affecting many cron jobs, you may want to do the following:
      • comment out all the crons
      • go through each cron one by one and uncomment it if it’s trivial
      • or run it once in the shell if it’s not (control C if something’s going wrong) before uncommenting
    • All your crons are now are tested on development and uncommented.
  7. Test Driven Development: when you assign work, you need to assign / tell developers to write corresponding e2e for views and unit tests for crons.
    • Even if you are making an exception, you need to explicitly note the exception in the test file.
  8. No piggybacking in pull requests.
    • By this, we mean that you should have one pull request per new feature.
    • Do not piggyback some quick but unrelated fix into an existing pull request — create a new pull request for this.
    • As a team reject such piggybacked PRs .
  9. Overconfidence, unilateralism, sloppiness, and arrogance to not ask others questions, for help, or for a peer review of important things like critical code and work assignment is not acceptable.
  10. Only do or assign work once you’ve understood it.
  11. Nobody can be responsible for monitoring you – you have to ask others.
  12. Never touch a database migrations folder! Let it be autogenerated.
  13. Leverage effective tools for coordinating code version control, continuous integration, and deployment. For instance we use:
    • Github for source control
    • AWS Code Pipeline for continuous integration
    • AWS Elastic Beanstalk for hosting

Marketing and Sales

  1. Decide on a sole goal (the uncontrollable goal).
    • You don’t know whether you’ll meet this goal because you don’t have control. (i.e. get 10 new customers / day)
  2. Recite your sole uncontrollable goal weekly.
  3. Decide on what you’re going to accomplish this month that will help you achieve your sole goal (the controllable goal).
    • You are in complete control of this goal. (i.e. write one major blog article, implement 2 features, etc.)
  4. Recite your monthly controllable goal weekly
  5. Marketing activities should be prioritized over engineering new features, once you have product market fit. These may include
    • SEO
    • email based outreach
    • outreach in specific groups and communities
    • outreach to people who publicly express needs that match your product
    • referrals
  6. Those marketing activities will bring you customers, what your growing startup needs most.
  7. Reserve a few days (i.e. Mon-Thu) to focus on periodic marketing chores, and a few days (i.e. Fri-Sun) to focus on design and engineering improvements.
  8. The caveat to the above is if there is an urgent client need or piece of feedback.
    • Say the situation is so dire that most of your customers have this need.
    • Or that you’d be able to 10x the number of customers if you address this need.
    • In that case, stop doing periodic chores and declare a state of emergency.
    • Buckle down on addressing those needs with major design changes and pivots.
  9. Use referral systems to grow your customer base. Ask your clients to talk about you in the right circles.For instance at LD Talent we offer clients the following ways to gain free credits:
    • refer a friend who becomes a paying client and you get $100 in credits
    • write a testimonial, google review, facebook review, or product hunt review and you get $50 in credits
    • write content on quora, medium, or reddit featuring your positive experience with LD Talent and you get $50 in credits
  10. Maintain a blog. Get your team to write about topics that your customers want to read about during the 99.9% of their time when their not specifically searching for your product. Note, this is not the same as writing about your product. But also include:
    • newest product details (example)
    • interesting and latest customer case studies (examples)
    • major brand / cultural pieces on your blog (examples)

Operations and Finance

  1. Be transparent about wanting to compensate your whole team fairly and in a timely fashion. For instance we explicitly post in front of all our globally distributed team the following message monthly:
    • “A reminder, please report to us directly if ever you are ever having trouble receiving payments in your country. We will work to correct the situation ASAP.”
  2. Automate whatever you can. Compute time is way cheaper than human time. Caveats:
    • Don’t spend time automate a process, if you’re still testing whether that process is necessary for your company.
    • Do a process manually on a periodic interval. If it is worthy of being automated, only then automate it.
    • Until then, do the task manually to test its value. At LD Talent, internally, we dub this wizard-of-oz-ing of routine tasks as “mancrons”, short for “manual cron jobs”.
    • They are only automated when the cost of automating it is lower than the value of the time saved adjusted for the confidence we have that that task will stick around.
    • Examples:
      • We automate reporting the balance funded hours clients have because that is a task that is easy to automate and is a task that will always exist for our business.
      • We do not automate reviewing resumés of new candidates, since that is too qualitative and complex a task to automate at this stage.
      • We do not automate sending holiday greetings in slack channels, since it is infrequent and special enough that it is not worth automating.

Branding

  1. Strongly encourage your entire organization (team, customers, investors, advisors, etc.) to follow all the company social media accounts: facebook, linkedin, twitter, youtube.
    • Tell them what they will gain by following.
    • For instance we tell our network that following our fb, linkedin, twitter, youtube, and blog help you identify:
      • who’s good at what within our network, as well as
      • what are the most effective ways to leverage the network

Culture

  1. Build your distributed team culture in small ways, like custom slack channels. Here are some that we have in our organization:
    • skill related: #skill-android, #skill-blockchain, #skill-datascience, #skill-django, #skill-ios, #skill-javascript, #skill-css, #skill-ml, #skill-node, #skill-python, #skill-react, #skill-reactnative, #skill-rubyonrails, #skill-scraping, #skill-selenium, #skill-tensorflow, #skill-unity, #skill-vr-ar, #skill-windowsdev, #skill-csharp
    • location related: #ldt-africa, #ldt-east-asia, #ldt-europe, #ldt-latin-america-caribbean, #ldt-middle-east, #ldt-oceania, #ldt-south-asia, #ldt-southeast-asia, #ldt-us-canada
    • fun ones members requested: #spiritual, #worklifebalance, ldx-jokes #ldx-music (where they are free to share music from any part of the world), #ldx-films #ldx-books #ldx-memes #ldx-gifs, $ldx-pairhelp (where folks can collaborate on work as pairs and triplets),
    • business related: tips-marketing, #tips-sales, #tips-engineering-management, #tips-hr, #tips-operations, #tips-finance, #tips-bizdev, #tips-branding, #tips-customer-success, #tips-design, #deals (which has special perks such as free credits to 3rd party services useful to startups)
  2. When evaluating your or any business, you should start with the following four criteria:

Positive Psychology and Happiness for Entrepreneurs

Software engineering, entrepreneurship, and innovation can at times be stressful lines of work. Check out some of these resources for a thriving mental health:

  1. a B-School Happiness Course on Coursera (there’s another one on Coursera by Yale but I took this one)
  2. your life is a work of art (by me)
  3. top pleasures in life
  4. old people discuss regrets
  5. how to make a year last longer
  6. the evolution of anxiety
  7. how to stop giving a f*ck what people think
  8. what does it mean to be part of something bigger than yourself
  9. happiness unlimited
  10. cognitive behavioral therapy – new information processing mechanisms that challenge distorted thoughts and assumptions
  11. combatting negative thoughts
  12. subtle art of not giving a f*ck
  13. healthy sleep tips
  14. for focus and productivity we endorse the Pomodoro Technique

Daily Chores for the CEO

So, how do you orchestrate all the above in the 10 working hours of the day? Well you need a sophisticate interwoven schedule.

  1. Monitor your social networks and the news.
    • This is the order I follow: whatsapp, instagram, google news, sms, facebook, email, linkedin.
  2. Decide up front which emails you respond to. For instance, I run a network of software engineers for hire, and I only respond to:
    • engineers who want to join the network
      • I have become better at giving feedback to engineer resumés that need changes, in order to maintain the quality of the network.
    • potential clients looking to hire a developer or data scientist
    • entrepreneurs, tech teams, and labs that may be potential clients down the road
    • venture capitalists and incubators that may list our network a resource for their portfolio companies
    • cool influencers and researchers whom we can connect with, interview, and write about on our blog
    • opportunities where I can easily do some good karma
      • the person’s ask is clear to me
      • I can easily help the person through an introduction, resource, or tip — within say 3 minutes
      • the help I’m offering is something that most others wouldn’t be able to easily provide, so I’m in need
    • … all this being said I still subscribe to a lot of relevant email newsletters, google groups, etc and read email titles (and sometimes even email bodies) to keep up to date with what’s going on.
  3. Check slack in a special round robin fashion using keyboard shortcuts.
    • Designate a set of channels you check every:
      • day
      • week
      • month
    • Check channels appropriately based on how much attention they deserve.
    • Use the keyboard short control+down-arrow to whiz through channels.
  4. Reflect for 1 minute: Are you working on the right thing?
    • This to pushes you to challenge your assumptions about product market fit and the need for your startup.
      • Think of the ways you can fail. Figure out how to prevent them.
      • Are any of your assumptions dumb?!
    • But don’t take this thought exercise so far that you become unstable.
      • While many startups fail because of their wrong assumptions, Hiten Shah explains that over-pivoting was his billion dollar mistake.
    • Balance is key.
    • Most important of all, make sure you approach work in an agile and iterative fashion. Ask yourself:
      • Are there any features you can cut for this launch to save time? Remember the 80/20 Pareto Principle.
      • Remember to talk to people about your ideas. Talking to people, rather than living in a box, can speed you up 10x, as we learn so much from others. I learned this from Andrew Ng when taking his Deep Learning course at Stanford University in 2018.
  5. Invite people to like your page on facebook or linkedin or producthunt. Invite people you’ve recently talked to on a call or on chat. I’ve found that if I invite someone who I recently talked to, they are a lot more likely to like my page than if I haven’t spoken to them for years.
  6. Announce a Tip of the Day to your distributed team in slack. This helps you create culture over time. For instance I give tips on the following topics:
    • remote work
    • happiness and mental health
    • help-seeking and feedback
    • tools
    • dealing with difficult situations like illness or motivation
    • interesting and fun slack channels to join, like jokes and films and donut
    • communication
    • organizing your digital infrastructure from cloud storage to continuous integration to SaaS accounts
    • lifelong learning
    • rewards and bonuses for doing cool things that help our organization
    • HR policies
    • supporting our companies social media
  7. Monitor your companies help desk chat (i.e. Intercom or Zendesk).
  8. Every week, check all your bank accounts, payment accounts, and anywhere you store money.
  9. Check in with blog writers on your team.
  10. Check on your server logs, alerts, etc. In AWS this is in Cloudwatch.
  11. Check on your database data and cron logs in a database admin.
  12. Congratulate high performers in slack in front of the team.
  13. Every month, share your brand colors so team members can modify their slack theme to fit your company’s brand. Slack will auto-format the message to allow for easy theme switching. For instance we send the following message:
    • You can change your sidebar to match the LD Talent brand if you would like:
    • #202020, #CC8C72, #85BB65, #FFFFFF, #B3816D, #FFFFFF, #C8FFA8, #85BB65
    • If you do this, then please message your ldc/lde channel with feedback, we’d love to know how our branded slack theme feels day to day.
  14. Check who you have calendly calls with tomorrow. Remind them saying “Looking forward to our call tomorrow!”. This will save you from a lot of missed calls!

Cover image citation: https://pixabay.com/photos/mantra-nepal-buddhist-himalayas-139634/