Go broad, then deep
Old habits and tricks die hard. Pushing yourself outside of the same tools and solutions requires effort and bringing a critical mindset. At the same time, understanding which rabbit hole to dive down is crucial when trying to keep a high velocity.
Take the time to research, explore, and map out your options for solving the problem. Investing this bit upfront can both save you headaches down the line and help generate buy-in from your teammates and stakeholders.
Reduce time to clarity
in the face of technical debt and changing requirements, estimating how difficult a problem is and how long it will take to solve.
You can employ a few different strategies to rapidly bring clarity from the Creative Technologist’s perspective:
- Prototyping and quick technical explorations can significantly reduce uncertainty in situations
where the scope is unknown.
- Mapping out technical dependencies between engineering and design — identifying where collaboration and communication is needed — can help teams prioritize work streams.
Don’t design in a silo
It can be tempting to take an idea and run with it, especially when writing good code can take long amounts of uninterrupted, focused time, amplified by a remote work environment. The risk of investing too much time without seeking feedback and context is high.
Make sure you understand the whole user journey that the project your working on exists in. Give yourself stopping points that you come up for air and show your work to teammates. Share your screen often, and use tools like Figma and CodePen to show your experiments and work in progress.
Ask for the right feedback
We know that getting feedback is important, but it’s easy to get the wrong type of feedback. Knowing when and what to ask for is crucial.
Below is a good framework for the conversations that are most appropriate to various phases of the design process:
1. Divergence: “What’s the best solution?”
Keep the conversation high-level, and prototypes that are gestural rather than prescriptive.
2. Exploration: “How might we execute the solution?”
At this point, you’ve decided on the overall direction, but there’s still room to explore how exactly to execute it. This is a good time to look at a few different code patterns or technical strategies for execution and weigh their benefits.
3. Convergence: “How can we tighten this up?”
In the final stages of the design process, the focus is on the details. Is the code performant and well designed? Have we tested that our solution is robust? Engaging our partners in engineering may also be an important piece of feedback at this stage.
Don’t be afraid of users
Considering how people actually use your work can be an intimidating proposition in the face of tight timelines and untested code.
Sharing something you’ve made with real users can be uncomfortable. Remember that no solution is perfect on the first go-around. Iteration is key. Ensuring that your work has well-defined and well-qualified success metrics is key to learning and iteration.
Be inspired by instinct,
but informed by data
Not every potential solution has data to back it up immediately. Knowing when you’re onto a good solution in the absence of data is an art.
Use your existing knowledge to make a hypothesis, and use data to validate your assumptions. Get creative about the ways you could create or collect the data needed to validate your assumptions. And remember, the sweet spot can be found when you trust your instincts and use data gathered over a reasonable amount of time to measure success.
Use duct tape and string
and JB Weld
Some might say that premature optimization is the root of all evil, i.e. we have a tendency to want to make our code perfect rather than express the concept quickly.
Use whatever means — code or otherwise — you have at your disposal to express the concept. Figure out if your hypotheses are generally correct first, and then circle back to add the polish.