CodeGuru Home VC++ / MFC / C++ .NET / C# Visual Basic VB Forums Developer.com

# Thread: How to be a good programmer?

1. Elite Member
Join Date
May 2009
Posts
2,413

## Re: How to be a good programmer?

Originally Posted by laughing_rex
I am a B-tech student. I am very much interested in programming, and I wish to become a pro.
The best you can do as a student interested in programming is to NOT waste time coding on your own. Instead concentrate on the coursework getting good grades graduating with honors.

Take as many hard no-nonsense courses you can in computer science and math. Someone said each time you skip a math course you can hear the sound of doors closing and that's a fact. This kind of deep knowledge and insight is notoriously hard to acquire later in life.

Good luck.

2. Senior Member
Join Date
Oct 2008
Posts
1,456

## Re: How to be a good programmer?

I agree with everything nuzzle said, but

Originally Posted by nuzzle
This kind of deep knowledge and insight is notoriously hard to acquire later in life.
actually, I've yet to see a convincing proof/measure of this statement ( that math gets harder with age ) ...

consider a population of students; each student is expected to pass a math exam at each time T = ...,-1,0,1,2,..., and suppose that we can encode his difficulty in getting through a math exam scheduled at time T as a probability P(s), a known function of the student s indipendent of T ( and hence, of age A(s,T) ).

Moreover, we assume the student population stationary ( the same number of students with the same characteristics enters/exits the population for each T ), hence for each probability p and age A, the fraction of students s of age A with P(s)=p is a well defined function F(p) indipendent of time and age.

Now, supposing that students start their careers at more or less the same age A0, the distribution of exams passed by students of age A at time T follows

mixture{p,0->1}F(p)Binomial(x;A-A0,p)

with mean value

(A-A0) integral{p,0->1}F(p)pdp = I(A-A0), where I is the area below the graph of the cumulative function of F. That is a linear function of age.

then, let's consider those students of age A that had a bad performance in the past, that is they passed a number of exams < I(A-A0):
what's the probability P(A) that such a uniformly picked student will pass the next exam ?

it's P(A) = integral{p_0->1}F(p)*sum{x<I(A-A0)} Binomial(x;A-A0,p) p dp

which is non-increasing in A ( for each fixed p, the mean value and the sum range increase linearly, but the stddev increases as ^1/2, thus the sum terms decrease ).

Summarizing, this shows that the perceived probability of passing an exam ( supposed proportional or at most linearly bounded to the mean value of exams given at a certain age ) decreases with age even if the ability of passing it is a function of the student characteristics only ( constant in time ).
Put in another way, the fact that the probabilty to pass exams of a student having experienced bad performance in the past decreases with age does not imply that the same probability of that student from his point of view (eg. conditional to his characteristics only ) does too. Its our POV that induces an age dependent bias on student's successfulness.

That said, I do think that math gets harder in time, but not as an aging effect; I think its <mainly> due to the fact that the ability of acquiring new math knowledge vastly depends on knowing the basics on which that knowledge is founded on ...

3. ## Re: How to be a good programmer?

Originally Posted by nuzzle
The best you can do as a student interested in programming is to NOT waste time coding on your own. Instead concentrate on the coursework getting good grades graduating with honors.
I don't agree. That is the way to get a good corporate job, not necessarity be a good programmer. I have worked for corporations and interviewed many prospective new-grads. They were so full of the B.S. taught in college CS classes that it took hundreds of applicants to find those who had spent their free time learning the computers, not the theory. If you plan on climbing the corporate ladder, then follow nuzzle's advice, if you want to be GOOD and aren't interested in chapped lips, spend the time learning, Assembly, C, C++, and Java with substudies in Linux Kernel, Windows SDK, Windows MFC, and, although it is slowly dying (and I admit to being happy about that), Windows .NET. Also learn how all the hardware works.

The only good thing a CS degree is for is to make the upper management happy (like those incredibly stupid trust seminars). Spend your time learning math and playing on the PC. Actual grades are not important, you just need the piece of paper in your hand at the end. You aren't going to law or medical school where they actually care about grades, you are going into a tech field where skill is paramount.

Originally Posted by nuzzle
Take as many hard no-nonsense courses you can in computer science and math. Someone said each time you skip a math course you can hear the sound of doors closing and that's a fact. This kind of deep knowledge and insight is notoriously hard to acquire later in life.
True. Math is the one thing you learn in college that is needed for programming. I have been so glad that I took linear algebra and calculus. I use them all the time.

-Erik

4. Elite Member
Join Date
May 2009
Posts
2,413

## Re: How to be a good programmer?

Originally Posted by superbonzo
I agree with everything nuzzle said, but actually, I've yet to see a convincing proof/measure of this statement ( that math gets harder with age ) ...
I didn't mean you get stupid with age, I meant life itself has a tendency to get in the way as you get older.

Before you know it you have a spouse and kids and a dog and a house and a job and ... That's why I think you should take the opportunity to dig as deep as possible into the really heavy stuff while you're still young with few social responsibilities. Deep thinking requires peace and quiet and there's never a better time for that than during the college/university years.

But apart from that I think it's somewhat populistic to claim things don't get harder with age. Take linquistic, motoric and creative ability for example. If you didn't get fully immersed in a language before the age of 10 you'll never become truly fluent regardless of how much you learn and practice. And if you didn't learn how to swim or ride a bike before 20 you better stay away from water and never mount a bike unless padded up like a hockey goalie. And even if you find it as easy as before to learn new stuff it becomes increasingly hard to use new knowledge creatively. There's statistical evidence for that. Especially pure mathematicians tend to come up with break-through novel ideas when they're young, before 30 or so. Nobel laureates, although usually old when getting the price, tend to be rewarded for ideas hatched way back when they still had hair.

No rules without exceptions but why risk it? Good ideas come to the prepared programmer and the earlier you get prepared the longer you'll be prepared. (sounds like a Yogi Berra quote )

http://www.brainyquote.com/quotes/au...ogi_berra.html
Last edited by nuzzle; January 22nd, 2012 at 05:09 AM.

5. Senior Member
Join Date
Oct 2008
Posts
1,456

## Re: How to be a good programmer?

But apart from that I think it's somewhat populistic to claim that nothing gets harder with age.
saying the opposit without well grounded evidences is "populistic" as well, the only difference being to which subsocial group that claim is perceived pleasing vs irritating. Without evidence, they're both stereotypic ways of looking at the same social phenomenon.

Especially pure mathematicians tend to come up with break-through novel ideas when they're young, before 30 or so. Nobel laureates, although usually old when they get the price, tend to be rewarded for ideas hatched way back when they still had hair.
as explained in my previous post, the perceived dependecy on age of the probability of succeeding in doing something is a biased measure. That is, in general, your observed probability of success of an individual taken by an observer-dependent population has nothing to do with the probability of success of that individual.

Again, the idea of the "young" scientist is a stereotype that have no sensible evidence but a biased historical perception of events, that has little to do with the problem in question.
For axample, Einstein developed the theory of general relativity at around 30, but any serious account of that theory shows that he correctly understood his own theory much later, during his life and through a tortuous sequence of experiences ...

There's statstical evidence for that
actually, I'd like to see them. One thing is claiming that the performance of a subset of congnitive activities decrease with age, totally another thing is claiming that all cognitive abilities decrease with age and totally another thing is claiming that the ability to succeed in some human-knowledge-related goal depends on cognitive abilities only, and hence on age.

The ability of acquiring and producing new knowledge is a complex process involving much more then the mere use of cognitive ability. Yes, cognition is indispensable, in the same way legs are indispensable in order to win a marathon, but it's the bare minimum, isn't it ?

Actually, even if we focus on the much more simple case of "training" processes ( that typically involve just the acquisition of an ability through a repetitive and controlled interaction with a "training" environment with a well defined specific goal ) the dependcy on age is by no means trivial.

Indeed, some years ago a neuroscience article appeared in the journal Nature where owls of different ages were trained to capture a prey at a distance ( using visual stimuli only ) through various repetitions with a fixed environment.

The conclusions were that the performance of younger owls converged to a maximum faster than the rest of the population, but older owls were able to reach a higher maximum. In essence, younger owls proceeded by bigger (hence faster but less precise ) "steps".

Therefore, the observed age dependence was not an effect of congtive degeneration: on the contrary, it was the effect of an evolutionary trade-off of owls training abilities, explainable in terms of a two phase learning process: younger owls learn faster, leaving to the adult age the perfectioning of their prey capturing ability.

Of course, owls speed and accuracy will degrade when age approaches the "degeneracy" phase, typical of senescence. But this has nothing to do with the "apparent" cognitive degeneracy observed in the owl adult age, as explained above.

needless to say that humans are a much a more complex affair ... exhibiting much more complex age or age-unrelated dependencies. If I were to bet, I'd say that 99% of those gratuitous claims regarding the relation age/ability to acquire-produce knowledge ( ignoring "real" measurable cognitive degeneracy related to senescence ) are stereotypic views biased merely on historical, psychological or even just statistical effects.

No rules without exceptions but why risk it?
if you are planning a spouse and kids and a dog and a house and a job and ... then I totally agree . Otherwise, there are no real evidences to reasonably assess that risk based on age only ...

6. Elite Member
Join Date
May 2009
Posts
2,413

## Re: How to be a good programmer?

Originally Posted by egawtry
I don't agree.
And I don't agree back.

What constitutes a good programmer very much depends on the situation and who you're asking. A fresh computer science graduate may not necessarily fit a specific job profile but nor does a self-taught hacker. Sometimes one is preferred, sometimes the other, both are in demand. This is not a very fruitful way of defining a good programmer.

A much more profitable way of looking at it is to ask oneself - what kind of programmer do I want to be and how do I become good at it? And since the OP has embarked on a higher education already the worst advice he can get probably is what you gave him - throw it all away and become a hacker.

Your post reeks of contempt for higher education. You insinuate that colleges and universities teach garbage and a formal education and a solid scientific foundation is a total waste. I couldn't disagree more. I'd go as far as claiming that without a degree you won't become a good programmer, at least not reach your full potential. Simple as that. Experience is important but also graduates get it in due time. It takes about 15 years of work experience to become truely good at programming and building that on a thorough theoretical foundation cannot be beat. Anyone who claims otherwise either lacks insight or is plain downright jealous. Usually it's people without a degree who most loudly trumpet its worthlessness on every occasion. Often successful programmer/entrepreneurs who dropped out of college or even high-school are held up as proof that education is wasted. What's passed over in silence is what they do for their kids. That's right, they give them the best education money can buy at the highest ranking universities of the world.

But by all means go ahead and become a hacker. It's the hacker who gets laid off first at the next market downturn or company reorganization or technology shift or whim of the management or wrongful reason you cannot imagine. It's the hacker you'll find in a programming sweatshop in a damp dark cellar at the wrong side of town working for a nickel a day. If that's your kind of beer please feel free to go for it.

And that concludes my rant of the day.
Last edited by nuzzle; January 22nd, 2012 at 06:54 AM.

7. ## Re: How to be a good programmer?

Originally Posted by nuzzle
And I don't agree back.

Your post reeks of contempt for higher education. You insinuate that colleges and universities teach garbage and a formal education and a solid scientific foundation is a total waste.
I hardly have contempt for higher education, my current work on my masters demonstrates that. I DO have contempt for how CS is taught these days. Graduates leave college with all these bright ideas, but the only language they can really code in is Schema, of all things. I think the top down approach to computer education is a HORRIBLE way to teach, and is responsible for the current spat of bloatware in the industry. My freshman CS class in college had us writing an assembler, in assembly, then bootstrapping the code (1987). THAT is the way to learn how to program. Everyone I know accuses me of thinking in C, allowing me to write whole commercial grade apps in a day. I learned that by understanding the underlying hardware and software. It is really STUPID that colleges don't teach that any more. No wonder everything is outsourced to India. They still teach the old fashioned way there.

Okay, my rant is done.
-Erik

8. ## Re: How to be a good programmer?

Even an 8-month TRADE SCHOOL (in '82) did the same thing with BAL on a mainframe, but moved to COBOL. Business Related...

#### Posting Permissions

• You may not post new threads
• You may not post replies
• You may not post attachments
• You may not edit your posts
•