Archived

This topic is now archived and is closed to further replies.

Dale

What makes a GOOD programmer?

Recommended Posts

Hi folks. We all know what it takes to be a programmer. A little knowledge, a language, a compiler and a PC. But what does it take to be a GOOD programmer? IE: - Excellent problem-solving? - Good ideas? - Patience? I''m just really curious on this as I''m deciding whether I really DO want to leave PC support for PC programming. Thanks in advance. Dale ----------------------------- Student - "How do I make my first game?" Lecturer - "Based on your marks from your last assessment?"

Share this post


Link to post
Share on other sites
Guest Anonymous Poster
> But what does it take to be a GOOD programmer?

A very long time and lots of practice among other things... But it''s worth it if you wanted to ask that as well...

HTH,
Stuart.

Share this post


Link to post
Share on other sites
quote:
Original post by Dale
...what does it take to be a GOOD programmer?

Genius.

Face it, most programmers suck. They have bad habits, comment sloppily and even worse social skills. A good programmer is the guy who doesn''t do what doesn''t have to be done, does what needs to be done as efficiently and effectively as possible, ensures that other people can understand what he''s doing on a line-by-line (or section-by-section if the lines are self-explanatory) basis since others may need to use or maintain his code in the future, and can reduce all its technical complexity to a football analogy for management.

In short, you have to be me. Since there''s only one of me, you''re out of luck

(Everything except for the preceding paragraph is true though).



I wanna work for Microsoft!

Share this post


Link to post
Share on other sites
In my view a good programmer is someone who denounces all highlevel languages and programs everything in Assembly and C, and who can actually make a big program that works properly this way. But as the above persons are probably almost non-existant(as opposed to people who *think* they are like that i think its one who uses good solid OOP principles, without exaggerating, and still has at least a decent understanding what goes on "under the hood".
And above all, such a programmer needs damn good discipline.

Share this post


Link to post
Share on other sites
Guest Anonymous Poster
quote:
Original post by Ziphnor
In my view a good programmer is someone who denounces all highlevel languages and programs everything in Assembly and C, and who can actually make a big program that works properly this way.

That is a REAL PROGRAMMER, not a good programmer
I agree with Oluseyi, except i wish to add one more criterion: they hava an attitude problem.

Share this post


Link to post
Share on other sites
quote:
Original post by Ziphnor
...i think its one who uses good solid OOP principles, without exaggerating, and still has at least a decent understanding what goes on "under the hood".

So procedural programmers can''t be good?

Seriously, a good programmer analyzes the problem to obtain a robust solution (preferrably one that holds to a high degree of mathematical rigidity) and then implements it as elegantly and efficiently as possible with whichever tools/paradigms he/she is using.

What does it take to become a good programmer? Practice and time, and a willingness to learn.

quote:
And above all, such a programmer needs damn good discipline.

With this I agree completely.




I wanna work for Microsoft!

Share this post


Link to post
Share on other sites
Thanks for the replies guys.

Are there any "secondary" skills required outside of programming? I''ve heard some people say that a background study of physics and maths is beneficial (which I have at first-year uni level) and problem-solving skills (which I have a knack for, why I went into support originally. )

Also, one other question. How much and what parts of the programming cycle, is a programmer allowed to exercise independant decision-making? I assume there wouldn''t be too much in the design cycle, but when it comes down to HOW an outcome is reached it would be a lot of decision-making. Is this true?

Thanks
Dale


-----------------------------
Student - "How do I make my first game?"
Lecturer - "Based on your marks from your last assessment?"

Share this post


Link to post
Share on other sites
I would have to disagree that you have to use C++ and/or Assembly in order to be a GOOD programmer. You can be a GOOD programmer and just program Visual Basic as long as you meet the points that Oluseyi set forward. And sometimes, the simple difference between a GOOD programmer and a BAD programmer can be the KISS principle and when it is applied. I must say that at certain times (especially when developing pretty straight-forward business applications) it makes MORE sense to develop within VB because of how easy it should be to maintain in the future and how easy it should be to implement.

Granted, my personal taste is C++ but that has come with experience. I learned on Visual Basic and as you move on in your programming life, you realize that there are things that are just easier to implement in C++ because of things like pointers ( if not impossible in Visual Basic ). Now, I realize that you can "cheat" your way around this and program a lot of stuff in VB but it comes to a point where these things are easier to maintain and just more practical to do in C++.

I think I would phrase it that over time, a GOOD programmer tends to prefer to use C++ and/or Assembly because at least then "the sky is the limit".

Now granted, I am still pretty young (21 years old), so this is just my opinion and those of you with more experience may very well disagree with me .

Share this post


Link to post
Share on other sites
In my personal opinion a good programmer is:

  • One who is an all around intelligent person with a rather robust mathematical and scientific background.

  • One who has a great deal of discipline in programming techniques and methodologies.

  • One who is innovative, creative, and "thinks outside the box."

  • One who is experienced in programming

  • One who is willing to expand their horizons and educate themselves.

  • One who is extremely efficient and effective with their code design, implementation, and production of the final product.



To become a good programmer one must take the advice of this famous poem:

To follow the path:
look to the master,
follow the master,
walk with the master,
see through the master,
become the master.

Hope this helped Dale, good luck!

Edited by - Viscous-Flow on November 7, 2001 6:43:57 PM

Share this post


Link to post
Share on other sites
quote:
Original post by Dale
Are there any "secondary" skills required outside of programming? I''ve heard some people say that a background study of physics and maths is beneficial (which I have at first-year uni level) and problem-solving skills (which I have a knack for, why I went into support originally. )

Math and physics are very useful because a) computers are mathematical (their entire operation is based on binary math and boolean algebra, when viewed at a low enough level); and b) because many problems you will be faced with solving will involve a fair degree of math, especially calculus (rate of change anyone?)

In some situations you''ll be given the formulaic solution to your problems, so all you need to do is code/implement. Most of the time, however, you''ll be given fairly broad objectives and left to find a solution on your own. Which leads us to your next question...

quote:
How much and what parts of the programming cycle, is a programmer allowed to exercise independant decision-making? I assume there wouldn''t be too much in the design cycle, but when it comes down to HOW an outcome is reached it would be a lot of decision-making. Is this true?

Yes... no... it depends.

(And in the final analysis, the answer to most questions is "it depends.")

There are definite instances where you will be given a set of parameters (inputs) and a desired outcome/output and told to do it your way. In such situations, you obviously have total flexibility, and might want to find the most efficient or most flexible way so that you can reuse your code. Other times you may be extending or integrating with existing software, meaning you may be confined by the (possibly bad) decisions made by the original software designer(s). In cases like this, grit your teeth and get through it as quickly as possible.

Case number three is when you''re asked to "update" (ie rework that pile of shit) or "modernize" (ie untangle my spaghetti and produce lovely OO) code. In such cases, I almost always advocate a complete redesign; it''s what I did for one of my former employers (never got to finish the app sadly). Figure out what is done, when, how and why, and incorporate that knowledge into an elegant framework of your design. You can rip out relevant pieces of code if you want to, but you''ll probably end up tracing globals and renaming variables till your hair turns white.

So, as you can see, the answer truly is "it depends."



I wanna work for Microsoft!

Share this post


Link to post
Share on other sites
quote:
Original post by CruxMihiAncora
I would have to disagree that you have to use C++ and/or Assembly in order to be a GOOD programmer.


agreed.

its not what you know, its how you use it.


Edited by - Bezzant on November 7, 2001 6:56:33 PM

Share this post


Link to post
Share on other sites
Without doubt the most important skill is:

Problem solving.

Language is not important at all. If you are a good programmer you will know when to use what language and how to use it most effectivly.

Once you become a programmer you will

- reduce complex problems to simple sub problems
- write code that is easy to read from an outsider
- use the most effective algorithms (or most elegant)
- express your code in english or any other native language
- program fast and know how to reuse your code

It is an advantage to have a lot of math knowledge but it depends on what you are programming.

Share this post


Link to post
Share on other sites
Guest Anonymous Poster
depends on what you do.

In game programming you may need musical or audio engineering knowledge if you program audio software, for graphics you should know your maths pretty well (analytical, not stats), and if you program in the mechanical field (or if you want to make a decent simulator) learn your mechanics. Not this simple physics crap you think yo learn in high school and standard uni courses. I mean Mechanical Engineering stuff. Most games (all except maybe MS Flight Sim''s) use closed systems or tables to simulate the movements. A "good programmer" in this field would have wacked in some dynamics formulai instead.
Oh yeah. If Bugbear is telling the truth, they have used this method in Rally Trophy. The game is awesome anyway, but most games claim "state-of-the-art" simulation but only use tables and formulai from high school and first year physics.

Basically, know what your field is. Don''t just bollocks your way through it like most people do.

Share this post


Link to post
Share on other sites
Thanks for all your help guys. It''s certainly opened my eyes to a few things in programming that I was wondering about.

Going by all the info provided above, I believe I could become a good programmer. I have all the skills mentioned, but maybe a rework of my physics wouldn''t go astray.

Now that I know C++, I''ll work on my "good programming methods" now with psuedocode, comments and OO design.

Like you say, if I put the time in and have patience, I''ll get there.

Dale


-----------------------------
Student - "How do I make my first game?"
Lecturer - "Based on your marks from your last assessment?"

Share this post


Link to post
Share on other sites
Ok, for anyone that said no to anything, I hope you notice that unless you use a definition for good thats specific enough (doestn exist) you can''t really answr the question and thus such threads really shouldnt be started.

By anyways, its a little bit of everything but in the end the a program is supposed to do its task and in SOME situations its supposed to do it as fast as possible, thus a 1337 assembly freak has all the reason in the world to use VB, or B if you really don''t like M$.

Share this post


Link to post
Share on other sites
Guest Anonymous Poster
this was written about hackers, but i think a lot of it applys to programmers also:

Another one got caught today, it''s all over the papers.
"Teenager Arrested in Computer Crime Scandal",
"Hacker Arrested after Bank Tampering"...Damn kids. They''re all alike.


But did you, in your three-piece psychology and 1950''s
technobrain, ever take a look behind the eyes of the hacker? Did
you ever wonder what made him tick, what forces shaped him, what
may have molded him?

I am a hacker, enter my world...

Mine is a world that begins with school... I''m smarter
than most of the other kids, this crap they teach us bores me...
Damn underachiever. They''re all alike.


I''m in junior high or high school. I''ve listened to teachers
explain forthe fifteenth time how to reduce a fraction. I
understand it. "No, Ms. Smith, I didn''t show my work. I did it
in my head..." Damn kid. Probably copied it. They''re all alike.


I made a discovery today. I found a computer. Wait a second,
this is cool. It does what I want it to. If it makes a mistake,
it''s because I screwed it up. Not because it doesn''t like me...
Or feels threatened by me... Or thinks I''m a smart ass...
Or doesn''t like teaching and shouldn''t be here...
Damn kid. All he does is play games. They''re all alike.


And then it happened... a door opened to a world... rushing
through the phone line like heroin through an addict''s veins, an
electronic pulse is sent out, a refuge from the day-to-day
incompetencies is sought... a board is found.

"This is it... this is where I belong..."
I know everyone here... even if I''ve never met them, never talked to them, may never hear from them again... I know you all...

Damn kid. Tying up the phone line again. They''re all alike...


You bet your ass we''re all alike... we''ve been spoon-fed baby food at school when we hungered for steak... the bits of meat that you
did let slip through were pre-chewed and tasteless. We''ve been
dominated by sadists, or ignored by the apathetic. The few that
had something to teach found us willing pupils, but those few are
like drops of water in the desert.

This is our world now... the world of the electron and the switch,
the beauty of the baud. We make use of a service already
existing without paying for what could be dirt-cheap if it wasn''t
run by profiteering gluttons, and you callus criminals. We
explore... and you call us criminals. We seek after knowledge...
and you call us criminals. We exist without skin color, without
nationality, without religious bias... and you call us criminals.
You build atomic bombs, you wage wars, you murder, cheat, and lie
to us and try to make us believe it''s for our own good, yet we''re
the criminals.

Yes, I am a criminal. My crime is that of curiosity. My crime is that of judging people by what they say and think, not what they
look like. My crime is that of outsmarting you, something that
you will never forgive me for.

I am a hacker, and this is my manifesto. You may stop this
individual, but you can''t stop us all... after all, we''re all alike.

Share this post


Link to post
Share on other sites
Guest Anonymous Poster
Thats amaizing, that passage about hackers. Linux for the rest of us says this about hackers:
"If you have seen films like Sneakers, War Games or Swordfish you might think you know about hackers. You don''t. The hacker ethic is fundamentally about knowledge. Hackers share knowledge. They will build something "just for fun" or rip something apart to see how it works"

On the actual topic, I agree with most things said, esspecially Problem Solving, but I think its also about the way that you think. Think like the programming language, and all you will need to do is jot down your thoughts.

Share this post


Link to post
Share on other sites
This is completely off-topic, but I feel a detailed response is necessary for the sake of the beginners who may be taken in by this pile of shit. Crime never pays, and crackers and script kiddies will steal your game and all your rightful profit because they don't want to pay for anything. DO NOT support them.

quote:
Original post by Anonymous Poster
[stripping out a lot of irrelevant, self-serving nonsense]
...We make use of a service already existing without paying for what could be dirt-cheap if it wasn't run by profiteering gluttons, and you call us criminals.

To the "hackers" out there:
  1. It is dirt cheap. Compare US telephone price to other places in the world, anf you'll start to udnerstand that. I suppose you're not curious enough to figure that out, eh? "Selective curiosity."

  2. Profit is a necessity. Commerce is a necessity. WIthout them you wouldn't have the networks over which you practice your misdemeanours, so quit bitching and learn something useful.

Oh, and the rest of us "early programmers" (I wrote my first script when I was eight) were bored in junior high and high school too, we simply learned to harness our inquisitiveness and creativity more positively. You have no excuse.

quote:
We explore... and you call us criminals. We seek after knowledge... and you call us criminals. We exist without skin color, without nationality, without religious bias... and you call us criminals.

Yeah, yeah, yeah... "exploring" when you make other people pay for your connections, or abuse their credit cards.

I'm as much for the underdog and little guy as anyone else (and I love reading 2600 as it's full of interesting political positions), but crime is something I am fundamentally opposed to. And as for all that shit about your lack of bias, your androgynous state - come off it! That's just because you've (generally) failed to develop your social skills significantly to interact with others, and realize that with interaction comes both conflict and understanding. Giving nerds and geeks a bad rep, motherfuckers.

quote:
You build atomic bombs, you wage wars, you murder, cheat, and lie to us and try to make us believe it's for our own good, yet we're the criminals.

We also research medicine, developed the internet (that's right, us "real" hackers - the inquisitive minds who seek knowledge and share it freely - did that, not you lamers who try to break all we've built) and further the investigation of the world around us through science. Your point is?

My point is that the world consists of the good and the bad, and that for so-called "hackers" (and please, let's use their proper names: crackers and script kiddies) to focus exclusively on the bad and point to that as justification for their actions indicates serious problems.

quote:
Yes, I am a criminal. My crime is that of curiosity. My crime is that of judging people by what they say and think, not what they look like. My crime is that of outsmarting you, something that you will never forgive me for.

I am curious, yet you don't see me commiting virtual breaking and entering. Instead, I look for legitimate avenues to learn. The vast majority of you look for the tools other have written - lacking the skill, the drive, the discipline and the smarts to devise your own - and use them to commit crimes. Yes, crimes. Accessing private/personal information is a violation of my right to privacy as a human, and of government laws; you think your curiosity places you above that? I don't! Go fly a kite and wonder why it stays up; go figure out when the sun will burn out; go find the "meaning of life". That's satisfying curiosity!

This is in no way an attack on, or any form of response to, the Anonymous Poster who presented this material. Rather it is a response to those who further this uninformed ideal, and an informative message to those who may be buying the rhetoric.

[EDIT:] GameDev, we have a buggy bold tag...



I wanna work for Microsoft!

Edited by - Oluseyi on November 8, 2001 11:22:30 AM

Share this post


Link to post
Share on other sites
Guest Anonymous Poster
Amen Oluseyi.


That hacker ''poem'' is also known as the "Hacker Manifistation" found in a Security book, forgot the name. However, your points are very valid non the less.




Krez, I admire your posts and your knowledge/views, but give credit to whom it belongs ...


-David

Share this post


Link to post
Share on other sites
I have to agree with Oluseyi on this one. I do have to say that there is a difference between hackers and crackers. BUT, I believe that 95% (if not more) of people out there are crackers and/or script kiddies. Hacker was never meant to be a bad word originally; however, after the media got a hold of all this the word hacker started coming along with a criminal meaning.

A REAL hacker finds ways to satisfy his curiosity legally. For example, if you are REALLY curious about how Windows computers act and look from the outside world, go out and buy a piece of crap computer, put windows on it, and THEN break into it. This way, the computer is yours so you are doing everything perfectly legal (instead of breaking into other peoples'' computers to see how they work).

I also want to say that this post is not meant to "flame" anyone. This is just my opinion and you can take it or leave it .

Share this post


Link to post
Share on other sites
I agree entirely with you Oluseyi, but I''ll have to give credit to whoever wrote that Hacker Manifesto; it''s great rhetoric. There are a few grammatical errors which can interrup the flow from time to time, but it''s still very impressive. I really liked the repetition, "Damn ________... they''re all the same."

I wouldn''t call it a poem; it''s prose, but it''s a great example of why poetry is useful - to make prose even more powerful. What you do in school - "analyzing" poems with pseudo-psychology and finding their "true" meaning - is garbage. It''s useless. You''re wasting your time. Poetry in and of itself is often self-righteous and superrficial - because it tries to be so deep. This is not poetry; it''s poetic prose. I like it because it''s powerful rhetoric. But I hate it''s message.

"Hacker" used to mean anyone who pushed technology and tried new things. Those are the people I respect. "Hacker," now, however, has come to mean a "cyber-criminal." Most modern hackers are nothing more than vandals. They take a can of spraypaint or a book of matches they found - whether it be Sub7, BackOrifice, or one of countless other "Appz" - and use it to deface, detstroy, or disrupt computers, their content, and their users. I have no respect for these people.

The old breed of "hacker" is no longer called by its previous name. It has taken on others. Among these is "scener." Sceners program to create, not to destroy. They paint synthetic realities in code, pushing the limits not of the law but of the machine. Look at realtime raytracing intros and demos; see per-pixel lighting, reflections, and shadows and perfect parametric surfaces rendered at thirty frames per second. Be amazed. Then try to perform the same feat.

If you''re tired of being "spoon-fed baby food at school," you have a thousand options open to you other than hacking - just within the digital realm! If you choose to hack, it''s not really because you "want steak." It''s because you want to spraypaint the walls and fuck people over for fun but just were never able to in the real world; you''re too weak. The only reason you hack is because you feel a surge of power whenever you make some poor "mortal" who has money and friends and happiness feel your puny synthetic rage. If you could be a normal person, you would be. But you''re not good enough. You hack to feel strong, to escape your own inferiority.

Share this post


Link to post
Share on other sites