Computer Survey 2007-08-01
- "How did you learn programming? Were any schools of any use? Or
maybe you didn't even bother with ending any schools :) ?"
- IMO, programming is about problem solving skills. So in
that sense, I first learned as a small child with these
cubicle wooden blocks that had holes in them. Some holes were
curved and others were straight through. You would build
structures out of the blocks by stacking them together so
the holes meet. Once you have finished, you would drop a
marble into the top and wait for it to come out the bottom.
Most of the time it would get stuck somewhere in the middle
where you have no idea where your mistake was made. I think
this taught me the most important aspect of programming:
Perseverance
- Either 2nd or 3rd grade our school had a lab of Apple 2's
which they taught us Logo (that turtle program). After that
we learned Apple BASIC through to 5th grade.
- In middle school, I was mostly on my own. School was
teaching word processing and spreadsheets while I was on
BBS's in my spare time. I learned my first language on my
own for the DOS terminal emulator Telix's scripting language
called SALT. I wrote a war dialer and pissed a lot of people
off in the middle of the night.
- High school was mainly competing in BASIC and Pascal competitions,
so I enrolled in an intro to C programming class at the local
community college.
- I went directly into COMPSCI in college, but I would say
that after the basics, I didn't learn nearly as much as I
did on the job, or in my spare time.
- "What do you think is the most important skill every programmer
should posses?"
- Introversion. While not necessarily a skill, I think it is
a vital trait to possess for developing the skills which
make for a good programmer. Whether this is a trait which
can be learned or not is something I don't know. A programmer
is at their prime when their emotions are tied to what they help
create.
-
"Do you think mathematics and/or physics are an important skill
for a programmer? Why?"
-
Neither. It might happen that someone who has, by nurture,
developed a strong sense of problem solving that there is a
correlation, but I don't think there is a causal relationship.
Obviously it is a different situation when a programmer is
solving a math or physics related problem, otherwise the
problems encountered in normal programming would come naturally
to someone who has developed good problem solving skills.
-
"What do you think will be the next big thing in computer
programming? X-oriented programming, y language, quantum
computers, what?"
-
That depends on what is considered "big". I don't see anything
in this area until programs are capable of creatively writing
programs, and eventually reproducing in this manner. At this
point competing programs will be fighting over resources and
natural selection will continue on its way. The exponential
time frame of such an event would be days to seconds. The
outcome of such a process is sometimes called a temporal
technological singularity.
-
"If you had three months to learn one relatively new technology,
which one would You choose?"
-
Three months isn't enough to learn anything important such
as organic chemistry or nano-technology. I'd probably
continue researching web-based deliberation techniques in
order to try to affect real life politics.
-
"What do you think makes some programmers 10 or 100 times more
productive than others?"
-
As before, some programmers are introverted. Whether it is
nature or nurture, I can't answer, but an introverted
individual spends most of their time doing what others
do only when they are clocked in at their job. Compound
that effort every day over years, and you have a significant
difference in programming productivity.
-
"What are your favourite tools (operating system,
programming/scripting language, text editor, version control
system, shell, database engine, other tools you can't live
without) and why do you like them more than others?"
- OS: Linux
- Language: C++
- Editor: vim
- SCM: subversion (possibly git.. not sure)
- Shell: bash (see Linux)
- SQL: agnostic
- I've learned my lesson about vendor-lockin. That's why I
don't use proprietary tools. Until copyright is abolished,
I will continue using free-software licenses as a rebelion
against, IMO, the antiquated and anti-productive notion of
copyright as things exist today.
I use vim because I prefer its modal behavior and how the
major command keys are layed out spatially. C++ is
extremely efficient while maintaining its expressive power.
-
"What is your favourite book related to computer programming?"
-
W. Richard Steven's "Advanced Programming in the Unix
Environment". I really like his side-notes about quirks and
bits of history about different implementations.
-
"What is Your favourite book NOT related to computer
programming?"
-
Ray Kurzweil's "The Age of Spiritual Machines: When Computers
Exceed Human Intelligence"
I'm kinda cheating here.. he does have some programming in the
book, which I based my chess engine off of.
-
"What are your favourite music bands/performers/compositors?"
-
Ministry, NIN, The Cure, Lisa Gerrard, http://somafm.com, etc