UX needs to speak Development

First things first this is not an article about how UX professionals should learn to code (while I do agree with that statement). The field of UX is growing not just in the number of people, but the scope of work that falls under the UX umbrella. UX principles are everywhere you can find a bunch here (http://www.designprinciplesftw.com/). However, the field of computer science has a few principles that would be beneficial to learn and apply to UX. 

DRY (Don't Repeat Yourself) - This is a foundational principle in software development and it's very straight forward. Don't do something twice, if you can do it once. This principle very much applies to design in today's landscape. UX designers should focus on creating design system rather than creating "screens." We should be spending time building pattern libraries that allow us to iterate quickly. Design systems and pattern libraries do more than just saving time; They also help increase consistency in our designs and give us more flexibility in making changes. I recommend reading up on design systems like Atomic Design by Brad Forst.

UX creates many kinds of assets using traditional prototyping tools like Axure, Sketch, and Adobe XD all leverage reusable symbols. If your building a button, icon, or panel that gets reused make it a symbol so that can be referenced and edited in one place. Put thought into how you are going to build a prototype and make use of symbols, so your workflow is efficient. 

Continuous Integration - Continuous Integration is a little bit more software development specific, but the idea of sharing and managing code or in our case asset files has overlap. Have you ever worked with at creative or UX team that shares a network drive? It is full of design files like "ProjectName_Date_V4_FINIAL.ai" now that I mention it I bet your working directory has the same kind of the mess. UX needs more tools to help with file versioning especially with teams. There are a few tools out there like Folio, Dropbox, or Github but all these tend to leave out features and feel like a band-aid rather than solving the problem. Until we have tools that help with managing files and versioning creating and enforcing a naming convention standard can help. Adobe XD shared its vision for versioning in their 2016 MAX presentation that looks like a step in the right direction.

KISS (Keep it simple, stupid!) - Okay, so this isn't specifically a computer science principle; however, it can be beneficial. Reminding ourselves to keep things simple is valuable. I was recently working on a project with a progress indicator, and there was an edge case that would require us to move the user backward in the process. That didn't feel right to anyone on the team. When we stop trying to add something to solve the problem, it was evident we could leave the user on the same step and just inform them of a delay instead of moving their progress backward. Instead of creating complex solutions, the best solutions are simple, and we just need to reframe the problem. 

The KISS principle also applies to how we work, not just the solutions we create. There is value in a robust UX process, but not everything requires every step. It is often much easier start building a high fidelity prototype quickly in Sketch or XD to help clarify problems and to give a catalyst for reactions and feedback. Other times more research and discovery are needed to attack the problem. UX is getting more and more tools specifically for UX design, so it is important we keep it simple and use the right tools for the job at hand. 

In conclusion, UX designers work with developers, and we can learn to form each other. Software development has discovered many practical principles especially in the rise of Agile Methodology we would be missing out to ignore these and live in our silos.