Software That Works

Software That Works

Published On: Tuesday, 06 February, 2024🕑 5 minute read

A couple of years ago, before I started my Computer Science journey, I did not care about how the things I was using looked or how the games I was forcing on my potato PCs ran. All I cared about was if they worked.

"Does it work?" that is the main thing that I usually ask myself when I use software today. Now that I have more knowledge of how software is developed, I have more sympathy for the apps and software that don't work.

I have sympathy because I am a software developer myself but I am certain that the majority of Facebook's 3.05 Billion monthly users are not tech people like me.

And since they are not like me, that is why the Facebook app on the Play Store is currently at a 3.6 rating and swarming with negative reviews.

What Is Software That Works?

What do I mean when I say "Works"? Software is all about solving a problem. Whether it is a small problem like the exchange rates of the Malawi Kwacha to other currencies or a big problem like visualizing the internal organs of a patient just about to undergo surgery, software is there to solve those problems.

An easier explanation that applies to me goes like this: When I am on YouTube, I want to watch (long form) videos to either be entertained or be informed or educated. When I am on X/Twitter I just want to see the weirdness and toxicity from Twitter Malawi and the rest of the world and funny enough X does this so well and the algorithm knows this too. And when I am on Pinterest, I just want to be inspired. All these platforms know what the problems the users have and they certainly mastered how to solve those problems.

The apps I have mentioned above work. But let's give X two more years because, to be honest, Elon Musk is unpredictable.

Facebook Works, Sort Of

From my point of view, I am pretty sure that Facebook works. Sure it has bugs but what matters to me is that it works and on top of that it works so well that it fulfills Facebook's goal of connecting people.

"Connecting People" has been Facebook's goal from the beginning and it does that flawlessly that we forget about this. In fact, Facebook perfectly solved this problem and got bored, and decided to diversify, focusing on other areas that they never intended on doing.

Facebook gaming for example. No one cared whether we had this on the platform or not but we still got it anyway.

Secondly, they gave us Facebook Videos? I don't know why. I never saw the need for it but well, we got it anyway and I barely use this because I love the original video sharing platform, YouTube which, in my opinion, will never be topped.

Lastly, which is also my favorite feature they added, the Facebook Marketplace. Boy, I can write a whole essay on just how broken this is based on the number of complaints I have heard and read about the Marketplace. It works yes, but not so well. It's connecting people yes, but sometimes people are being connected to the wrong things by being scammed and all that.

Now the marketplace is a flaw that can taint the OG Facebook's image. That one feature alone has driven people away from the platform.

But why is this the case? Do the developers at Facebook not care anymore? I am sure they do. Remember I said that they solved Facebook's goal so well that they got bored? Well, adding more features created more problems for them despite their slogan not changing.

Their strategies on how to achieve "Connecting People" however, have changed. They want to connect people in so many different ways as possible. And with the Marketplace, they want to connect the buyer to the seller.

Facebook's timeline went something like this:

solvedAProblem()
	-> gotBored()
	-> diversified()
		-> console.log("Created more problems")

They created more problems that affected Facebook's pure intentions and that is why it is sitting at 3.6 out of 5 rating on the Play Store.

Make It Work, Refactor Later

I realized that as much as I want to write beautiful code, it will never be perfect. After this realization, I now focus on the main thing that I am trying to solve by solving it in the simplest form possible and refactoring from there.

The users who will be using my products will not be wowed with my code, they will be wowed by what I have managed to solve with the software that I have made that works!

The CEO of a company (who is not tech savvy) will care less about how the code was written and will only care about the question I asked earlier: "Does it work?"

That is just the reality of things.

HOLD ON! This is not an excuse to write sloppy code. Don't sacrifice performance, security, and privacy in the name of making it work. Sure the website loads but it just used up 10 MB and my browser froze while it was loading. Don't do this.

What I Learned From This

As a developer, I should not forget that the majority of the people out there are not like me and that the software we make for them should have little to no bugs. It should work.

Clear Goals and Expectations

That is why as a developer, I have to be clear about the goals I am trying to achieve and the problems I am trying to solve.

Being a pantser doesn't always work with software development. No matter how small the problem is. I don't always have to write it down but if I have a proper roadmap/timeline in my head I am much better off than jumping straight to the code. I understand. I get it, writing code is the fan part but it is worth the wait.

Narrowing The Scope of The Project

Unrealistically big apps (on day one) are bound to fail (eventually) if there are no resources to support the project. As a video gamer myself, I have seen games being launched so broken that they were literally unplayable.

It is easy to point fingers at the actual "devs" when in reality these devs lacked the resources. And what are these resources? Well time is the main one. The devs are given a tight deadline and in the end they mishmash a bunch of features without thorough testing.

The bigger the project, the more time you will need to make your software work. Especially if you are going into uncharted territory by developing an app that you have never built before. Give yourself time to research, test the developer experience of the framework, and performance as well. And this is before you start doing the actual writing.

I read somewhere that if you think it will take you two weeks, then you should add more weeks to make it three or four.

Testing!

We, developers, hate this because it breaks our ego. But for something to work, it needs to be tested. There are different kinds of tests and I should admit, I don't do most of them but I should. Especially now, when knowing how to write tests has become a requirement.

For me though, I enjoy testing the end product. Using the product as if I were the user. These types of tests, in my opinion, are the most important because you get to experience what the user experiences.

It might sound funny and odd but the number of developers who don't even test their products is shocking.

If you are a developer and you are reading this, I have one word for you!

Build an MVP

What is an MVP you ask? Well, I explain more about this here: A Welcoming User Experience

If you enjoyed this article, feel free to share this wherever you can and I will see you in the next one!