Most beginners find it easy to learn the basics of programming such as writing expressions, conditions, loops and object-oriented programming. Sites like Code Academy, Code School have made it much simpler. But if they are asked to build a site like Medium. They struggle with it.
Learning to build full-fledged apps from scratch is a time consuming process. There is a learning curve. You will need to put in efforts, go through a series of videos or sit through a whole book to finally have the confidence to build things.
Some people get trained from their company. They are initially asked to work on small projects. Slowly they are challenged. Over a period of few months, with supervision they learn to build things.
There is another way. It is the hacker’s way. These people don’t have the patience to sit through courses and books. They learn by experimenting and produce results really fast. In this story I will teach you the same.
Don’t choose a project whose source code is readily available. I would suggest you to take real world projects. You might have friends with ideas. Volunteer the project for a small fee or a favour. This is good because your friend would only reward you after you complete it. It’s good motivation.
Divide and conquer
Break the project into smaller modules. Care must be taken while breaking the modules. Every module you build should be something which a user can use. If you want to break the Medium Project into modules.
This would be a good idea
- ) User registration & login
- ) Story editor for publishing stories
- ) Story lists
- ) Notifications
- ) Stats
After each module you will have a deliverable. Now you will find the project simpler and achievable.
Building smaller modules
There is 90% chance that source code of these smaller modules is readily available (It may come as an open source library or code written in tutorial blogs). This is fine as long as the whole project is not open source. The engineering happens when you connect these smaller modules into one system and they are made to work in harmony.
Now to build these smaller modules, your first goal must simply to make it work. For now, don’t break your head on how things work. Just get it running. You have plenty of online resources. Once you have made it work. Start experimenting! Go through the flow, tinker around and see what results they you get. This is where the real learning happens. This step is very important , there are people who skip this step just because it works. This will result in a half baked product. Make sure you understand how it works.
Once you understand how your code works. Google for ‘best practices’ with the frameworks you are using. Now compare your code with their’s. See what can be made better. Iterate multiple times. By doing this you will learn to reduce your lines of code, making them more readable also resulting in good performance.
You are likely to get stuck multiple times. It would be some errors or things just don’t work. In those case google the error or the solution you are trying to achieve. Chances are 99% , you will find the solution in stack overflow. If you don’t find a solution, try rephrasing the problem. If nothing works, post your problem on StackOverFlow. You should get help in few hours.
Since you are likely to use open source frameworks. Go to the Github repo of the respective framework. Search the error in the issues section and you are likely to find your solution. If not, open an issue. If the framework has good community they will suggest a work around in few hours.
Iteration and best practices can only help you to a certain extend. If you know coders with good experience consult them with your code. Their suggestions are gold. You can also post them on CodeReview.