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

Programming, objectively speaking, is nothing like balancing equations. When balancing equations, there is only one right answer. When programming, there is a goal and a series of subjective choices need to made in order to reach the goal. There are many right answers. The art and craft is in those subjective decisions. You might not care about the craft in those decisions, but, objectively speaking, I don’t think you can reduce programming to something like balancing equations.


[flagged]


What type of programming do you do? Because in my experience, programming is as much an art as it is a science (or mathematics). In my previous job, I had to classify phone numbers as either 1) valid NANP [1], 2) invalid NANP [2], or international, and it wasn't clear cut like balancing equations. I was surprised that the Oligarchic Cell Phone Company (our customer) didn't even send us valid phone numbers!

[1] North American Numbering Plan, 10 digits, with a three digit area code, a three digit exchange and a four digit number. From what I was able to understand (there wasn't a single document that described this), the three digit exchange had to start with 2-9, and the second two numbers couldn't be 1 (so no area code like 211, 311, 411, etc., but 201, 210 were valid), and the same for the three digit exchange, EXCEPT maybe for toll-free numbers (like 800-xxx-xxxx or 866-xxx-xxxx) where the exchange could be 211, 311, 411 (I never did get a clarification on that point).

[2] A number that might present itself as a NANP but doesn't follow the actual NANP specification.

[3] In telephony, there are two concepts, international numbers that can be dialed world wide, and "local", which can only be dialed from inside a region (like North America) or country. A number that starts with a "+" is considered international, which should be followed by a country code (one to four digits, starting with 1 to 9, with no rhyme nor reason as to length). If it doesn't start with a "+", it's a "local" number, limited to, as I stated, a region or country.

There is also no requirement that a "local" number be related in any way, shape, or form, to an international number. For instance, a "local" NANP number like 305-867-5309 can be represented as a international number as +1-305-867-5309, but for several countries, just taking the "local" number and adding a "+<country code>" won't work. Different rules for different regions/countries.


i think my example of "balancing equations" was a poor one. obviously, there is almost never a single objective solution to a programming problem.

probably a better metaphor for programming is as a craft -- not a pure science, like math; not a pure art, like painting or writing; but much more akin to something like woodworking




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

Search: