What are the strategies to keep developers engaged and challenged?

I have found the developers often go into start up situations for the satisfaction of solving complex technical problems. However this can sometimes conflict with business objectives when sometimes the smartest thing to do in a business sense is to use the most simple approach to get something done in the shortest time possible. This desire is even more difficult to facilitate when using a lean start-up approach as it dictates a disciplined measured approach to product development. This can sometimes kill the excitement of building cool stuff.

Are there any strategies that can be used to strike a balance between these two competing motivators?

The engineering skills required in an early stage company are different than those in a Dropbox or Uber. An engineer building MVP stage products needs to be scrappy, fast, and product and market focused. An engineer looking to build a massively parallel system shouldn't join a company that has no revenue or customers. It's going to be a while. So you need to set expectations or find different engineers.

There is actually a lot of challenging engineering in the early stages. You just have to be clever about constraints and ruthless about scope. Building a simple, fast and responsive site can be pretty challenging if you haven't done it. Building small replaceable back end components can be challenging. And all the data and analysis capability can be challenging too. So it depends on what technical areas are considered interesting to the engineer.

Engineers are people and no one likes to pour their soul into a product nobody cares about. So you can leverage that sentiment as well in explaining the need to lean and agile process.

But no matter what, being in a startup requires the maturity and discipline to knuckle down and do what's needed. If that's too hard, go work in a big company somewhere.

1. Educate engineers about user experience. UX and engineering are related but different problems. I have all of our engineers read Don't Make Me Think and Designing the Obvious so they start to get a sense of UX. We also include them in user tests so they can see what users are saying.

2. Share the business goals. Your job as a founder is to communicate over and over and over again to build alignment. Remind the entire team, not just the engineers, what the next milestone is. Then share how their work contributes to that milestone and why that milestone is important for the mission of the company.

When you are starting - I suppose you wouldn't have a team of more than 10 people (a typical cross functional team). Now all these 10 people should be very well aligned to company's vision, strategy and it's way of working. Else they should not be working there.

There should be no closed door conversation. The team should know everything, your idea, problem you are solving, customer segment you are targeting and solution you are building. Also take time to explain why are you building only that particular solution/feature [reasons from your solution discovery phase].

Now my company helps develop "MVP" for startups, and initially I had the same issue with my team, but with constant education - explaining the "why" behind a product/feature/user story made them aware of what MVP really is.....now they are constantly challenging the requirements ;-) in our Sprint/Release Planning.

So essence is to take time in educating teams and align them with your company's vision and strategy and involve them in every step possible.

Sam McAfee laid it out pretty well IMO. I'd add one thing to his reply ... the best thing you can do is hire right. I've found there is such a thing as an early stage engineer. You won't need to create unusual techniques for keeping them engaged (for reasons Sam articulated)

In my experience it really comes down to motivation around the right things.

First, you need to sell your employees on your vision and get them focused on the end goal. Then you need to plan in a steady stream of successes. Not just milestones but points they can reach where they get a real feeling of accomplishment for reaching that goal. It should have some kind of visible impact on your customers, not just a goal made strictly from a technical viewpoint.

Developers who get focused on their 'craft' rather then the business goals are simply not motivated correctly, or mismanaged in other ways. It all comes back to leadership.

That said, yes there are traits you can hire for, but I've seen all types of developers come around and really get on board with the vision and maintain focus given the right leadership.

Narjeet hit on a key point which is to share what's going on with everyone. Make it their company. Find ways to show the impact that they are having in a real, tangible way. The most successful startup I worked at, revenue numbers were pretty open, as in we had large screens showing how much money we were making at that very moment, broken down so everyone could see where it was all coming from. This really motivated and focused people. It drove home just how much responsibility their teams had, and the impact it made on the business. People would be cheering when the numbers would jump up, or when they went down you would see people immediately going to find out why, and on their own without anyone asking.