I've been developing for around 7 years and at the start of my career I would have very simple ideas, unoriginal ideas like a blog engine or an online store. I also had no idea how to deploy an app "correctly". So in my naivety I was able to build something relatively quickly and release it to the world.
Self-aware of this so one of my initial goals in my career was to understand the fundamentals and learn how to do things "correctly".
This had a downside... I just stopped releasing things! I had ideas, almost one every month but for one reason or another the idea would lose momentum and die. Honestly my Github account looks like the church scene in 28 Days Later. The amount of things I felt I needed to do to make it robust enough would just take to long so to be blunt with myself I gave up.
So before the new year was up I made a promise to release a project I was working on during the holidays! https://twitter.com/Jake0Lacey/status/1079126414610309120
I would like to share my experience and what I did that made this endeavour different and hopefully help some other people.
I'm going to split this the next bit into a couple of different sections.
- I was building this for me
- Design and scope
- The technical approach
- Done it better than perfect
This was a big motivator, previous projects were interesting technically however I was not the target audience, so they would die as I had no one to play with them. It really does help if your making the app for yourself, it pushes you to find a way to use it.
Because I knew I wanted to use it I needed to find the MVP, what was a good enough idea so I could start using it on the first day!
What I did was sit down and design how I wanted it to look and then stripped back the features so I only had one feature to worry about it had to be a good base to build and iterate everything else on.
This allowed me to focus on what I had to build, nothing more, nothing less.
My approach was a very aggressive one and I don't advice this if your practising a technique or skill but if your wanting to get something released quickly then go for it.
I'd like to expand on what I mean by aggressive, what I mean is that technical dept, duplication, poor performance & no unit/integration tests are welcome. Why because this kinda stuff only matters if the idea is successful and people are using it, then I can shift my focus.
Also this doesn't mean I just assumed things worked, I did test things hahah.
Previous ideas I would write on a notebook when I wanted to release something and would have dates on when I would finish x, y and z features. However I've found this really means nothing because the dates can be easily moved around.
So to make sure that you have accountability I would say that you share it with someone, I shared mine with Twitter and go some positive support which made me feel determined to get the work done!
I would love to release something that looks the way I imagined it or works 100% of the time, that doesn't have performance issues, that has 100% test coverage, that has CI/CD, that autoscaled and you get the point.
Perfection is a direction not a destination.
Being able to iterate on an idea that has already been released feels a lot better than slugging away for a couple of months on an idea and constantly asking yourself if its ready yet.
I hope this can help some people, it might be a little bit rambley. Also if you would like to know what I'm working on please do message me on Twitter! Its a project where you track things...
Also I couldn't have done it without @pixeldrift, so thanks!
Also found this little 💎 on my travels!