|
|
|
|
|
|
|
|
|
| Recent News |
Sat, May 31, 2008
MyProBB 2.3
Sun, Mar 30, 2008
MyProBB 2.1
Tue, Feb 26, 2008
MyProBB 2.0
Sun, Feb 24, 2008
MyProBB 1.9
Sat, Feb 16, 2008
MyProBB 1.8
Sun, Feb 03, 2008
MyProBB 1.7
Sat, Jan 05, 2008
MyProBB 1.6
Wed, Aug 08, 2007
MyProBB 1.5
Fri, Jul 06, 2007
MyTaskFocus 1.1
Fri, Jul 06, 2007
VerifyMyPC 2.6
Fri, Jul 06, 2007
MyUpdate Toolkit 1.4
Mon, Jun 25, 2007
MyProBB 1.4
Tue, Jun 19, 2007
Logo Program
Tue, Jun 19, 2007
MyTaskFocus 1.0
Wed, Jun 13, 2007
MyUpdate Toolkit 1.3
RSS Feed [?]
Available news collections
|
|
|
| Resources |
|
Bad User Interface Design
Current Security Problems
Other Essential C++ Books
ANSI Standards
Stories
|
|
|
|
| Safe C++ Design Principles |

By Thomas Hruska
Chapter 1 - In the Beginning
The moment you decided to learn how to program is the moment
you stopped being a user of the computer.
Users are people who use software while being oblivious to how
it was written or that line 73,225 is where bug XYZ was. They
simply don't care.
Users are also people who will never master the digital domain
of zeroes and ones. They are stuck with using the software
someone else has written. This, among other personal reasons,
inspired you to learn how to program.
You are no longer a software user. And by learning to program,
you lost something in the process. You think in terms of lines
of code, logic, mathematics, linked lists and other data
structures. Users think in terms of clicking buttons, moving
scrollbars, recognizing icons, starting applications, visiting
webpages, and other things that have nothing seemingly to do
with code. The two things are completely different worlds from
a user perspective. From a programmer's perspective, they are
two integrated worlds.
Newbies, Programmers, and Software Developers
Since you are not a user, you fall into one of three categories.
There are the newbies, the programmers, and the software
developers. There are very few software developers in the
world. When a corporation gets their hands on a real software
developer, they know it and do just about everything to keep
that person around.
So, just what is the difference between a newbie, programmer,
and a software developer?
A newbie is someone who is just learning to write code. The
newbie is someone who "hacks" together simple applications
either because someone tells them to or they think doing so is
the path to a good career. By "hack", I mean they take a
virtual axe to the book they are learning from and cut and paste
a line of code from here and there not knowing what will
actually happen. Newbies are the sort of people who ask
questions on C/C++ groups about broken code or code that
exhibits undefined behavior. Or they ask whether one line of
code is faster than the other. Sometimes other newbies reply,
which only encourages the first person to continue writing bad
code.
A programmer is someone who understands the programming language
being used, most of its nuances, and is open to criticism and
new concepts but has developed a personal style of writing code
that doesn't change readily. The programmer's personal style
includes the layout of their code as well as the functional
design. The style can result in easy-to-maintain or
difficult-to-maintain code. The programmer, also, is unable to
see the forest for the trees. That is, they understand given
assignments or can create assignments for themselves and get
from point A to point B in code, but the programmer creates and
imposes point B on users of the code being written. Point B is
usually some sort of user interface. If the user interface is
programmer oriented instead of user oriented, it can cause the
user to have unnecessary mental stress with trying to use the
application.
In contrast, a software developer is someone who knows exactly
how to write software for users. The software developer
carefully and painstakingly crafts applications so that the
software is intuitive and easy to use. The software developer
focuses 50% to 75% of all effort on making sure the user
understands the software. The software developer has users test
the software and watches them use it without interfering
(usability testing). The software developer also knows how to
get the job done quickly and safely in such a way that
application bugs are minimized and application portability is
maximized.
...
The author is a reasonable person if you truly can't afford the book.
|
|
|
|
|