Something I have always found strange about being a Software Engineer, is that I am building a lot of other people's ideas/dreams.

Most people think that it is easy to build an app and get rich, as long as you have a good idea. But neither the building of the app nor having a great idea is easy, In my opinion they are equally difficult.

Building an App

I have far more experience in building apps than coming up with great ideas. Something that most of the general population does not understand is the extremely diverse Eco system of technologies that can be used to create an app. Most people I know, assume that all code is the same code. They assume that you can use the same code to make a mobile app, to make a website. As soon as you start to dive a little deeper into 'how to build an App' you start to see how scary it really is.

If you listen to Software Developers talk, you will hear the term Tech Stack. This refers to the technologies used to create the software they are working on. Tech Stacks are different depending on the system's requirements. There is no Tech Stack to rule them all.
Let's take web development for example. There are 3 main languages in web development; HTML, CSS and JavaScript (I say languages because HTML and CSS are not programming languages).

  • HTML - This is the content of the website. It should not do anything more than contain the content (words, images, videos, etc...). Most important component of web development.
  • CSS - Rules that your web browser can understand to apply styling such as colour, width, height, font, font-size, animations and so on. Not necessary but your website will look quite plain/ugly without any styling
  • JavaScript - This adds functionality to your website. This is a programming language and can be used to manipulate your website's content on the fly, by adding or removing HTML based on user actions on. Most websites don't need JavaScript, in fact some Developers would strongly suggest that JavaScript is never necessary.

So three languages to build a website, that seems quite simple. Enter the world of Frameworks and Preprocessors.

Frameworks

These were built to help developers churn out web apps faster, in most cases you will not need a framework in order to build a website, they come with a lot of bloat (because they try to accommodate as many situations as possible).

Preprocessors

These are languages that "translate" into another. Almost in the same way that code is compiled into binary (1010110101). One of the most common being SASS to CSS. A developer can write SASS, which is structured in a way to make it simpler to maintain style rules for a website with the use of variables, for loops and the ability to join multiple SASS files into one CSS when it "compiles".
Using a Preprocessor requires that the developer understands not only the Preprocessor language but also what it gets "compiled" to. There are Preprocessors for CSS, HTML, JavaScript and many more.

JavaScript

One of the best and worst things about JavaScript is that it has versions. Meaning that when you write fancy JavaScript that requires ES2018 features (latest JavaScript version as of writing), it will need to be compiled into something that older browsers will understand, this requires a Transpiler.

Good Ideas

Ideas are plentiful (wishminer.com), Uber for groceries, Facebook for the visually impaired, Twitter using real birds. But we need an idea that will make us money πŸ’°, a business idea... no, a great business idea.

One of the most infuriating things to hear as a developer (In my opinion) is: 'We want you (the developer) to have input on our idea'. To me this is a giant red flag 🚩. In most situations what it inevitably means is that very little if any planning has been done and that you will have to convert a pure idea into an actual business that makes money. This not only puts a lot of pressure on a developer, it also forces the developer to get involved in non-developer matters.

Let me give you an example: Uber for Groceries, it sounds great! When hearing a simple idea like this, you end up wondering why no one else has thought of it. They have, many people have thought of it. Uber for Groceries has a lot of challenges to overcome, which only become apparent when you think of the tough challenges that Uber had to go through. Let start with the number of apps. We would need 1 for customers, 1 for drivers and potentially 1 more for management. The customer app needs to show a list of groceries and then be able to add them to a cart and then have several methods of payment... easy πŸ‘. But wait where does this list of groceries come from? Will they come from the actual grocery stores? Do the grocery stores have their data available publicly? If it isn't publicly available who will get us access to the data? How do we integrate with their systems? Do they keep the data up to date? Will the store package up the ordered groceries for the driver to simply pickup? Will the driver have to pickup the groceries and take them through the till? What if the store only has a variant of the product requested by the customer? And that's just a few questions about the customer app.

A good idea comes with most, if not all of the questions already answered. Ideas like Uber seem so simple, because most of the planet could have come up with the idea. There were however some very difficult problems that needed to be sorted out for it to have become a great business idea. Then some very talented people were needed to bring that idea to life.

So when do you get rich?

What I have covered so far is just the basics. There is so much more around the development of an app and the legal requirements of creating a business from an idea. So if you asked me when you would become rich, I would say that at least a year from the day you start developing an idea, but rich is relative...

  • You may learn a lot from the experience of starting a business and failing (πŸ’°).
  • You may make valuable connections (πŸ’°).
  • You may make a name for yourself (πŸ’°).