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.
I’ve been programming professionally for about ten years. I still use my programming skills, but now I have to use many new skills such as sales, advertising, testing, typography, copy-writing, graphic design, etc.
programming is easy. selling is hard.
As a computer programmer, my tasks are usually well defined (and if they’re not, I can ask a few questions to define the task at hand). The outcome is measurable (it provides the defined functionality) and hopefully bug free.
For example I might be tasked to create a classifieds ads site. First I write down a detailed definition of what the site will (or won’t) do from a functional perspective. Then I can create mock-up screens of what the human interface will look like and finally I will write the code to implement the functionality. This is a pretty straight forward process where success is fairly well defined. Yes, I know that factors like security, performance, scalability and maintainability are not absolutes, but even with those factors you can usually reach a consensus on what’s good or bad.
The specifications of what I’m currently doing is something along the lines of “sell as many units as possible while still being profitable”. (We sell our product, on our site)
This is not easy.
There are probably a zillion different factors that come into play to make a sale. This is actually much more complex that computer programming, it’s just easier to understand each of the factors individually. More on this on a later post where I’ll break down the different factors that come into play.
I just started a new site / mailing list as a pet project.
Hebrew Speaking Parents on the Upper West Side
For those of you that do not live in New York City, the Upper West Side is a neighborhood in Manhattan.
Now you know where I live 🙂
UPDATE: Wow – it was a year ago that I wanted to this. It’s now Sept 2006. This really never got off the ground. I still have plans for web site for parents on the upper west side, but it won’t only be for Hebrew speakers.