Submind YouTube summaries
Thumbnail for Flock 2026 The Engineer’s Guide To Design: Merging Technical And Creative Skills In Open Source

Flock 2026 The Engineer’s Guide To Design: Merging Technical And Creative Skills In Open Source

Watch on YouTube

Video summary

The video explores the critical intersection between engineering and design, arguing that engineers are already making design decisions constantly but often lack the specific toolkit to recognize them as such. The speaker, Khushi, an engineer turned product designer at Red Hat, highlights a common issue in open source projects where the code architecture is solid, yet the user experience feels rough due to confusing navigation, unclear error states, and forms that defy user expectations. These failures often stem from ambiguous specifications caught too late in development rather than technical incompetence. The core message is that engineers do not need to become professional designers to improve their products; instead, they can leverage their existing analytical skills to bridge the gap between technical implementation and user experience by approaching design files with the same rigor they apply to code. To achieve this, the presentation outlines four practical strategies for engineers. First, engineers should treat design files like API specifications rather than static images, meticulously checking for edge cases, missing states like hover or focus, and responsive behaviors that are not immediately visible. Second, technical constraints regarding data availability, performance limits, and accessibility requirements must be shared with designers before the design process begins to prevent wasted effort on impossible features. Third, the review process for designs should mirror code reviews, asking hard questions about real-world data scenarios, network speeds, and mobile usability rather than just aesthetic preferences. Finally, for projects without dedicated designers, AI tools can assist in conducting accessibility audits, extracting design tokens from screenshots, and clustering user feedback to identify priority issues, effectively kickstarting the design process with minimal background knowledge. The discussion also emphasizes the value of a "technically literate designer" who understands system architecture and constraints, preventing the creation of impossible or overly expensive solutions. When collaborating, engineers should explain the technical reasoning behind rejections rather than simply stating something won't work, allowing designers to find alternative solutions within those boundaries. For designers, this means annotating their work with functional details like minimum touch target sizes and behavior on text overflow, using tokenized systems instead of raw hex codes, and providing interactive prototypes that define behavior before a single line of code is written. This mutual understanding ensures that both parties speak the same language, reducing friction and ensuring that the final product is not only visually appealing but also robust and performant under real-world conditions. In conclusion, the video advocates for a culture where design decisions are made intentionally from the very beginning, whether by an engineer or a designer. The speaker suggests that maintainers can foster this collaboration by labeling specific issues as "good first design tasks" to lower the barrier for designers wanting to contribute to open source. While hiring a dedicated designer is ideal for larger projects, smaller initiatives can start by adopting existing design systems and using automated tools to ensure baseline quality and accessibility. Ultimately, whether through early constraint sharing, interactive specifications, or leveraging AI, the goal is to create products that are technically sound while also being intuitive and accessible to all users, proving that engineering and design are complementary skills rather than opposing forces.
Read the full video transcript
Um, hi everyone. So, every time you as an engineer choose a variable name, decide where or how a error message appears, or pick a default value, you are making a design decision. And engineers make design decisions all day, every time, but they just don't call it that. So, I'm here today because I think designers are far more capable of good design than they give themselves credit for, and they just need a slightly different toolkit. So, hi everyone. I am Khushi. I am an engineer turned designer. I worked at Red Hat for 2 years as a product designer, and I'm now just wrapping up my master's in London. Yeah. So, a pattern that I've seen in the few open source projects that I worked are that the code is solid, architecture is great, but users still sometimes complain that the product feels a little rough. Not completely broken, it works for sure, but a little rough. The navigation could be a little confusing, some unclear error states, or forms that do not behave like a user would expect. And eventually, the engineer who built it gets the bug report. But, the real failure happened like three sprints ago when a spec was ambiguous and no one really caught it. So, yeah, today I'm basically going to talk about how you as an engineer can close that gap yourself, not by becoming a designer, but by using what you already know and have. Yeah. So, tip number one is to read a design file like a spec and not just a screenshot. So, from my experience working with engineers, most engineers open a Figma file and look at it like a screenshot, like an image, and sometimes fail to notice that a Figma file or a design file usually has a lot more information than just what you can see visually. So, a design file is a spec, and as a good engineer, uh you can you should read it the way that you would read a API spec, for example. So, you can check for edge cases, missing states, um undefined behavior. So, make sure there are all the states such as the default state, hover state, focus state, et cetera. And uh you can also check for edge cases, like what happens when the text overflows or if the design is responsive enough. Yeah. Tip number two is to share your constraints uh before design starts. So, uh uh a designer, let's say a designer spends 2 weeks designing a designing an animated flow or a screen, and then you as an engineer come, look at it, and say, "Oh, we cannot do this. The data that is supposed to be here doesn't load fast enough for that animation to make sense." So, that's just 2 weeks gone. So, um the fix could be simple. Before a designer starts working on any feature, give them a technical brief. So, some bullet points, like what kind of data is available in what shape and form, what components already exist that they can use, what is expensive to build and what is cheap, and any other hard um accessibility requirements or internationalization. And I understand that as engineers, this might look extra work in the beginning, but it is kind of just front-loading the conversation that would happen eventually anyways. Uh just that you're doing it earlier to save more time and effort in the future. Tip number three is to review design the way you review code. Um as as engineers you are well aware, you already know how to do a thorough code review. So, check for edge cases, maintainability, performance. Uh design review is the same as a code reviews, but just a just a skill applied to a different artifact. And so in your project when a designer puts up a PR or shares a new file or a frame, uh your job isn't just to say looks good or, you know, I don't like the color or this doesn't look okay or doesn't feel okay, but ask the engineering questions. Uh does this work with the real data? Not just the clean 12-character username that they might have put in the design in the mockups. Um questions like what happens on a slower 3G connection? Is there a loading state that they've uh designed? Is the touch target for buttons big enough for mobile? And um yeah, so as engineers I feel engineers who could do this become a very valuable asset and design collaborators in any project. Um yeah, and these are skills that you already have. You just have to apply them on on the design side of it. Yeah. So, tip number four could be a little controversial, but uh [sighs and gasps] I feel that a lot of open source projects don't have the luxury of having a designer at all, uh which is very real. So, if if that's you, that's your project, these are some of the things that you can do with AI that don't require much design background, but can at least help you kickstart the the process. So, first is the accessibility audit. You can use any LLM to to get at least the basic understanding if your if the designs are accessible enough, if they are if the color contrast is okay, if there are any missing labels, hierarchy. Obviously, it would not catch everything, but it catches the obvious things that sometimes you as engineers might miss. Uh second would be token extraction. So, uh if there's a design system of your project, you can paste a screenshot of your existing UI and ask the model to extract a structured token file. So, it could give you the spacing, colors, type scale, um and you can use that as a starting point at least. Um Next I feel could be a helpful is the feedback clustering. So, uh if your project has a GitHub or like a open forum where users can give feedback, you can consolidate that feedback and ask AI, you know, what are the top issues that our users are having, and you can turn that community noise into design priorities without really needing a researcher on your project. So, I was trying to do these things with AI. So, this is just an example. Uh I pasted a screenshot of my design and asked for an accessibility audit. And as you can see, it gave me like quite a bit quite detailed, um suggestions for that. So, this is one example. Another example. Yeah. Another example was about error states. So, I feel as engineers, sometimes we don't care enough about how the error messaging sounds like, and it can be very confusing, and you know, frustrating for the user sometimes. So, if you can spend a little bit of time on just improving the error messaging, you can use AI for that, and it is quite helpful. It It adds to good UX overall. Yep. Uh and these are some of the examples of design-related uh feedback that I just got from the VS Code GitHub uh issues. So, these are some examples. I have not yet put them into AI and asked for actionables, but but like, this is proof that, you know, there are uh issues with There could be issues with your uh project as well, and you can collect them, ask AI to help you with that. Yep. So, if you are lucky enough to have a designer on your project, uh you can help them work much better for you, for the engineering team in general. Um I would start with saying that invite them to conversations early, uh not to make technical decisions, of course, but knowing what what kind data they are working with, what kind of constraints they are working with. Um and I know from my experience that a designer who understands your architecture doesn't would not design impossible things. So, usually that is a complaint that I get from my engineer friends that, you know, designers sometimes end up designing something impossible which is either very expensive to build or completely impossible to build. So, yeah, share constraints early. Uh and during, let's say, a feedback loop, if you do push back on a design, explain the constraint. You know, just saying this won't work um is not that helpful. So, saying something like, you know, this won't work because we would have to we would have to make a separate API call for each list item and that would tank the performance, you know, something like that. So, that is a constraint that uh technically sound designer, at least, can design around. And maybe they would find a solution that you hadn't hadn't thought of keeping the constraint in mind. And overall, if you are a maintainer and if you do want more designers contributing to your project, you can label some issues as good first design task. And honestly, like from my experience, from my peers around me, designers do want to contribute to open source, but it's just that they can't find the door sometimes. >> [snorts] >> Okay. So, as I mentioned in the beginning, that um you are already making some design decisions. Um just make try to make them more intentionally. Uh if an error says an unexpected error occurred, it is it is when a user can get frustrated, confused, you know, kind of lose confidence. And so, the Sorry. Yeah, so the shift has to be really small. Just ask yourself, you know, what does the user need to know here? And instead of, you know, what is the quickest or the default string that we can return. So, yes, that's that. Okay. So, a quick note on mentoring designers in open source. Um, I began my design journey, like when I shifted from engineering in open source, and that was that was very helpful for me. And uh, I would say to like if you're a maintainer, >> [cough] [clears throat] >> Sorry. Yeah. So, uh, mentoring designers in open source, uh, would be very helpful and beneficial for you as well as a maintainer. Sometimes, as a product owner, project owner, you do not realize what maybe having a design designer or some design contributions on your project, what that can do. So, the best thing you as a designer can do is explain your code base structure to a designer who's joining. Once clearly, like not the code itself, just just the mental model, just the structure. Um, so things like we use this component library, these are the constraints that we care about, and these are some of the issues that are labeled as, you know, good first design issues. And so, a conversation like that can unblock a designer for months and eventually >> [clears throat] >> when you review their work, tell them what's not buildable and why. Sometimes I feel we don't give designers enough credit as to how technically sound they could be. So again, explain why a certain thing, a certain design could not work and um yeah, so that's how technically uh literate designers are made and can help you. So now I'm moving slightly to the design side of it like for designers. So at Red Hat I worked with engineering teams of course and because I had a little bit of background in engineering, I could do certain things which I which I thought that other designers could not. So I could look at a component in the code base and understand what state it supported or what states were needed for a certain design. I yeah. Uh so in yeah, so in yeah, that's the >> [laughter] >> that's the thing. So in in design systems usually um you would need information like what sizing, spacing, hierarchy, maybe colors. So if as an engineer you just try to look at a um a design as a image and try to, you know, build it, it would be very difficult and very messy. So that's why we have like design systems which is like a which are tokenized items for again, as I said, colors, spacing, etc. So that you can like directly build upon design systems, basically. Um >> [clears throat] >> Yes. So, what a technically literate designer can do differently >> [snorts] >> Um yeah, so working with engineers, I I can I can understand what kind of things are buildable and what are not, and I can Um yeah, I can say things like, you know, I noticed the error state in that PR doesn't match the spec, and so the color is off. You have probably built something wrong, and things like that. Yeah, again, something for the designers to help their engineers is to annotate uh constraints. So, when we are designing, again, it should not be just the visuals. Um you as designers can uh work on annotating and giving more information about how it works instead of just how it looks. So, uh work on things like minimum touch target size, what happens if the text or the label is three times longer than in the mock-up. Um yeah, what breaks first if uh if there's a responsive um element to it. Uh yeah, so in general, engineers have to think in constraints. So, we as uh designers have to meet them there. Uh design tokens, as I mentioned earlier, um don't don't just uh work with hex codes. Tokenizing your uh colors, spacing, grids is very helpful for everyone, and documentation a little bit. Uh just mentioning that, oh, this is a blue button is much less helpful than saying something like this is a primary action button this or this is a call to action or let's say this button opens up a model. Or things like that. So the engineers making the implementation decisions need to know the reasoning they need to be able to connect the dots connect the screens that you're designing. So it's helpful when it's not just visuals and it's um it's more annotated. Yeah and that uh brings me to the next uh point which is prototypes. So uh the biggest source of friction often is disagreement about behavior and not just appearance. So clicking a button opens a model or is it a navigation button? What is the loading state? What happens on an error? So a high-fidelity clickable prototype answers almost all of those questions before anybody writes a line of code. And um yeah for engineers uh especially it can also help you do uh QA before um before you actually build it and so you are not questioning does it look all right but also does it behave all right. And so that is kind of where we can meet engineers and designers in between. In the middle. Yes and that's it. So I think the major three things to take away uh would be to share constraints early involve designers in in the early talks in the meetings uh demand interactive specs not just static marks and uh technically literate designer can be the biggest asset to your team. And yeah, that's all. You can connect with me here. Yeah. THANK YOU. >> THANK YOU VERY MUCH. DO WE HAVE QUESTIONS? >> HI. YOU mentioned that that you can like mark some issues as good for a design issues or something like that. I'm wondering how that actually works because like to me design is a whole like thing that you can't easily divide or like it's a like this you know overarching thing over the entire like program or suite or whatever app. How does a designer or can a designer actually work in the for like a small issue that involves some part of design but like it doesn't affect the others or something like that. >> Yeah, I think that's where it becomes challenging specially for bigger complex products. So um one of the one of the projects I worked with during Outreachy internship was a smaller project and so I felt it was much easier for me to get into it. But if your project is a larger more complex code base, you should start by you can start by like putting out there the issues and if designers show interest, be proactive in explaining to them the overall code base. I think it really helps. I hope it that helps. >> Thanks for the talk. I think this is a it's it's cool to see the, you know, ways that engineers can also think more about these things and in the same way that it helps to have a technically literate designer, it's also helpful to have a design literate engineer. >> sure. >> My question is, have you had a chance to explore many automated tools for testing or linting accessibility? The context for my question is this, I've I've been looking at um I guess it's pronounced pa11y, p a i 1 1 y. Um it's a tool for this as as I've been trying to think of how can I, you know, on smaller projects where maybe I don't have a designer [clears throat] on hand, but I want to think about accessibility. You know, it's it's it I use it as like a CI pipeline uh linter, so like oh if certain tests fail, you know, it can inform me like oh, maybe I need to go and look back at something and it can be with accessibility design, lots of different contexts I suppose, but I'm just wondering if you've have much experience with these kind of tools or if you found them as a designer to be useful or for creating conversations. I'm just wondering what other people are doing with these kind of tools. [clears throat] >> Yeah. So, I have not explored a lot, but uh at Red Hat, I do not remember the name, sorry, but I did work with a uh with within uh I think it was uh like a Chrome extension or something like that to to again do a accessibility audit. And so, I'm I'm not sure. Yeah, it's been it's been long. Yeah, that's fine. Um so, >> [clears throat] >> so yeah, I think I think there are a lot of tools like that uh that can be used. Um nothing on top of my head right now as of now, but uh yeah. >> Uh back to like this sort of um being able to manage small chunks of a project. Because I I was thinking like you know, not a very good-looking app. Mainly, in my opinion, due to the lack of a central designer that like actually, you know, gives a design document like this is how you should, you know, make it look and, you know, feel. [snorts] So, that that was my question. Like, is >> [snorts] >> does it make sense to start with these small local improvements, or is it better to just like, you know, find an actual designer, pay them, and you know, like >> I think a good starting point could be design systems, like maybe the Google's material design system or anything else that you think can work with you work with your project. So, starting with something like that and then, you know, working around it. And then, as your project, you know, progresses, then you can maybe think about like a designer. But, a design system can really help >> [clears throat] >> starting out and structuring and making it cleaner at least to start with, I feel. Mhm. Any more questions? Great. Well, in that case, let's thank our speaker again. Thank you very much.