Just a quick note.
I’ve been wanted to write about this subject for quite some time, but it doesn’t look like I’ll have the time to go into the level of detail I wanted to, so I’ll just tell you the main idea.
75% of what it takes to be a great programmer is understanding 100% of what’s happening (at the bit level) and why it’s that way.
For web developers doing PHP / Database programming, I mean truly understanding every process that’s going on from when a user enters a URL or click’s on a link to when the result is displayed back in the browser.
- How the a PC works, especially how browsers work (client side caching, cookies, HTTP, DNS, host files, etc)
- How the Networks and the Internet Works (TCP/IP, Ports, firewalls, NAT, hops, latency, broadband, dial-up, DNS, etc)
- How computer’s work (I’m thinking server side here), Memory, RAM, Hard disks, Operating systems, processes, threads, RAID, Binary Logic, how data is stored in memory, swapping, etc.
- How databases work. (normal forms, indexes, triggers, stored procs, SQL, constraints, views, etc)
- Comp Sci “Basics” – Data Structures and Algorithms
The other 25% is about the process. Software Engineering stuff. How to get from an idea in someone’s head to a final product and beyond in the most efficient way.
I’ll try to write more about this later.