Patterns of Software Consulting
I started working as a software consultant a little over a year ago. During this short but transformative time, I have had the great privilege to work with amazing people first at Kisko Labs and now at Wunderdog. These are the general patterns of great work I've picked up from my fellow consultants. They are not detailed practices you can apply directly to your current projects; implementation is always going to be context specific.
You can also try to make your own list of patterns. It can be a great opportunity for you to identify what should be the core fundamentals of your day to day work.
Pattern 1: There's no handbook. Software projects are creative work, and therefore have no manuals or processes that apply perfectly to your current situation. Learn to iterate.
Pattern 2: Writing code is a balancing act between technical debt and business value. You can do the quick and easy improvements and avoid rewrites, but most importantly, you should learn to live with the inevitable messiness of your codebase.
Pattern 3: Mastery sustains motivation. We all have a strong desire to get better at our work and develop our skills. Don't ignore your or your teammates' ambitions towards mastery and craftsmanship.
Pattern 4: Respect the people around you. They all have perspectives, wish for joy, and want to feel appreciated, just like you.
Pattern 5: Discuss work. Dedicate time to review your ways of working. These situations are opportunities for a team to go from good to great.
Pattern 6: Don't overpromise. Instead, manage expectations and build trust with reliability.
Pattern 7: Visualize work. Out of sight, out of mind. You pay attention differently to budget, deadlines, and scope when those things are visualized and presented (made inescapable) to your client and all your team members.
Pattern 8: Deliver usable things. Iterative product development means we try our best to deliver usable versions of the product we are building from day one.
Pattern 9: Deliver regularly. A consistent delivery schedule keeps the momentum going for your team and for the client.
Pattern 10: Become aware of your defensiveness. We stop giving advice and feedback to people who don't seem to listen to what we have to say or who pretend to know everything.