← Back to Articles

Dear Developer, You Are Not a Consumer

Featured Image

Computers

One day I was visiting my local consumer electronics store to look at the computers they had. As I was browsing through the laptops, I realized that none of them were suitable for me. They all had the Windows operating systems installed on them and they had a maximum of 16GB of RAM. I was frustrated because I didn't see any computers that were designed for developers like me. As a developer, I need a powerful machine with at least 64GB of RAM and preferably running Linux. I went to the store right next to it and I saw the same thing. There was not a single computer that was made for developers. And then it hit me, I was at a "consumer" electronics store. It was in the name itself. These stores are designed for consumers, not developers. If I wanted a computer that was tailored to my needs, I would have to look elsewhere. It seems that there is a general assumption that developers will not be shopping at these stores and they will be looking for specialized hardware elsewhere. The problem was not with the store, I was simply in the wrong place.

Web Browsers

I was developing a web app on my computer and needed to quickly test it on a real smartphone (not the emulated version of Chrome devtools). But as my server was expecting the host header to be set, I couldn't just type in the IP address of my computer in the browser and expect it to work. I needed to set the host header in the request. I looked for a way to specify the host header on my Google Chrome mobile browser but couldn't find a way to do it. Such a feature simply doesn't exist in popular browsers. And then it hit me again, these browsers are designed for consumers, not developers. Even though it would be a very useful feature for developers and easy to implement, it is not there because the majority of users don't need it. Good luck, developers! So you need to either have a rooted phone, a DNS resolver, or a proxy server to test your app on a real device. Again, there seems to be a general expectation and assumption that, well, you're a developer, you'll figure it out.

Smartphones

I was trying to test an IPv6 server one day and the only device that had an IPv6 address was my smartphone. So I quickly opened up Termux and started a listener using nc. But to my surprise, I got a permissions denied error. I didn't have the permissions to do it. I needed a rooted phone. But nobody actually sells rooted smartphones. I had to go through the process of rooting my phone (or my wife's phone) to be able to test my server. It was a hassle. But then it hit me again, smartphones are designed for consumers, not developers. The majority of users don't need to have root access to their phones. But for a developer, it's very important to have a rooted phone. And again, there seems to be a general assumption that developers will just ... figure it out and find a way to do it.

Conclusion

So, dear developer, you are not a consumer. You are a developer. You have specialized needs and requirements that are not met by the general consumer market. You need powerful machines, specialized software, and access to the underlying system. You need to be able to test your apps on real devices, set custom headers, and have root access to your devices. I didn't mention the generic consumer routers that your average ISP provides or the total lack of tinker-friendly, non-hackable smart devices. It seems odd that nobody is catering to these needs. After all, there wouldn't be any consumer products if it weren't for developers creating them.

Listen to Deep Dive

Download