Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I think there is huge value in trying to become what has been called a "full stack programmer". In the maning of: try to understand how computer systems work by understanding how each part of the stack works. Don't try to completely understand every subtle detail of every part - try to understand it like you understand how a combustion engine works.

My list would be:

  - basic electronic concepts, ie. transistors, XOR / NAND, bit shifters, adders
  - assembly language
  - hardware layout: CPU, registers, main memory, MMU, interrupts
  - operating systems: hardware interface, multi processing, file systems
  - networking: packet networks, ethernet, TCP/IP (sliding window, congestion control)
  - low level programming: C with fopen & co, sockets, structs, system calls
  - compiler construction (this is important!), parsers, translators, programming language implementation and virtual machines
  - algorithms: complexity theory, automata, CFGs, common data structures (heaps, maps, trees)
  - discrete mathematics, statistics
I think if you can explain all of these in at least a sort-of, hand wavy way, then you're on a good path to become an excellent programmer. I also think that is what a good CS degree should teach you. Try to explain to yourself in a children's story way what actually happens when you click your mouse button. If you don't know something, look it up.


I am of a massively generalist bent: I agree with you. I've found that there is tremendous cross-fertilization between topics.

Of course, most places I've dealt with have no desire to hire someone who is a generalist: specialist or get out is my observation.


Who has the time? And you can be employable knowing only 1 of those.

I've done that stuff; by necessity, I'm old enough to have grown up with computers and didn't have it all on a platter. My sons are learning "top down" and doing fine.


Who has time? You have your whole life to study it--it's not exactly time pressure.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: