| For me it was doing nand2tetris. With just NAND gates and D flip flops as primitives, building a full 16bit ALU, then an ISA for it, an assembler, compiler, operating system (with memory mapped keyboard and screen) and interpreter. Then writing a Sudoku game in that interpreted language, and seeing it reduce all the way to just bits. And then running it on the simulated computer. Really have a holistic view of what actually happens when I run a computer. Also demystified compilers for me. Second thing was learning concurrency control, transactions and all that. The Eureka moment for me was understanding that git and databases solve a similar problem. After that, both tools lost their mystery. Second last but not least, making web apps! A low entry barrier way to make things anyone can use really boosted my confidence. Last but not least, learning the statistical underpinnings of machine learning. Of course, I'm still in University so I am by no means an expert at any of the above, but even at my level these things really help with knowing your true place. |