Michael Wong blogs here

Lessons from APT

  1. There is always a simpler or better solution. Someone else probably knows it. It is often surprising who knows things about the things you care about. Don’t short change yourself by thinking you can figure it out yourself; ask widely. Don’t be afraid that you are wasting the time of other people either. If you ask, people are generally willing to help.
  2. Make your team’s processes as transparent as possible. If you lead an engineering team, set up a good, easy-to-use code repository. Let everyone see everyone else’s code. Most likely you’re not the only person trying to do something, nor is it the only time you’ll have to do it. Sharing knowledge will lead to huge efficiency gains.
  3. Write APIs and stored procedures. Always abstract away redundancies. It reduces error and makes life easier in the future. Understandably putting in this additional effort is often easier said than done, because humans are lazy and don’t want to invest in efforts that only pay off much later. But you should over-automate. If you are not automating too much at least half of the time, that means you’re automating too little on average, and that will impede the growth of your company.
  4. Don’t make smart, engineering-minded people do repetitive, manual things needlessly. It’s a waste of resource. Instead, arm them with the best tools and license them to overhaul your most inefficient processes. Tell them what the company needs done, then let them take charge of the hard problems and solve them for you while you help from the sidelines.
  5. Flexible technologies encourages innovation by users. Users will be able to accomplish really, really cool things with your software if you let them. Engineers may not want to allow users to do something because they worry that users might use it wrongly, but these engineers are wrong. Instead of constraining the user to avoid error, good UI design can provide both user freedom and error prevention. For example, give users good feedback on the state of the program and easy ways to undo errors. If you are a product person, you have to believe that the user is never wrong; it is always the product that is sub-optimal.
  6. There is no better remedy for a problem than concentrated effort. Unreasonable requests can lead to creative innovation. Impatience can lead to efficiencies. Often posing a challenge in a seemly unreasonable way is the fastest way to get other people to achieve their maximum potential. The moments of greatest growth for me when I was challenged this way.
  7. Code review is a fantastic get someone (me) to code better. Start early. Do it often.
  8. Product people constantly juggle opinions and have to sell both ways. Don’t just be the advocate for the user. Go to the user and be an advocate for the software team. Or vice versa. By being accountable to all parties, you gain respect and trust all around and get more done.
  9. When working with data, always write checks to ensure the integrity of your data. You don’t want to discover six months later that you have the wrong number of rows.
  10. Giving constructive feedback to other people is hard to do and even harder to do well. A good way to give feedback is to write down some benchmarks and expectations, and let them know where they stand.
  11. Just say “I don’t know” when you don’t know.
  12. Have a story. People connect with you better that way.
  13. It’s very rare that people ask great questions. However, it’s worth searching for the million-dollar question, for it will pay back in droves.
  14. A long, unproductive meeting sucks. Have an agenda. Get it done. Get out.
  15. Changing an organization is difficult. Even if people know something is broken, they are not good at seeing how things can be done differently. Psychologists call this the availability heuristic - you can only easily retrieve ideas that you have seen before. This is perhaps the more significant form of inertia. It is difficult to build consensus about something unknown. The best way to start change is by changing yourself and showing it to others. Sometimes you’ll have to cajole, sell, evangelize, and coerce as well.
  16. Since change is hard, it’s critical to get things right at the beginning. Mainly, this means building company culture, specifically socializing the way people react to ideas and behavior. Fortunately, APT got a lot of things right.
  17. Most entry-level jobs are about being thorough and detail-oriented. Expect to spend a lot of time making sure your output is perfect. Sadly it is not often that folks are expected to think about the big picture until later on.
  18. Motivating employees is difficult. Pay is a part of the equation, but other things matter a lot: belonging, meaning, ownership, recognition, achievable goals. Perhaps the best motivator is to have good role models who give you useful things to improve upon.
  19. Keep everyone in the team posted about your progress. Use a team task management software, if possible. Properly managing expectations will make you less stressed and help your team run smoother.
  20. Small offices are more intimate and less intimidating, but larger offices give you more people to learn from.
  21. Cross-office communication and initiatives are very difficult. Open few office unless local talent and presence is absolutely necessary. Flying product managers and senior product engineers to different offices is highly beneficial to company unity.
  22. PowerPoints are only good for presentations. As internal documents they constrain ideas. Use written word for internal communications instead. Yet again, flexible and expressive media is better.
  23. Record meetings as videos. It helps people improve their public speaking. It’s also a great way to share knowledge across offices when timezone is a problem.
  24. So much of building a good company is about finding talent, keeping talent, and using talent. Great founders and managers spend a ton of time on recruiting, supporting staff, and building up company culture.
  25. Sales is a combination of understanding the prospective client’s perspective and persistence. Henry Ford said something like the secret to success is to be able to see the world from another person’s perspective. During my time at APT, I’ve observed his saying to be rather true.
  26. Relationships with clients reigns supreme. Cultivate the relationships. Get to know them at more than a superficial level. They will do amazing things for you. APT embraces this attitude and it is one of the reasons for its stellar growth.
  27. The corporate world is bewildering. There can be entire business units in large corporations devoted to doing very little. Politics can be very toxic and lead to little or no information sharing within a company. Things are easily lost within the corporate hierarchy. What gets done depends very much on what the C-level executives care about. Managers can only work within their fiefdom and around on the margins; many just want to protect their jobs. Are competitive pressures just not strong enough to make organizations more efficient? Does the organizational form of American businesses make sense? I don’t know!
  28. Corporate restructuring causes a lot of nervousness and can bring productivity of managers and analysts to zero. The costs of such an exercise is not small.
  29. It is worth it to bond deeply with co-workers. Organize fun activities for the team. Get to know their backgrounds. Fight for their well-being. Help them when they need it. Unfortunately I was too shy early on and I leave with a sense of having foregone the opportunity to develop friendships more deeply.
  30. All in all it has been a good eight months. Taking a more roundabout career path (with a wonderful stop at APT) has taught me a lot. I am rather hopeful that I am getting closer to finding something I love to do.

Read more here. Or send me feedback and comments.