What REAL "Computer People" Need To Know About Computers

  A great deal of fundamental understanding about computers has been mostly
lost from our world today. Computers are so complicated and work so reliably
nowadays that many of the finer aspects of computing are now little more than
dim memories in the minds of some older hackers, or little-read publications
gathering dust in libraries somewhere. People often try to get away with
knowing as little as they can, and while they might be able to get away with
that, it's distressing how many people who believe themselves to be
knowledgeable about computers are actually unaware of some highly fundamental
  I'm not calling myself highly knowledgeable. I'm just a human, and like any
other human, there's only a limited amount of information my poor tiny brain
can hold. But I am someone who recognizes the value of deep learning. You've
heard the saying "A little knowledge is a dangerous thing." It really can be
  Part of the problem is the way people continue to equate a college or
university degree with an "education". While formalized learning can be
valuable, the reality is that an education program which is packaged into a
4-year schedule is much too short to provide a deep knowledge of all the
things computer people need to know. The real way for someone to learn is to
learn and do at the same time. Studying any subject in a classroom is an
extremely limiting activity; studying by actually doing something remains a
far more effective means of learning. The things that computer people really
need to know are things which they can (and should) learn on an ongoing basis
throughout their careers, instead of trying to cram them all into a formal
program which purports to prepare students for the real world.
  In this esssay, I'll attempt to touch on the basic things that a computer
person need to know to really be knowledgeable about their field. Some people
may disagree with me on some of these points, and that's fine; I don't know
everything, and like anyone else, I have my own way of seeing things. As I
see it, here are some of the most important things that every "computer
person" needs to know before they can really claim to be wizards in their
  It's often surprising how many so-called computer people know almost
nothing about electronics. The computer field has shifted significantly; it
used to be that computer science and electrical engineering were hardly
separable. Today, computer science is mostly about software, and people who
major in "computer science" in college or university study subjects far
removed from the physical world. While this allows you to write software, the
simple fact is that all that software still runs on a physical machine. To
understand how a computer really works, you can't get away from the physical.
You need to know electronics to be a computer guru.
  "Electronics" is, of course, a big field, and not all of it is applicable
to computers, but most of it is. Obviously you need to know about
semiconductor processing and manufacturing. You need to know both analog and
digital electronics, since both are used in computers. You need to be able to
design power supplies. You need to know about radio and wireless electronics,
since wireless network connections are ubiquitous today, and even before
that, packet radio systems had been used with computers for many years; you
need to know about antennas and RF circuits. You need to know how display
technology works, for CRT, LCD, and plasma systems, and be able to create
systems using these technologies. You also need to know about designing
programmable circuits in software using Verilog and VHDL, as well as how to
make an FPGA from scratch; for that matter, you need to know how to make
every applicable type of IC, including CPUs, memory chips, and other logic
chips. You also need to know about the signal-processing field associated
with electrical signals, meaning you need to know how to do Fourier and
Laplace transforms. You need to be able to solder.
  Carrying this notion forward, it's also helpful to have some grounding in
physics. Although the field of "electrical engineering" duplicates most of
the electricity and magnetism field of physics, it's often also helpful to
know about more general physics concepts like heat, light, and sound. All of
these topics have important applications in computers: Heat dissipation is
critical in today's fast-running CPUs, and light and sound are emitted by a
computer's monitor and speakers, so it's worth knowing how to work with those
light and sound waves. You need to know music theory and acoustics, since
music and other types of sound are used extensively with computers today.
  Another important fundamental science is chemistry. Chemistry is closely
related to physics, being mainly about the structure and functionality of
matter at the atomic and molecular level. Indeed, when people talk about the
behavior of electrons in semiconductors, it's impossible to say whether
they're talking physics or chemistry; it's really both. The basics of
chemistry are encompassed by the field of physics, but there are also more
specialized aspects of chemistry. Many of these don't relate very much to
computers, but to truly understand computers, you do need to know (for
example) the chemistry associated with chemicals like phthalocyanine, which
is used as a dye for CD-Rs, or the different phosphor chemicals that are used
in the screens of CRT displays. You should have be familiar with these
aspects of chemistry to be a computer person, but you can probably do without
much of the more specialized knowledge.
  The other broad field of science is biology. As of this writing, biology
still has very little application in the computer field. That's changing,
however, as the relatively new field of "bioinformatics" (a combination of
computer science and biology) is becoming more significant. Also, if the
Gibsonian vision of computer systems plugged directly into the nervous system
ever becomes a widespread reality, life sciences will start to become
extremely important to the computer field, especially neurology. For now,
however, the computer guru can probably get by without a thorough knowledge
of biology.
  Besides electrical engineering, more traditional fields of engineering,
especially mechanical engineering, are also helpful. Some parts of computers
still use moving parts, and you need to know how to make old-fashioned
machines, the kind that clank and hiss and move around. People sometimes
fantasize about a virtual world in which all physical things are left behind
and we exist in nothing but a reality composed of imagination, but that world
ain't here yet, and until it is, we'll still need machines that move.
  While on the topic of physical science and engineering, it's worth adding
that you need to be able to draw. You don't have to be able to draw
artistically (although it helps), but you do need to be capable of drafting.
A lot of engineers shy away from drafting because it's often incredibly
tedious work, but the simple fact is that engineers need to be able to draw
what they create. Before something ever hits the machine shop or fabrication
plant to become reality, it's visualized on a computer screen in some CAD
program. You need to be able to make your creations visible in a drawing
before they become real. You can pass your drafting work onto someone else
(indeed, many engineers do, which is why drafting is a viable career), but if
you do, you're not using a critical skill.
  Speaking of drafting, you also need to know machining. The ability to
create any shape of part out of plastic or metal by using a machine shop of
lathes, saws, drills, and similar tools is something of a niche art, yet it's
critical to many of the machines that exist in our everyday lives. If you can
turn a diagram into a physical part, you've got a valuable skill that is
applicable to many, many fields, including computing. There's not much
silicon or coding wizardry involved in making computer cases, just good
old-fashioned shop work.
  All of this has focused on the physical aspects of computers. These are
vital things to know because they are all necessary for the creation of
computers, but once the computer itself is built, it needs software to run,
and software is such an enormous beast that you could easily study it the
rest of your life and still have only scratched the surface of it. This is
why software is so fascinating to many people: You can lose yourself in it
  It goes without saying that the computer person needs to understand
software. You can't know everything about it, but you should learn what you
can if you intend to be knowledgeable about computers.
  First of all, of course, you need to know how to program. You should be
multilingual. You need to know all the major languages: C, Fortran, BASIC,
Pascal, assembly language and machine language for major processor
architectures, Perl, LISP, Java, and Python. And those are just the major
  You need to know all the major operating systems: MS-DOS, all versions of
Windows, all the major flavors of *nix, OS/2, BeOS, and CP/M. That means you
need to know all the commands and function calls that exist in these OSes.
  You need to know databases. You need to know SQL, of course, as well as all
the theory that goes into creating and maintaining a functional database.
  You need to know artificial intelligence (AI). You need to know about
neural networks. You need to know how to write programs that can think like
people. You need to be able to write a program that can pass the Turing test.
You need to know the purpose of every byte in every computer program that
exists in the world.
  There is (and probably always will be) some disagreement about how much
math computer people should know. There are many highly skilled and
proficient computer techs who can't even do basic algebra. On the other end
of the scale, there are several aspects of computer science which involve
math that makes calculus look like child's play. Like software, math goes on
forever. Nobody can know everything about math. So much has been studied and
written about it in the history of humanity that you cannot absorb it all in
one lifetime. Depending on what field(s) of computers you intend to
specialize in, you might not need to know that much math, though, so a decent
general principle is probably to try and learn what math you can, but don't
make math a huge priority. If you know arithmetic, algebra, and calculus,
you've got a pretty good grounding.
  And finally, bringing things back from the theoretical into the real world,
you need to know how computers relate to the world. The fact is that the
shape of computer hardware and software has been significantly affected by
the human factors of culture, psychology, economics, politics, and law; in
return, the computer has also impacted these fields. The truly computer-aware
must recognize how the computer changes the world and the human existence,
and what the realities of everyday life mean for the computer. You don't need
to know everything about psychology or economics, but you do need to know
enough to understand what they mean for the computer, and for you as a
computer person.
  It may sound like I'm saying you need to know everything. Well, I'm not
saying you need to know everything; indeed, I must acknowledge that it's not
possible for a person to know everything. What you must realize, however, is
that one of the things that makes computers so fascinating, important, and
ubiquitous in the world today is how many applications they have in human
life. Because computers are so versatile and important, they affect (and are
affected by) many, many different things. To truly understand how computers
work and what they do, you need to understand those things.
  You can be a pretty good computer person without knowing a lot of these
things. You can be a great network administrator, for example, without
knowing more than 8th grade math. But computers are mostly about information,
and people who like computers are usually people who like lots of
information. It behooves these people to learn a lot, because the more you
know, the more you know.

    Source: geocities.com/siliconvalley/2072

               ( geocities.com/siliconvalley)