Week 6 - What I Learned

This week I spent most of my time building some screens for the UI of our team’s app. I had already worked with some front-end stuff, mainly web development, but it was pretty basic and did not include frameworks like this project does so I had to research a lot and learn how to use React. Even so, I think using React was the right decision because there are tons of resources to learn from, including coworkers.

One of the main takeaways of this week is how complex multiplatform application development is. Sure, application development has come a long way towards easy multiplatform support thanks to tools like React Native and Flutter, but due to the complexity of this tools the result is not always perfect and can be difficult to debug or pinpoint the point of failure. The main problems faced were visual differences between platforms, and there were many reasons: different screen sizes, different style support and compatibility with libraries. These differences get more obvious depending on the method used to build the application: responsive web apps are less prone to these nuances, but natively installed apps are very picky.

Also, related to tech skills I learned about application deployment. For this project a platform called Expo is being used to rapidly package and deploy the resulting application in a variety of platforms, including iOS, Android and Web, just by installing the Expo package with the JavaScript package manager of your choice (yarn or npm). This enables developers to save large amounts of time destined to deployment and instead focus on developing the application. It is worth mentioning that I have only tried Expo to deploy test versions of the application, not in a production environment and I am not sure if the same concept applies for that purpose.

Additionally, this week a live demo of the application was presented to the client. This demo included most front-end functionality of the application like a swipeable list, login and signup screens and how to interact with the RAD concept introduced in the previous week; but no back-end functionality like a real database which, for this demo’s purpose, was not strictly necessary. It was the team’s first live demo ever, and broadly speaking it went well, the design was well received by the client thanks to the UI items provided by the Native Base framework. However, there were some feedback points that led to learning how to improve these demos: mainly how (and why) to make the application intuitive. This client emphasizes the need for an easy-to-use application, that can be used by anyone and anywhere, with a negligible learning curve and provides just enough functionality to serve its purpose. This kind of intuitiveness is hard to grasp, even more when there is zero previous experience in UI or UX (user experience) design. Related to user experience, there is also the common mistake to focus on a narrow set of users, and the need to target a broader audience.

This was the first but not the last live demo. There are still a couple more left, and the feedback received in this one will function as a guide to improve the application in the next iterations, as well as the motivation to work harder to build a product that the client appreciates, uses and recommends. Also, there is no point in running from a challenge! Yes, they are meant to be hard; yes, they are meant to be intense; and sure, they are certainly meant to be full of learning experiences.

The following weeks will be full of new learnings and better demos (maybe a spoiler!), so be sure to check them out.