This week I had planned on writing a post about a building a Gallery App for django. Specifically a gallery app with Django Rest Framework that allowed for posting/listing images. I was to use this app in a personal project I am working on. In fact, I am about 1,000 words deep into a very elaborate post about how I broke down and justified my decisions for this Gallery.
One of those justifications was that there wasn’t anything in the Django ecosystem that was a good enough fit and was also healthy. Whelp. I found one – Django Photologue. This article is a annecdote about why you should be very intentional in what you are developing; When do you invent something?
When To Invent?
This is the billion dollar question. This is what separates a useful gem of a project from just another… Gallery. To better understand where you or your colleagues may lie on the spectrum of this decision, lets examine the two extremes;
Not Invented Here
This is a generic term for people who avoid products, research or knowledge from external sources. Often times this is a form of belief preserverence. e.g. I truly believed that I had found a missing or neglected niche in the Django community. Part of this was just outdated knowdge of the ecosystem – I hadn’t really searched the proper terms, nor really been open to the idea of using an application like django-photologue.
Not Invented There
The opposite side of the spectrum are people who avoid products, research or knoweldge from internal sources. I dont fit in this camp at all so I have a hard time reconciling this too much. However, it is useful that I am aware of my tendancies. I try actively to consider purchasing or adopting software from an external source. e.g. Around 2020 I was looking for a way to easily bill my clients. I had convinced myself that I could integrate with stripe and build my own easily enough. I am still trying to convince myself to not do it. It’s horrible. Just use Harvest.
Measure Twice, Cut Once
I had no business writing my article the way I was. I was experimenting with a more formal “develop with me!” appraoch. I got so wrapped up in justifying the need for a django-gallery I failed to recognize the value in an external project. During this justification I convinced myself to not invent a gallery. In fact there is an explicit example of extending Django Photologue with a Django Rest APIJ.
This article clearly and concisely demonstrates how simply I can satisfy the following requirements;
- Upload multiple images to a database
- List the images in a masonry style layout
- Open a detailed view that scrolls
The above is taken from my 1,000 word waste of time as the bare minimum user requirements for the code I was writing. Not only does it demonstrate specifically how to impliment this in my personal project, it removes a plugin that I am not too crazy about. I had not done my due diligence in my research and I ended up wasting several hours writing complete garbage.
My many hours of wasted time could have been avoided by an hour of planning out several articles. I had a half-baked idea for a multipart series about building a thing, and that thing was already built. Take your time, be objective as possible and know where you fit on the spectrum of “Inventing”. If you have relevant colleagues or advisors you trust I’d encourage you to solicit advise on these topics. Ask where you fit in this spectrum.
I am of the mind that someone who can be as balanced in this type of decision will be the most effective and I encourage you to strive for this.
I will be writing another advice article on the most useful skill I’ve learned over the years. How/when to solve problems by Googling. It’s actually harder than it sounds to filter through the vast array of garbage out there on the internet. I will be mainly focusing on several ways I immediately filter out things that are not relevant to what I’m querying.