Making a Mobile App – Chapter 5: Go Your Own Way

“Real programmers set the universal constants at the start such that the >universe evolves to contain the disk with the data they want .”

xkcd 378

I wanted to add a gallery for users to be able to scroll through a variety of images so I did a quick google search about how I was going to go about it and I found react-native-image-view. In 6 lines of code and an array of Imgur links you can have a decent and working image gallery, job sorted! Right?

/static/postimages/9/gallery.webp

In truth, it unsettled me. Was this cheating? Should I have created my own gallery? This package was better than anything I could come up with and something I wasn’t prepared to spend time on but I still felt like a part of the app was no longer mine.

These sorts of ideas are things I have seen keep cropping up across everything I have done. I see other people’s enemy movement packages in Unity and magic code on StackOverflow that does everything you need, but are these a step to far? Are you losing what it means to actuallly create something? I’ve had all these questions and I think I will always question myself about the balance between hard coding everything from scratch and using magic boxes that do the gruntwork for you, but for now I have decided it’s about scope. It is not within the scope of this project to make an image gallery, it is just a small feature in an app that is for doing something else. The amount of time it would take to create something like this is time that could be spent doing something else that is specific to this app and does require the time spent on it.

The way I intend to go about my projects is to learn what I need out of it and the crucial elements of it. If I’m making a game in Unity I would feel uncomfortable using someone else’s movement package, movement is such a core aspect of a game’s feel that I think I should have control over its nuance. Equally, I am ok with using an image viewer package as it means I can spend more time on bigger features and I will write my own image viewer if this one is no longer fit for purpose. This is a pet project and so it is really only my own motivation that is going to get it finished. The more time I spend on a time consuming feature, the less likely it is that the project will get finished. What I want out of this app is to come out the other side of it with something that is complete and to achieve this I need to pick and choose my battles.