16

As a designer and sometimes coder myself, I have been exposed to the idea and principles behind Object Oriented Programming, and having a knowledge in this area definitely helps when it comes to conceptualizing screens for proposed software applications. Developers would immediately get the gist of the screens.

I'm curious though if the knowledge of a designer of OOP would have a big impact when it comes to User Experience Design? What kind of scenarios would it be a huge factor in the effectiveness of a design? Are there any instances where it is?

  • 52
    OOP has literally nothing to do with UX. – Graham Oct 24 at 15:36
  • 11
    OOP is an implementation detail. It has nothing to do w UX. – Robert Niestroj Oct 24 at 17:31
  • 8
    It looks like you're confusing OOP with some kind of component architecture. I found that it really helps when the design team understand how the devs team create (sometimes reusable) components. We then get coherent screens and less micro-differences we need to implement for a million edge cases. – Emile Bergeron Oct 24 at 17:38
  • Software developers should forget most of the principals of OOP and move to a more functional style of programming. Composition over inheritance. – Adrian Brand Oct 24 at 21:31
  • 6
    It might not be crucial for UX Designers to understand OOP, but it IS crucial for designers and developers to share a common understanding/language for communication design and implementation details. – Michael Lai Oct 25 at 1:46
32

No.

Those are two fundamentally different jobs. Except in the scenario that the UX design is for a product the primary purpose of which is OOP development (e.g. an IDE).

Otherwise, of course, there is no harm to knowing the "principles" of OOP. Further, knowing about a broad range of different things (including OOP) can certainly help you to think differently. But it is equally important to understand that OOP is just one of many approaches to programming, there are others (e.g. functional programming). But to get to a level where your skills are actually useful in a production environment, you need a lot of practice/experience as a programmer.

On the other hand, there are designers, who out of their own personal interest, learn programming and get good at it. But that's the same as a marketeer learning programming and getting good at it.

This is a fantasy that some hiring managers and many recruiters tend to have - that they need to hire genius all-rounders for all jobs. Usually, it reflects a lack of understanding of the role they themselves are hiring for.

The only (rare) situations where it is useful is in extremely small product teams and barebones startups. Even then, it is far more practical to have a programmer who can do some basic design work, than the other way round (designer moonlighting as programmer). It is easier to have a programmer do a crash course on design and get them to do some basic design work, but a crash course in programming won't make your skills actually useful for anything other than building simplistic toys/prototypes.

"Developers would immediately get the gist of the screens." That is not the job of the designer. Products are designed so that the users, not the developers, immediately get the gist of things. The designers' customer is the user, not the developer.

As a practical example, consider Jony Ive, the legendary ux/ui designer. It is easy to check that he is in no way a qualified developer. One can assume that degree courses in industrial design are meant to prepare people to work as designers. It is easy to check if the curricula of some of these courses include any real OOP/programming content (they don't).

Here is a quote from Don Norman, the guy who invented the term ux

I invented the term because I thought human interface and usability were extremely good. I wanted to cover all aspects of the person's experience with the system including industrial design graphics, the interface, the physical interaction and the manual. Since then the term has spread widely, so much so that it is starting to gain its meaning.

  • 1
    Aren't the actors defined in UML similar to the users and personas in UX Design? and aren't the interaction diagrams used in UML similar to describing the user journey? These techniques are often used in OOP to describe problems and solutions, and for a developer venturing into UX design it wouldn't be the worst way to familiarize themselves with some of the fundamental concepts. – Michael Lai Oct 24 at 22:17
  • 2
    You are right that for a dev venturing into design, there are similarities which can make learning by analogy easier. But as it is phrased, the question is from the perspective of someone whose primary skill is design. Their design training would already have exposed them to all the aspects of design (personas/stories/etc.). Also, OOP is more about inheritance, polymorphism, etc. UML is more about software architecture. I can do UML for a Haskell/Erlang project - which is really not OOP, but functional. I think it is a question of software architecture/design vs. product design. – Yogesch Oct 25 at 4:11
  • In case someone misunderstands the applicability of UML to functional programming, I should clarify that while UML is mostly used by OOP programmers and is not common in FP (mainly because FP works at a higher level of abstraction than OOP) the design (not implementation) related parts of UML (use cases, activities, etc.) are just as useful in FP as in OOP. But that's a very different discussion, stackoverflow.com/questions/2457903/… and quora.com/… – Yogesch Oct 25 at 4:30
  • 2
    That is not the job of the designer. Products are designed so that the users, not the developers, immediately get the gist of things. This. Ultimately you're developing for a group of people who will use your product. That is what you create your product for. If something is better to develop for a developer, but has the effect of the end user having a harder time understanding your product, then where are you keeping UX in account? – Condor Oct 25 at 10:11
  • 1
    @Yogesch Indeed, but this does not go just for programmers, but for ANYTHING one might use a tool for. If doing the UX for an accounting tool, it helps to have done the books, a CAD tool, you really want to have designed something in CAD, music software, you want a musician... I am not sure that training someone with task domain skill in UX design is not actually the easier route. The result will be imperfect, but will work the way someone from that background expects it to work, and 'Least Surprise' has a quality all of its own. – Dan Mills Oct 26 at 23:09
14

Perhaps not so much learning the principles, but understanding the principles of Object Oriented Programming or the equivalent does help with some aspects of UX design.

The short answer would be NO (i.e. it is not crucial), but the long answer would be YES because by developing a process that helps you articulate the relationship between different entities within a business process or workflow, it helps you make very strong connections between people, process and technology.

There are techniques common to OOP such as using UML (Unified Modelling Language) to document the actors (i.e. users), processes and the swim lanes to understand the different roles and responsibilities people play within a business process that also overlaps with BPMN (Business Process Modelling Notation) that are particularly useful for documenting technical details that can be translated into design decisions on the user interface side of things.

There are concepts in OOP such as inheritance (relating to the definition and instantiation of classes) that can help reinforce ideas of modularization and progressive enhancement in design assets for your design systems.

Of course, there are alternative approaches to OOP in helping you to conceptualize and document information and requirements in a structured way, but because UML and BPMN are so prevalent in the business analyst and software development circles (and because UX design doesn't really have its own standard methodology for this), it is quite worth investing some time to at least understand the core principles.

  • 1
    +1 Good asnwer! You don't have to learn OOP, but understanding it's principles can certainly help in UX design. – jazZRo Oct 24 at 11:06
  • Thank you for your detailed answer Michael! I have learned new things (UML and BPMN) and also I like how you delivered the long answer and how it helps UX design in general. – KenDeeter Oct 24 at 11:53
  • 2
    I'd disagree with the suggestion that UML is somehow related to OOP. It isn't - you can use UML without OOP - a use case diagram shows how an actor would use something. The actor could be a user, it could be an automated system. There is, however, no OOP concept in that, as it's very abstract and very focused on usage. Entity relationship diagrams also have nothing to do with OOP - mostly used for mapping out databases but can be used foe even more abstract relationships. UML is orthogonal to OOP. – VLAZ Oct 24 at 19:10
  • @VLAZ you are correct. You can use UML without OOP (and vice versa). It is not the actual method or process that I am emphasizing here, but the principles in UML and OOP that help us describe problems and solutions in a consistent way. The same could be said for UX Design and Design Thinking - you can do UX Design without Design Thinking, and you can also apply Design Thinking without doing UX Design. However, you will find that most UX Designers practice some of the elements of Design Thinking, just as UML encapsulates aspects of OOP. – Michael Lai Oct 24 at 22:15
  • 1
    @MichaelLai I think you are quite right that knowing UML etc. will give devs and designers some common ground. It also helps when ux designers have a basic understanding of software architecture - but that is UML, not OOP. If the question replaced OOP with UML, we'd agree about everything ;-D – Yogesch Oct 25 at 4:18
5

I'm a web developer and darn good at what I do. I once applied to a mechanical engineering company to re-build their lousy web site which was originally created by a mechanical engineer part-time. To get the job, I had to take a mechanical test. Most of the things on the test I had never even heard of before much less knew how to answer. (It mostly tested on hydraulics, metal folding and such.)

Would passing that test make their web site work better? No.

Object Oriented Programming is computer science and the purview of Programmers and not User Interface designers.

This whole idea nowadays that everyone needs to know programming is insane.

  • 3
    I don't think everyone needs to know programming, but there are probably a few too many projects out there where the designers are asked to design things that can't be easily implemented. The fact that there are more full stack developers compared to full stack designers suggests that more developers are being asked to know how to design. – Michael Lai Oct 24 at 22:20
5

As someone who works as a designer and knows OOP languages, I think some of the philosophies of OO kinda help with understanding structure, particularly if you're getting into SCSS and modularizing your design to create reusable chunks of content. But that's not really OO, but more understanding of variables and basic programming concepts (like keeping it DRY).

Overall, depends on your role as a designer but I think the challenges you face in OOP like Dependency Inversion and SOLID principles don't really overlap with your ability to do UX well.

  • Any thoughts on the concept of design tokens and how it is (or isn't) helping to bridge the gap between design and development? – Michael Lai Oct 24 at 22:21
3

Wow, a satisfying thread. There is often a debate in modern society - should a designer be able to programming?

Personally, I think that knowledge of programming patterns or concepts (OOP) is necessary to become a high-class designer.

Why do I think so?

  1. You can model the database in cooperation with a back-end developer. (Creating models)

  2. The design process is differently, knowing that the interface will be programmed, attention is paid to the whole process, and not only until it is passed for implementation with the "cope for yourself...

  3. Cooperation with a front-end developer is a pleasure when it affects the final solutions, and you can provide it with sample animations on Codepen.
  4. Programming helps to create scalable systems, in addition to see that a photo is only a string of bits, depending on what the user provides, not a great aesthetic photography.

It depends on the scale and phase of the project, but there is always a issue of specialization.

However, it seems problematic that companies often treat UI Design as a sales tool - and later there are usually implementation costs / unforeseen scenarios.


As Michael said, real design begins on UML + BPMN.

  • I'm glad you are satisfied with the thread. Your answer sheds light on my thoughts about programming patterns helping design. I agree with it helping with the scalability of systems, and I also think it gives a basis and solid foundation of the data presented within the screens themselves. – KenDeeter Oct 24 at 12:00
  • 1
    I think that having a common or shared understanding between business analysts, designers and developers can only be good for any complex projects. Leaving aside legacy systems, these days most business aspire to take a customer-centric business model and develop their products and services around it. Soon business systems and business logic will start to align with the mental model of users, and this is where roles like a UX/BA and also UX Designers assisting with business requirements are more common. All the points that you have made are very valid, yet we don't see it done often enough. – Michael Lai Oct 24 at 22:25
  • Yes, so often the processes and operation evolves depending on the client's needs / user requirements. I also think that this way it will progress. – Piotr Żak Oct 25 at 10:56
1

One thing I would add to this conversation is that UX designers should also understand how a webpage is marked up as well. Too many designers don't realize that divs are containers, that one can move containers around but one can't readily pull these containers apart. This lack of understanding often comes up when discussing media queries and break points.

Take the example of a three-columned site with content in each each column. Assuming each column is it's own container UX designers SHOULD know that one cannot pull apart the content within each of the columns and place them elsewhere.

I cannot tell you how much time and energy is wasted dealing with designs that cannot work for just this reason.

1

Other answers have basically said "no, but there's no harm in knowing it". I'd like to challenge that and suggest that not only do UX designers not need to know OOP principles, but they should not do UX design from a perspective of having been freshly exposed to OOP principles or long-term infatuated with them. UX design has nothing to do with OOP, but it's easy to do bad UX design around how the computer/programmer organizes data rather than what's meaningful to users of the system. This can be found in all sorts of desktop and web apps done by inexperienced UX designers or programmers with no background in UX design, where the UI ends up being just a thin wrapper around a database and it's painfully obvious that that's what it is.

1

I don't agree with the answers, especially with the one that has most votes. It is 2019 outside and the industry is developed enough to blur the borders between the roles.

In short, UX Designer + Programmer = UX Engineer

A role description from Google Jobs:

As a UX Engineer, you’ll weave together strong design aesthetics with technical know-how.

You’ll partner with researchers and designers to define and deliver new features, translate concepts into living, breathing prototypes, and iterate on interactions, animations, and details to deliver the perfect experience. UX Engineers also collaborate closely with UX Researchers to user-test new concepts and assist engineering.

Because the UX engineer is hands-on with the actual implementation, he has even deeper insights on the user experience and user interaction. He is tweaking the tiniest settings that distinct the great experience from good experience. He is an innovator as well because he knows the constraints and looking for ways to go beyond them. So the answer should be definitely YES, knowing programming have a huge impact on your efficiency, your product and your salary ;)

Further reading on the topic: Who is a “UX Engineer”? by Alex Ewerlöf

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.