Home
Services
Why Choose Us?
About Us
Testimonials
Articles
Links
Site Map
|
|
|
|
Why Choose Us?
Just before I started back to school for my degree in Computer Science, I met a guy who became a very good
friend of mine. He had already started in the Computer Science program at Indiana University Southeast (IUS).
He told me that I would find only two types of students in the Computer Science program:
You either have the ones that can "talk the talk",
but can't write a "lick of code"
or you have the ones that can program like crazy,
but if you ask them their name,
they have a hard time answering you.
Obviously he was stereotyping but there was some truth in what he said. I'm sure you've all met some
geeks¹
in your time. People kind of look at them in awe because of the amazing things they can do on computers,
but they aren't usually the ones you ask to sit down and have a cup of coffee with you because if they
actually say anything to you, you don't feel like you're going to understand it anyway. You've probably also
met the other type of person he mentioned, but you may not have known it. These are the ones you were able
to talk to and you were really impressed by them. The problem is that if they actually did any programming
for you, you found out that it wasn't very reliable and it didn't really help you. Again, I know my friend
was stereotyping and so am I, but I have a valid point. You need to have a cross between these two types of
people in order to really have a good programmer.
First, when choosing someone to do any type of programming work for you, make sure you can communicate with
him or her.
It doesn't matter how good of a programmer a person is,
if you can't communicate with them,
you can't make them understand what you want and need.
Second, you need to figure out whether the person is really capable of doing the work. In other words, make
sure that they aren't the kind that just "talks the talk". This of course is a little tougher to determine
without actually having them do some work for you.
I earned a Bachelor of Science degree in Computer Science as well as an Associate of Science degree in
Business graduating with Highest Distinction in both degrees. I was also the recipient of Computer Science
Student of the Year award my senior year in college at IUS. I know some people that think that you can have
a degree and not know anything practical. I suppose you can but I would hope that anyone that actually
graduates from college knows at least a little bit about the field they are going into. My degrees and my
4.0 average at IUS don't really prove whether I'm smart or not, but hopefully it shows you that I was a
diligent student who worked hard to learn all I could and in turn, I earned good grades. I think the fact
that I did not grow up using computers and I worked in a lot of different jobs before getting my degree,
helps me to be a better programmer. Not having grown up with computers also helps me to empathize better
with people who are faced with learning a new program or even just learning to use a computer. The majority
of the jobs I have had in my life have been dealing with customers (managing a retail store, banking and
real estate sales), which means that I know how to communicate. I pride myself in not being a
geek¹.
My first goal in any project is to sit down with the end user
and figure out what they truly need.
A lot of times they don't actually know themselves. They know they have a problem they need to solve so they
can do their job, but they don't really know how to go about doing that. With good communication, I as the
programmer can help you determine what would really help you be more efficient. The other problem you can
run into is that you get programmers that are more concerned with making something look cool or have neat
little features rather than with actually making the software do what it should. That's fine if the
functionality is there, but if basically all it does is look cool, it doesn't help you. In building
customized software it is more important to get the program running bug free and then add the neat little
features later.
Not only does my experience from my "previous life" help me, but also the experience I have gained since I
have been in the computer industry. I have worked with some really good programmers and systems analysts
who have helped me to grow a lot in my knowledge. I have also been exposed to many different departments
with varying types of needs in the companies I have worked for. Obviously I can't walk into a company, sit
down in your marketing, finance, merchandising or sales departments and take over peoples' jobs, but between
my business education and the practical experience of writing programs and reports for these different
departments, I have a very good understanding of the types of things they do and how the proper software can
make them more productive.
I have also worked with some not so good programmers that I have learned from. You can learn a lot by
cleaning up other people's mistakes! Working with some of these people really instilled the basics I was
taught in school. You know, some of those things that you kind of go, "yeah, whatever" or "that's pretty
obvious". Well, I found out that with a lot of people these things just plain weren't how they did their
job. The basic things that I'm talking about are the different phases of the life cycle of a project. Whole
books are written on this subject and you can make it very drawn out and complicated, but it is important
to at least follow some basic plan. If you look at it from a practical standpoint and address it in layman's
terms, here are some steps that really need to be followed for every project.
-
Define the problem and interview the people that are affected by it.
-
Design a solution to the problem.
-
Meet again with users to make sure that the design is really what they have in mind.
-
Build the software.
-
Test the software yourself.
-
Implement the software on a test system, teach some of the users how to use it and have them do
additional testing. This will of course identify bugs that need to be corrected.
-
Document everything!!!
-
After all testing is done; the remainder of the users should be given documentation and also taught
how to use the program.
This is a brief description and I know some people that would be screaming if they saw it written up this
way, but if we're realistic, there are many IT departments that don't even follow these basic steps. Getting
back to my point about learning from the not so good programmers, I really found out the hard way about what
happens when you have to support something that was created with no initial design, little or no testing, no
documentation and not much user input. It is NOT a pretty picture.
I have actually learned other things from some of these
slackers²
that will help me in this new business. I knew that I was brought up to take my responsibilities seriously
and to always do things to the best of my ability. But in some ways I thought that all kids, who were brought
up in "decent" families, especially here in the Midwest, were taught these same things. What I have found
over the years is there are a lot of people out there that have a terrible work ethic. They have the 9 to 5
mentality and do as little as humanly possible in order to keep their jobs. I don't really think that's the
kind of person you want doing programming work for you. You want the person that puts 110% into the project.
You also don't want someone who is not honest with you. If I don't know an answer to your question, I am
going to tell you that I don't know. I am also not going to agree with everything that you tell me. If I
think you are going down the wrong path, I am going to tell you that even if it causes me to not get the job
with you.
It all comes down to being honest and ethical.
If you can't trust me, as the expert, to give you honest opinions rather than just tell you what you want to
hear then you should be talking to someone else.
The last piece of advice I'd like to give you concerning how to choose the right person for the job has to
do with what that person's specialty is. People that aren't in the computer business tend to think that
everyone who is "into computers" knows everything there is to know about computers. Technology changes
so fast, there is no way you can be an expert in everything. My experience has shown me that one is either
an expert in hardware/networking or an expert in programming. I'm not saying that I haven't met programmers
that know a lot about hardware and networking. Nor am I saying that I haven't met hardware people that
can write software. But I am saying that with ever changing technology, you can't know everything about
everything. Obviously the software has to be able to run on the hardware so no matter which part you are an
expert in, you have to know a little about the other but you will find that most professionals in this
business are more specialized in one or the other. So my advice to you is to get the right person for the
job. If you need a new computer or you need some computers networked, go to a hardware/networking person.
If you need a program written, go to a computer programmer.
One last thought about the right person for the job. The one place that people love to try to save money
when it comes to technology is on their web site. With the programs that are available today, such as
FrontPage, ANYBODY that can use a computer can build a web site. If you can't do it yourself, probably every
one of you has a 12-year-old nephew or a kid next door that could do it for you. That's great and I am sure
that you (or the kid next door) can create it. But my question to you would be this: Does the person that's
building the site know enough about business to create the type of site that would actually be beneficial to
you? Does this person continue to read up on the ever-changing ways that search engines work, so he or she
knows how to optimize your site so people can actually find you? Is the person a
wannabe³
programmer that thinks that the more animation, hover buttons and huge graphics make the site better, even
though it takes five minutes for each page to load? Think about these things when you are trying to save
some money on the creation of your web site. In any project you embark on, it often pays off in the long run
to spend a little more up front and have a professional do it correctly from the start. You may be
interested in reading this article concerning
who should build your web site.
¹Geek - A person who is single-minded or accomplished in scientific or technical pursuits but is felt
to be socially inept.
²Slacker - Lacking in diligence or due care or concern; negligent: a slack worker. See Synonyms at
negligent.
³Wannabe - Wishing or aspiring to be; would-be.
|