Random Things I Learned Building Software

Easel Corporation 25 Corporate Drive
I remember the moment I realized I wanted to spend the rest of my career building software. I was at my first job post-college, in my early twenties, and in the office at 9 PM writing code. The company I had joined was on the verge of spiraling out of control, I was working yet another 70+ hour week, and my team was under intense pressure for what seemed like an impossible deadline. But all I could remember thinking is: "I can't believe I'm getting paid to do this job!"

In over 20 years, that passion for building software has never left me. I've performed almost every role in a software organization, built some great products, had my share of both successes and failures, made my fair share of mistakes, and continually strove to improve my craft at building software.

Here are some random of the lessons I've learned over the years of building software:

  • Process is friction. Aspire to the least possible friction to achieve business goals.
  • Managers: practice servant leadership.
  • Hire continuous learners.
  • Good processes are designed to be changed from within.
  • Motivated and focused small teams always out-perform large teams.
  • Work with people for whom building software is a passion, not a labor.
  • You can never over hire.
  • "It takes 20 years to build a reputation, and five minutues to ruin it." --Warren Buffet
  • Work with people with integrity.
  • Finding the right process is a journey, not a destination.
  • Engage in constant and direct communication.
  • Focus on the customer, not the competition.
  • Find and follow earlyvanglists.
  • The enemy is outside the gates.
  • Continuously demonstrate your product throughout the development process.
  • Commit yourself disrupted markets, not disruptive ideas.
  • Product management is a company, not a department.
  • Hire smart people and get out of their way.
  • Operate with openness and transparency.
  • Prescriptive process is for consultants, not practitioners.
  • Success is the intersection of luck and hard work. You can control one of the two components of success.
  • Influence is a process.
  • Listen.
  • Never stop meeting new people in the industry.
  • Successful companies are result of series of epiphanies, gained by focus, hard-work and perseverance.
  • No is the second best answer
  • Always have a plan B. Sometimes you even need a plan C.
  • Never stop learning.
  • Big companies: don’t stay so long you think it is normal (thank you Jonathan).
  • Commit. “When your army has crossed the border, you should burn your boats and bridges...to make… clear… you have no hankering after home”. --Sun Tzu
  • If you’re not the smartest person in room, you're doing something right.
  • Have fun.
  • Become an expert at something.
  • Always have a team of trusted advisors.
  • The person you really want to hire is not looking for a job.
  • Life is too short to have your job not intersect with your passion.
  • Vision is a compass, not a map.
  • Continuously test assumptions.
  • Be willing to be wrong.
  • People trump process. Bad process trumps people.
  • Fail fast.
  • Subsume your opinions at the altar of the customer.
  • A series of incremental bets always beats a single big bet.
  • Maniacally manage risk.
  • Maintain a tight feedback loop.
  • Maintain the thinnest possible wall between engineers from customers.
  • While management is necessary overhead, it is still overhead.
  • The single greatest asset in a software organization is: great engineers.

Related Posts: Finding the Minimum Viable Feature (MVF)