====== how to git gud at writing software ====== Learning programming is not only learning how to code, but how to think like a coder. You're engineering a solution, not a program which is the end in itself. ===== Basics ===== * learn what types are. * you can only learn this properly when you use a language which has strong typing. * It's easier to write properly typed code in a strongly typed language. * Learn how bits work * logical AND, OR, XOR, NAND and NOR are basic operations you should know about * use a [[vcs|version control system]] like [[git|git]]. * it's basically "undo after you already hit save" in the beginning. ===== Intermediate ===== * Do a lot of coding. * Look around. If you have a hammer (the programming basics), everything is a nail. * Make your code readable * Use a consistent coding style, naming scheme and language. * Write proper comments. Only comment on complicated things. * Write long commit messages explaining your changes in detail. Don't only tell the reader //what// has changed, but //why// you changed it and where you can learn more about the changes you've made. * Let other people read your code. * Leverage pair programming. * Contribute to FOSS. ===== Professional ===== * Start a business which involves you solving software engineering problems. * You don't really have to code yourself if you can pay programming monkeys like you once were and tell them what to do.