My first big project: Chapter 1 - Planning & Thoughts

·

7 min read

After learning quite a bit of programming in various languages I thought I was ready for a big project. I'm going to document all my personal thoughts on to this blog. Please don't be bothered if my english isn't correct or if I do something that isn't usual in this industry, I'm not a professional! I may end up scraping it all or I may not, let's see how long this goes.

My plan

  • I want to know how to build a software - from the idea on to some brainstorming, the key concept, selecting the perfect stack, developing, testing and last but not least - publishing.
  • I want to learn how to build a professional website.
  • After publishing my app, I want to market it as much as possible. I want to know how to reach people actually downloading and using your software.
  • A software isn't perfect from day one. I want to maintain the software and provide the users with updates & bugfixes
  • The list doesn't end here but my brain doesn't know what steps are important too..

The Idea & Brainstorming

I'm not going to dig too deep into the idea thing, since I think it's a bit a unique idea, at least until I google my idea and find out it has been done 200 times before. honestly, DON'T do that. Every idea I've had has been done a couple of times before. I'm not going to destroy all my enthusiasm for all this! It may be a generic piece of software, but it's all about learning right? I have nothing to lose except some time I push into this project. About the idea: It has something to do with colours. A LOT of colours.

Brainstorming is easy, I just wrote all my ideas down on a notepad or a text file on the computer, nothing special about that. I didn't focus on a name (except for the name of this blog, which was a result of a pseudo word generator on the web). I focused more on the idea itself, add some features that are key to the project, and some that aren't that important (and may be let out). I made a lot of thoughts on the target platform (Available for macOS? or Windows only? Some mobile stuff planned?). That are a lot of things I want but I don't want to do it all at once, but I want to start with the macOS App first. Then doing it all on Windows again, in the end port the whole app to iOS.

Selecting the perfect stack

This one may belong to the brainstorming session alongside the thoughts on the platform but it's a big topic and I often find myself struggling with that. We all love it to learn new programming languages with all their fancy new features that any other language doesn't have. I made the decision to stay on the languages I already know.

Note that my project isn't that big and it doesn't really rely on performance heavy tasks. I chose Swift (& SwiftUI) for the macOS & iOS part and C# for the Windows part. I don't have plans to port it all on to Linux so I let this one out here. Electron was an option too, it's great for cross-platform apps that can be easily done in Javascript (well my idea is) but I don't like binary sizes this big and unneccessary RAM usage.

My app also does some networking with a cloud-server to authenticate, sync & store stuff on there, I will use Node.js with expressJS and MongoDB for that. I will try to implement GraphQL as an API. I chose this for educational purposes, I've never done much in NodeJS so I think this is a great opportunity to learn & use Javascript for the backend.

Conclusion

I'm not a professional developer, just a guy that likes to do that as a hobby. Those are my thoughts about software development in general and how I approach new projects & ideas. I think this topic might be interesting and helpful for some beginners too.

However, here is the outcome:

  • I do a software that's about colour
  • I have a plan of the features I want
  • I plan to do the macOS app first, then the Windows app and finally the iOS App
  • I chose Swift(UI) for macOS & iOS and C# for Windows, for the Backend I'll use NodeJS with packages of my choice
  • I've written something about making the website (i even started one) for this project but I ended up deleting this section, because before you do the website for your very good project, you will need progress!

Thank you for reading until here I would be thankful if you follow me to my journey!

Next up I'll document my process & progress on actually doing the developing part.