Want to be a better Software Engineer? Understand UX first!
Who are you really writing Software for? Let's explore why focusing on UX will make you a better Software Engineer.
The life of a software engineer
Whether you graduated with a computer science degree or built your way through learning to code in your bedroom, you are enjoying the life of a software developer. Did you join a large corporation, a small agency or freelancing for clients? Your aunties on the outside are picturing you “a-la Mr Robot” with your hoodie on, hacking away in a dark room, writing lines of code all day long.
But your daily routine is not always that glamorous! The Sunday brunch with your aunties is more like: “Ha so you work with computers? Can you look at my printers when you get a second?”
At work, you have to endure the daily standups, changing priorities from the project managers and an endless list of JIRA tickets… they just keep coming! Thankfully the new shiny projects allow you to express your creativity, actually building something from scratch. It is the time where you come alive and use all the compounded knowledge you have acquired over the years to write a feature you are proud of committing. And you will still rely on StackOverflow and try to automate your workflow with post-commit hooks, remembering to write tests, tests and more tests!
I have been through the phases and seen it with my own eyes, experiencing all phases of web software development life cycles as part of our digital agency growth. Starting from a junior webmaster and growing into new roles as our team expanded, I am mentoring our team of 20+ developers. I have seen many of our staff evolve into very different roles, but I spotted one of the most counter intuitive secrets of how our software engineers have maximised their career growth.
The best way to get promoted
After a few years in a role, everyone wants a promotion and a salary raise. Most of the time, this has to come with an increase in responsibilities and / or adding more value to your team, department or company. However, everyone has very different personalities and expectations from a software developer career. What you consider as rewarding in your job can take many different forms and not everyone has the same vision, interests or even the willingness to evolve into new roles. Some developers want to:
- Stick to development and master the language, frameworks and applications they are working on
- Take on more challenges and become Senior Developer
- Accept more responsibilities towards others and grow into a Team Lead
- Transform into a Business Analyst working with the project / product management team
- Pivot into DevOps Engineer to manage the infrastructure the applications they built run on
- Become “The Boss” as Technical Director
- Forget about development and become the CTO
- Turn into a Developer Evangelist to promote the products built
But in all those different options, your career growth mostly depends on your ability to collaborate with the other teams contributing to your digital output: design and marketing. If you dig deeper than development, what is the one discipline that permeates all departments? Who is paying your salary by subscribing to the products you build? Your end users, your paying customers.
Why / How UX will help your career as a developer
As Steve Jobs famously explained:
“You've got to start with the customer experience and work backwards to the technology. You can't start with the technology and try to figure out where you can sell it.”
As a developer, your primary role is of course to take care of the tech side and make sure “it works”. But it also means that even with the best backend systems, if the end users cannot interact with it, if it’s too slow or just confusing, there is no point building it. In my experience, at whatever stage of your career or role you are, you will build better products if you have empathy for the end users.
The hidden specifications
This is not just implementing the design specifications or following to the letter the written brief received by your UX designers. Even well-structured user stories will never have every single detail of the layout, transition or performance requirements specified. When you have to make those little decisions when you code the feature, understanding end users becomes a real differentiator.
By definition, empathy is “the ability to understand and share the feelings of another“. The best way to get accustomed to it is the eye-opening experience of seeing real users interact with your products. By getting involved early-on during the discovery phases, talking to stakeholders, you will gain a deeper understanding of the actual requirements. By attending usability testing session on the early prototypes, I have gained so much knowledge about how various users interact with most simple web applications:
- Old people struggling with filling in forms without labels or tooltips
- Busy shoppers struggling to find the “add to cart” button on an eCommerce page
- Users with accessibility needs unable to browse a site as the navigation was not following the tab order or alt tags were missing from linked images
- Young people not seeing the results refreshing after applying some filters and still looking to the “Apply filters” button
- Or just simply any less digitally savvy user that sees your software for the first time
Even if you are in a pressured environment with tight budgets and cannot afford to send too many resources to those sessions, ask permission to log this as “training time”. After experiencing this, it should make you question every webpage you build. Even today, when reviewing Pull Requests or proofing user stories, I think about all those edge cases to ensure there will be no confusion for the end users.
Finding the balance
I am not recommending that every developer becomes an expert in UX or design and start building wireframes or run user interviews. I am not expecting all developers to become “a jack of all trades” and you should of course push your CPD into your technical speciality. The digital industry is fast moving with so much innovation, it’s hard to keep the pace! However, looking at AR/VR, Blockchain and all the AI automation, they all have one thing in common: augment the end users’ abilities. They all are great technological advances but rely on the end users to interact with them, they are otherwise pointless. If you can learn from your UX colleagues and start to spot some of those little details that are never explicitly documented in the user stories you are building, you will deliver a better software! Always keep in the back of your mind a handful of real-life user scenarios and this will open many doors for you.
The ability to understand other teams will give you an edge to better collaborate with them and deliver more successful products. By getting recognition from the wider groups, it should also give you more opportunities for promotion into leadership roles.
To conclude, here are 5 takeaways to grow your developer career:
- Attend the usability sessions and read the UX discovery findings
- Get involved in the design reviews from the creative teams
- Optimise the frontend code for performance and accessibility,
- Write your backend unit tests, but also accessibility tests for complete user journeys
- Bonus points if you understand analytics and CRO… but this will be for an upcoming article!