I don't let design and UX get in the way of shipping early and often

I've never had a customer complain about the design.

It feels worse to have a nicely designed product that does not work as expected (or at all).

I am not a designer. It is not a skill that I care to improve. Instead I would rather rely on the best practices of frameworks like Bootstrap to get me there (at least in the beginning). In my experience design is something to consider later on the the product lifecycle. I am more interested in how things work vs. how things look.

This is how I think about product life-cycles:

Phase 1: Speed, shipping, and finding what makes it sticky.

It is hacky, has duplicated code, and probably some dead code paths. Invite only and only for the most forgiving users. I only need a few users who will probably expose the major flaws here. I usually don't write any tests. I don't add too many third-party libraries or utilities at this point. For me this is just Django and Bootstrap. Use the defaults!

Phase 2: Lay the groundwork for robustness.

Unit tests, application metrics, logs, and repeatable, consistent deployments. I don't have to get everything right, but I must make these decisions and commit to them. Biggest challenge is to keep my early-invite users engaged. The early users and my own testing revals the hot-spots that need more attention (unit tests or end-to-end test).

Phase 3: Make bigger changes with confidence

Now that we have testing in place we can refactor, clean up dead code paths, and redundant  UI code with more confidence. This is a good time to onboard junior developers into the project. Or, in my case, this is when I feel comfortable hiring a contractor to work on "the little things" (tm). Maybe I offer-up another round of invites to a wider network of potential customers.

Phase 4: Prepare for a broader market showing

At this point we have a reasonably stable product. We understand our own development workflow as well as the strongest customer use cases. Now I start making basic user documentation and videos. This becomes the v1 of my marketing materials and social media story-telling. Note: documentation can go a long way to patch over incomplete or hard-to-use parts of your application. This is my public beta phase (usually the Reid Hoffman embarrassment stage)

Phase 5: I feel pretty

Now that we are in public beta it is time to consider the design. The first 4 phases have helped us create a deeper understanding of the problem space, our core customers (their needs, industry, and expectations), and ourselves. We probably know our pain-points and deficiencies well enough to have solid asks to a designer/UX. I want them focused on real problems, not exploring around looking for things to do. Real output here is "I want designs and flows that work in the app that we can display in marketing materials"

Maturing into a real SDLC with design support

From here on out this is more of a traditional SDLC (Software development life-cycle) process. There is more structured iteration around development, market feedback, and experimentation. Design has been integrated into the process but only in a supporting role.

Show Comments