10.11 - “Real” Programs #
So, you now mostly know all the fundamental building blocks used to write basically everything out there.
But… not really?
The thing is, almost any program of moderate complexity is going to rely on libraries to provide extra, (hopefully) well tested, performant, hard to write functionality. Plus, most programs don’t exist in a vacuum: you may need to hook into a database, send packets over the internet, check for malicious user input, write to files, encrypt data, use an API to interact with a game engine, or even write in a different language and call one language’s code from another.
My point is, while you now have the foundational skills to write your own programs, a lot of programming is learning to use libraries and build up a repertoire of related knowledge that may not actually involve writing code directly. All the while, you still need to keep in mind the prior points:
- You have to use math, logic, and smart data structures to model your problem
- Not all solutions are created equal
- Making decisions before you know everything is hard
- You need to know if tools exist for the problem in the first place
- If they do, you need to know which tool to use
- You also need to know when to do it yourself anyway
So, how do you get good at these things?
- DO PROJECTS BY WRITING CODE.
- … with variety! Games, embedded hardware, networking tools, quick utilities, tools to make programming easier, etc.
- CONTRIBUTE TO OPEN SOURCE BY WRITING CODE.
- WRITE CODE IN MANY LANGUAGES.
- … using a variety of big-name libraries
- JUST. 👏 WRITE. 👏 FUCKING.👏 CODE. 👏
And don’t say, “But I don’t know what to write!”. There are thousands of open source projects that would welcome help. Hell, worst case poke me on Twitter @Vega_DW and I will find you something to work on.