What Programming Language Should I Learn
I wrote these answers in response to questions from the start-up hub I work from.
What's the best programming language to start with?
I think it can help to understand why programming language trends happen in the first place. At one point in time, there might be a wildly popular programming language that everyone uses. Then one day, Programmer A at company A decides that the programming language they are currently learning makes it harder for them to solve a specific problem they encounter regularly enough for it to be a pain. So, they search around and learn (or develop) a language that helps them solve their problem more easily.
Because they can now solve their problem more easily, they are able to respond to their customer's needs faster and more efficiently. Over time, word of mouth spreads and more customers start leaving other services to pay for Company A's services. Company A makes lots of money.
What then happens is that Company A decides that they need more developers who know Language B, so that they can respond to customer needs even faster and more efficiently. At the moment, not many people know Language B, so they create job descriptions that offer a significantly higher salary to attract the hard to find Language B people.
A larger salary is more attractive, so people start learning Language B in order to get Language B jobs. However, the problem is that no one realised that Programmer A didn't care about the language, they cared about solving a problem they were experiencing. So all the companies now hiring Language B people, are getting things done just as fast as if they'd hired Language A people, and the cycle continues.
So, a more useful question than "What programming language should I learn/hire people for?" Is, "What problem am I trying to solve?"
This narrows down the pool of programming language options you have to choose from. If you want to build a website, then you can choose from a web language. If you want to build a mobile app, then choose from a language suited for that (you could even write a web-app and convert it into a mobile app using a third party tool, a bit hacky, but possible). If you want to do data analysis, pick from a pool suited to that.
Don't fall into the trap of then asking, okay, what's the best web-language to go for? Because the same process applies. Instead, something that helped me when I was first starting, was to get the table of contents for several books (one for each kind of language), which are free online. Then, put a tick next to any concept that appears in another table of contents. At the end of this, you should have a list of core concepts in order of most frequent appearance. If you start by learning those (data types, objects, methods etc), then it'll be easy for you to switch languages down the road. Because you'll just have to learn how to write those concepts in another language (instead of learning what they mean from scratch), then you can quickly move on to the more language specific concepts pretty easily.
Learning resourse-wise, I'd recommend two books:
- 57 exercises for programmers - Which is a language agnostic book. You can pick any language you want, and the problems have no solutions so it's more like the real world. You start with a problem and you learn what you need to solve them.
- The Pragmatic Programmer - An evergreen book which teaches you the essence of software development, also independent of any language. I adore my copy. It's truly fantastic, and practical. Especially in start-up environments.
I have this really well thought-out app idea, how can I find people to build it for me?
The kind of people who want to execute an idea that they think can really help people, are the kind of people I want to be surrounded by.
In my opinion, the most successful startups are those that focus on a core problem (smaller than most think) that is causing a specific group of people enough pain (whether they realise it or not), that they are willing to pay for a solution to solve it. It helps to think about what kind of things you have spent a significant amount of money on, and why.
So it's extremely, extremely important to validate your ideas before spending a huge amount of time and money developing something that hasn't been validated. By that, I mean you need some kind of buy in. You need proof that someone will buy it, not just the belief that someone will.
First, you need to test whether what you (or even your potential target market) thinks is a problem, is actually the problem worth solving. In some cases, the kind of people who are going to buy your product or service, might not be the same kind of people who are going to be using your product or service day-to-day. In my startup for example, C-suite level directors have a very different opinion about the kinds of problems that need to be solved, than the people on the ground. We've had to show them that change that filters up, is more positively transformative than change that filters down.
Second, you need to test whether your potential customers think that your idea is an effective solution to their problem. Even better if your idea spawns from conversations with them.
The reason I mention the above, is because "how do I find people to build this for me", depends on what you are trying to solve. As soon as you start looking for people with specific skill-sets, you lock yourself into a specific culture, because the circles we run in are defined by the problems we are trying to solve.
There's so much more that can be covered, but these were the main points that I thought would be helpful to share.
Feel free to reach out if you want to discuss/challenge anything. The more perspectives the better, I especially appreciate respectful disagreements, because yay debates and growth