Softwere
Developers Experienced & Users Experience
There is something in a design called User-Experience(UX). It aims at setting easy-to-ease and desirable interfaces to make the users' life as simple as possible when they interact with those interfaces. But, the term "interface" is not limited to the graphical aspect of the craft.
The first reason why it doesn't stop there is that even us in software development we have several levels and aspects of interfacing. It's at any level of conjunction between two or more entities either of the same nature or not used to facilitate communication. It goes down deep at each step of the life cycle of any creative process. Right from those graphical interfaces, through the code architecture, code design, implementation methodologies, to the final documentation, etc.
It applies to all levels simply because the term "user" doesn't only mean the "end-user". The user is also anyone, including the creator himself, who might go in contact with the module or equipment. So, even when we write a code we always need to think of its next user, even if that's going to be ourselves. Lastly, the user is any entity requiring to interact with another entity, either of the same nature or not.
Now that we have a clear idea of what a "user" and "experience" are, let's look at what developers and designers experience when creating the "user experience".
Since interfaces are junctions of communication amongst various entities it's key to get it right and as simple as possible. This suggests that their relationship was not possible or at least simple. To bring simplicity to this relationship it requires heavy lifting of many barriers. Take the example of creating APIs. You expose a few endpoints to the "user" through a tremendous set of classes and functions. Behind any good software, there was some super heavy lifting done for it to look good such as what you see every day across various applications we use. I do admit that in the case of graphical interfaces the "good" taste depends totally on each individual but the idea remains the same.
The job as a developer or designer is to work out as many as possible possibilities and some times all possibilities that an end-user could think of or that might be a necessity to them. The developer has to go through the expected experience from a user in all possible angles. We actually try to predict the end-users' behavior: We Experience before the "User Experience".
Do you get the idea? This is a serious responsibility. Whoever has been through the entire creative process knows that the final product depends entirely on how many possibilities we consider and on how deep we take them. The user experience is the result of your entire experience. This is not "soft" at all; soft where?
Because software development is usually a profession motivated by passion, we tend to think that it's an easy way of working. When work is driven by passion, it's not a job, but a playground. But, software development is a serious and very important activity, especially in this new world. Some of the key points I mentioned in my article Software Development creates better citizens, which Africa needs was the "Sense of responsibility". Since you are the one to create the people's(user) experience, you can absolutely influence their life experiences. Create happy people. Put in enough effort to ease their experience. Be it an API, a design, a class interface, a package, or even any documentation. Talking of documentation, recently I had to work on PayPal's recurring payment for one of my clients. PayPal's documentation is so poor that I had to work on it for more than two weeks, what took me just an afternoon with Stripe. I was so frustrated that I had to tweet my mood.
I needed to slap PayPal but it's not possible lol ;) In the end, we should always be aware of the following aspects: - Developers endeavor a lot to provide a simpler experience to the end-user - Software is only easy for the end-user because the *start-user* has already simplified it. It's not easy for you. - If your job as the software developer doesn't seem tough, question yourself if you are actually solving a problem for an end-user. Many senior software developers will always tell you to solve problems for people. That's the key point announcing your job responsibility as a developer. Thanks for reading.Why @PayPal ? ???? Why can't your docs be straight forward? Why are you hiding your API's features, repeating them, and mixing old and new one? Which ones are correct? Look at ???? @stripe
— Ahmed Salif Diara (@zooboole) August 9, 2019