Learning how to code is largely about learning how to optimize your time, knowing where to find solutions to each problem you face, and of course, knowing how to pick out the quality ones among them. That said, you should also put some effort into reinventing some already existing concepts from time to time. Not with the idea of actually releasing any application when you’re done with your work, but rather to force yourself to deal with some problems that you might not even know exist.
There’s no shame in copying from the best tools either – in fact, it’s recommended. That way, you’ll spot some common patterns early on and you’ll also force yourself to ask some questions, such as “why did they do it this way?”
To-do Lists and Other Organizers
One of the most basic types of apps out there can also be one of the most deceiving in terms of implementation difficulty. A simple to-do list might seem like something that should only take a couple of hours to hack out, but in reality, it can have many intricate points that you’ll need to learn to address. This is a good starting point for learning memory management and effective UI/UX design. You can also extend it to other types of organizer tools as well – the main point is that you should work with large sets of data and be forced to sort it out in a sensible manner.
Another great field to look into if you want to learn some interesting things fast are camera tools. This goes beyond taking selfies and adding filters to them – a smartphone’s camera can be surprisingly effective at solving various common problems. Take a look at some popular barcode scanning software, for example. Try implementing something like that yourself from scratch – it’s not as easy as it looks, but it will teach you a lot about digital vision. This can later be linked to studying artificial intelligence.
Radio and Network Communication
Last but not least, play around with some radio waves and network protocols too. Network programming is a very challenging field full of unexpected difficulties, and it’s something that requires a lot of expertise. But getting a hang on the fundamentals is not that hard, and it can be fun to see your data going over the network and making something happen. From then on, you can easily start learning about specific technologies and protocols.
Don’t be afraid of outright copying something while you’re learning – as long as you actually learn something about the way it works and was designed. That’s how most people get through the initial stages of their education in fields like programming. It’s a form of craft, and it requires someone to show you the right way to do things until you develop the confidence to figure that out yourself. On the bright side, once you’ve got the ball rolling, it gets easier and easier over time, especially if you have a knack for the technological side of things.