LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Programming (https://www.linuxquestions.org/questions/programming-9/)
-   -   Is a good programmer born or made? (https://www.linuxquestions.org/questions/programming-9/is-a-good-programmer-born-or-made-4175517343/)

moisespedro 09-04-2014 02:42 AM

Is a good programmer born or made?
 
I started taughing myself programming languages 1~2 months ago and until now I pretty much suck at it. How did you start? Can you become good or are good programmes born? If they are made how many time would you see is enough to get good or give up?

I didn't really know where to ask this, it seems the best place to ask here.

NevemTeve 09-04-2014 02:49 AM

It's many different things, including knowledge and a way of thinking. For a start, read this (and learn it by heart too): How To Become A Hacker
In this document, mind you, the word 'hacker' means 'creative programmer', not 'haxor'.

a4z 09-04-2014 04:34 AM

you are good in what you do a lot

NGIB 09-04-2014 05:08 AM

Taught myself to program beginning in 1980 with BASIC on a VIC-20. Within 5 years I was writing software in C for the Air Force. Patience and discipline are the 2 qualities that are paramount to make a good programmer. Get in a hurry or try to cut corners and you will fail. I have spent days going over a code fragment to isolate a bug and it is what it is. Approach things in a linear, step by step fashion and solve one problem before moving on to the next.

In my day, every byte of RAM and storage was crucial so code had to be fast and efficient. Now days, I think folks tend to cobble stuff together and good enough is a mantra to live by...

danielbmartin 09-04-2014 10:06 AM

Quote:

Originally Posted by moisespedro (Post 5232185)
Is a good programmer born or made?

It's similar to playing a musical instrument. Each person is born with a certain amount of talent. Education, training, and practice can enable that person to maximize his/her level of performance consistent with that inborn level of talent.

Someone born with "perfect pitch" has an advantage in music. There might be an equivalent to "perfect pitch" in programming but that characteristic has not been discovered. It could be a gift for problem analysis and algorithm design as opposed to the ability to master the syntax of many computer languages.

Most people can, with motivation, become competent programmers. A few, a very few, will become true stars.

Daniel B. Martin

jailbait 09-04-2014 10:51 AM

Quote:

Originally Posted by NGIB (Post 5232223)
In my day, every byte of RAM and storage was crucial so code had to be fast and efficient. Now days, I think folks tend to cobble stuff together and good enough is a mantra to live by...

This is a matter of minimizing cost. When I started programming in 1967 a mainframe computer that was not as powerful as the desktop I am currently using rented for about $150,000 a month. Programmers made about $10,000 a year tops. So it was well worth the effort for a programmer to spend a week optimizing a program to save some machine resources when the program ran.

Since then the cost of hardware has dropped radically. The cost of programming has not dropped anywhere near as much even allowing for inflation.. Programmers are possible twice as cost effective today as they were in 1967. Hardware is approximately 60,000 times more cost effective today as it was in 1967, allowing for inflation.

Now a good programmer optimizes for programmer cost which also includes the cost of software maintenance. Optimizing for hardware efficiency is still done but not so much.

---------------------
Steve Stites

bulliver 09-04-2014 11:20 AM

I am self taught, and I am definitely better now than when I started. I believe a good programmer can be made, otherwise, there would be no point.

pan64 09-04-2014 11:21 AM

You have to be interested. I mean you (have to) want to know how does it work, you must enjoy learning it, (be familiar) and working with it. I do not mean you want to complete your job, but to have the power to (be able to) solve problems. One usually says the best thing is when your job and your hobby are exactly the same thing. You will be a good programmer if your daily work will be seen as solving a very interesting problem and you are the best to give the perfect solution.
From the other hand you must really have the knowledge to really "produce" the best solution.
So everybody can be a very good programmer just he/she should do it as a hobby, not as having a rough time...

Just how I think

dugan 09-04-2014 11:23 AM

Made.

And it gets easier the more you do it. Mastering one language, for example, puts you in a position to easily learn languages that are similar in design.

bulliver 09-04-2014 11:32 AM

Quote:

Originally Posted by dugan (Post 5232339)
Made.

And it gets easier the more you do it. Mastering one language, for example, puts you in a position to easily learn languages that are similar in design.

Yes. The first one is the hardest. Once you have the concepts down, learning another language is mostly a question of syntax.

NGIB 09-04-2014 11:45 AM

I taught BASIC programming for a year while I was stationed in Korea. I began every new class the same way:

I would write "DWIM" in large letters on the chalkboard before class but I wouldn't mention anything about it. Invariably someone would ask what it meant before class ended. This is where I explained there was no "Do What I Meant" syntax in any programming language. The first few classes I would look out at the audience and guess how many "light bulbs" would illuminate before the course ended - some never did...

pan64 09-04-2014 11:49 AM

Quote:

Originally Posted by bulliver (Post 5232342)
Yes. The first one is the hardest. Once you have the concepts down, learning another language is mostly a question of syntax.

No it is not really true. Actually you can write your program in several different ways, using perl you need to know the "perlish" way, using python you will need to know the pythonish way.... And that is not about the syntax only, but the efficient usage of internal structures, language elements and available libraries.
(just look for "how to write good perl/python/ruby/whatever" code or look for optimization tips)

szboardstretcher 09-04-2014 12:28 PM

Quote:

Originally Posted by pan64 (Post 5232348)
No it is not really true. Actually you can write your program in several different ways, using perl you need to know the "perlish" way, using python you will need to know the pythonish way.... And that is not about the syntax only, but the efficient usage of internal structures, language elements and available libraries.

I disagree, switching languages, at a base level, is just familiarizing with syntax. Part of that syntax is calling out libraries/headers/whatever.

A function is a function. A class is a class.

Sure there are 'differences' between languages,.. but in the end it is all just different ways to access low-level assembly structures. If you know what you want at a base level, it shouldn't be hard to figure out the code, no matter the language, to do so.

php
Code:

<?php
print ('hello world!');
?>

c
Code:

#include <stdio.h>
int main(void) {
    puts("hello world");
}

malbolge
Code:

('&%:9]!~}|z2Vxwv-,POqponl$Hjig%eB@@>}=<M:9wv6WsU2T|nm-,jcL(I&%$#"
`CB]V?Tx<uVtT`Rpo3NlF.Jh++FdbCBA@?]!~|4XzyTT43Qsqq(Lnmkj"Fhg${z@>

Its all relative.

bulliver 09-04-2014 12:30 PM

Have to disagree with you pan64, of course it takes a while to 'master' a language, but that's not what I'm talking about. My first language was Python. Took a great deal of time until I was able to write any sort of non-trivial/productive code. After I was able to do so, learning to write non-trivial code in Ruby, Perl, Scheme took only a matter of days. Like I say, just learning the syntax, because I already knew the fundamentals. You mention available libraries, once understanding how they work and what they are used for it's a matter of 'import foo' in Python vs 'load foo' or 'require foo' in Ruby. 'elif' vs 'elsif'. These differences are not hard to grok...

Habitual 09-04-2014 12:42 PM

Neither. They are forged upon the anvil of experience.

szboardstretcher 09-04-2014 12:48 PM

Both. All programmers were at one time 'made' by parents, and 'born' to their mother.

I think that the question is vague and leading though. All skills are acquired through practice and experience. Pretty much everyone knows this.

No one has EVER been born with some advanced skill - like programming - in their brain. Not ever. That said, some people might have an easier time picking up programming than another. But, as with most things, practice and dedication will eventually allow you to do it.

Unless there is something physically wrong with the persons brain.

jailbait 09-04-2014 03:44 PM

Quote:

Originally Posted by moisespedro (Post 5232185)
I started taughing myself programming languages 1~2 months ago and until now I pretty much suck at it. How did you start? Can you become good or are good programmes born? If they are made how many time would you see is enough to get good or give up?

When I was a programming manager I would always assign a beginning programmer to work with one of the lead programmers. In general after about a 6 month apprenticeship the new programmer was fundamentally sound and could work under their own direction. This was pretty much standard industry practice during the 70s and 80s. In Open Source you get the same effect when you submit work to a project leader and they accept or reject your work based on the quality of your work.

A good example of the flawed work produced by a programmer who is not fundamentally sound is Windows. Bill Gates was self taught and thought he knew it all. In reality he was missing some basic concepts, especially the concept of modularity.

--------------------------
Steve Stites

sundialsvcs 09-04-2014 07:04 PM

Programming is a craft just like any other. You learn a craft by doing it ... a lot. It certainly helps to truly love what you do.

And, I do. I still do, after more than 30 years. It really needs to be, at least in part, your hobby. It's so much work, sometimes, that you really need to be having fun.

On the one hand, I continue to be fascinated by the prospect of causing a machine to do useful work for people. I never dreamed that the machines would become as powerful as they are, nor that they would do so as rapidly and as completely as they did.

However, I guess what really motivates me is ... the people. People who genuinely need what you know how to do for them, and who respect you and rely upon you for your ability to do it for them. There just aren't that many things that you can do in a business situation that are so rewarding. I've been a consultant (http://www.sundialservices.com, a trainer, a professor. And, in every case, it's about having the ability to make "a machine" do useful and valued things for "people." (Plus the aforementioned fascination with just what these machines can today be made to do.)

metaschima 09-05-2014 05:06 PM

Both. I don't think there is a single topic where nature vs. nurture is relevant.

You have to be born with a certain predisposition, and you have to work at it. If you aren't interested in computer and programming, then you will never be a good programmer no matter how hard you try.

johnsfine 09-05-2014 05:42 PM

Quote:

Originally Posted by moisespedro (Post 5232185)
Can you become good or are good programmes born?

All my experience says good programmers are born, not made.

LONG LONG ago, within a month of starting to learn programming (in a national science foundation summer program during high school), I was better at it than the majority of profession programmers. I was tutoring graduate students in programming a few months later.

Much more recently, someone who had been the best CS student in a local high school before going to a college that wasted his time (his programming sure didn't improve compared to what he did in high school) worked as a summer intern where I work and did more and better work than PHDs with 10 years job experience.

When I was in high school, I had good success teaching many people who were not naturally gifted to be very good programmers (while failing miserably with others). More recently I have much more consistently failed to get across the concepts that good programmers need. Some things may be just too obvious to me to even communicate to people who don't naturally get it. Looking at how programming is normally taught, I can see there is never even any attempt to teach the important concepts. The teachers never learned the important concepts themselves.

I don't have enough insight into how ordinary people think to understand why they can't ever be good programmers or if that is false what they or their teachers would need to do to build those skills. All my experience says it just doesn't happen. A bad programmer given another 20 years of job experience is still a bad programmer.

For your individual advice, that should not be as negative as it sounds. The large majority of professional programmers are staggeringly bad at it. Those hiring and managing programmers are largely clueless about competence and about results. With perseverance and effort, anyone can fake it as well as the average professional programmer and get good pay for really rotten work.

psionl0 09-08-2014 07:06 AM

The ability to learn and use all of the aspects of (say) GUI programming and programming syntax is knowledge that can be acquired with time and practice.

However, the ability to come up with an algorithm for a new and unusual situation is not just something you can learn, you need to have something to begin with that can be developed.

a4z 09-08-2014 07:51 AM

Quote:

Originally Posted by psionl0 (Post 5234280)
However, the ability to come up with an algorithm for a new and unusual situation is not just something you can learn, you need to have something to begin with that can be developed.

a brain?

psionl0 09-08-2014 12:30 PM

Quote:

Originally Posted by a4z (Post 5234303)
a brain?

Evidently you don't see any difference between learning rules/procedures and the ability to design algorithms.

sundialsvcs 09-08-2014 08:00 PM

The very first computer program that I ever wrote ... took me six months to write, was eight lines long, and had a bug in it. :)

(Note: the "personal computer" at that time was, say, the Altair, or maybe the IMSAI, or would you prefer the SWTPC 6800 or how about a KIM-1?)

In those days, you didn't have "direct access to 'a computer,'" and there was not yet anything 'personal' about them. Intel was making rapid progress, but the 'chips' that we take for granted today simply did not exist, and would not exist for several decades. Still, we did well with what we had.

I learned the craft by trial and error, and by what was (even then, and still today) a genuine interest in, and enjoyment of, the process. I mastered it because I persevered. I persevered because I wanted to. I continue because I still want to. (Uh huh, still living by my hobby. Cool, huh?)

Try to find out early whether this really is "something that fascinates you and that brings you pleasure." Because, if it doesn't, there are plenty of other ways to make a good living.

"Do what you love, and the money will (most of the time :rolleyes: ) follow ..."

a4z 09-09-2014 12:57 AM

Quote:

Originally Posted by psionl0 (Post 5234452)
Evidently you don't see any difference between learning rules/procedures and the ability to design algorithms.

I do,
but I also know
there are people that going home and watch netfix
and others go home and continue learning and continue practicing with private/hobby project
some go home to play computer games, others think about how to write those games
there are people that think that when they have a certificate that they know every thing
and than there are people that feel that the more they learn the less they know.
all these things has something to do with passion, and you can develop a passion for something
you do not need to be born with anything
It is not like you have no change for some sports if your body does not fulfill certain criteria

and by the way, the beauty of open source and free software and documentations, is that they give equal chances to every one that wants to learn.

I and I know that there are a lot of programmers that think that they are computer scientists and need therefore make everything super complex.
so its possible more a education thing than be born with something,
because in real you need more programming craftsman than computer scientists

the excuse it's genetic, born with, gifted with .. this is a very comfortable way of seeing things because it gives simple excuses and explanations

psionl0 09-09-2014 04:31 AM

So lack of motivation is the only reason why everybody is not a full bottle on General Relativity or String Theory.

a4z 09-09-2014 04:48 AM

Quote:

Originally Posted by psionl0 (Post 5234849)
So lack of motivation is the only reason why everybody is not a full bottle on General Relativity or String Theory.

it was about programmers, not Einsteins,
but even for Einstein or Newton, without motivation and amount of invested work they would not have come that far.

in what are you good? in things you like and practice a lot.

can you become an Einstein? possible not, but can you become good in Physics? possible yes if you like it and work hard

can you became Dijkstra, Knoth, Wirth , Stroustrup, Stepanov,....
very possible not

can you you become a better programmer than the average.
yes, withing some years, if you work hard and like what you do
especially in IT , where new techincs pop up permanently, you can become very good in certain topics within some years

if you dont like it, became programmer just because you thought you have a secure job, a cool job, earn a lot of money, what a lot of people did I know, you will produce horrible solutions and change into managment as soon as possible, and do the horrible things there.

Ramurd 09-09-2014 05:32 AM

Do not let the problem of writing the code down trouble you. Writing the code is just one step in the process.

One can (should) begin defining the problem. The next step is defining the solution (and: is this solution the answer to the problem?)
Then one should think up the steps to take to get from the problem to the solution. This has to be (very) detailed.

Once the steps are defined, it's just a matter of choosing the language in which to write down the steps toward the solution.
That done, one can write down the code.

The hard part is actually (once you're more familiar with a language) defining the steps towards tohe solution. Once you're familiar with one language and the above concepts, learning a new language is not that hard; a few days of getting familiar with it's rules and you're set...

Try it out with defining all the steps necessary from your state (sleeping in bed) towards a goal (getting at work)

sundialsvcs 09-09-2014 05:47 AM

Indeed, Ramurd, "defining the problem, and a process for completely solving it," is the real challenge for any programmer (or his/her department). That's the real hard part, not learning the "bits and bolts" of any given <<programming language | operating system >>. Most anyone with serious experience can learn another language or another tool in a day or so, because at the end of the day it's (probably) just another expression of "the same damm thing."

Lots and lots of programmers never become any good at all at design, and generally, never truly "design" anything. They just open a text file and start writing code, literally making the whole thing up as they go. And that is why they quickly box themselves into a corner that they can't get out of.

Think about it. What would you think if you interviewed a contractor to talk about building a new addition to your house, and he simply showed up with a crew who started digging holes in your front yard, cutting lumber and nailing it up someplace? ("What? I thought you brought the tape measure! Oh, nevermind, we don't really need one anyway ... we'll just eyeball it, and if it doesn't work we'll just rewrite it again.") You'd call the police, of course, to have this joker not only removed from your property but locked-up in jail so that he couldn't seriously hurt himself. And yet, this is what many "programmers" do. Without the slightest consideration being given to what "the work" is, they "start 'working' (sic)" and fully expect you to pay for it.

rtmistler 09-09-2014 08:31 AM

What I think you're really asking moisespedro is:
Code:

How does someone become a 'good' programmer?
I think you asked it poorly by raising the question of being inherently born with some talent versus learning it. I do agree that many people have natural talents which benefit and enhance their efforts towards certain accomplishments. I also feel that anyone can learn to some things very well given enough time and effort, plus the acquisition of knowledge. And I actually make it a point to try and convince people that they weren't born dumb at Math or something similar. They don't like it, so they resist doing it when it becomes hard, but do tell them that if they become resolute, they could become very good at whatever the subject were.

Some here are talking about 30+ years of experience; therefore they started much like I did, back in the days of assembly language, BASIC, punch cards, and so forth. Programs back then were things like simple sort algorithms, mortgage amortizations, and biorhythms. We were thrilled that the machines did what we told them too, after many iterations of trying and retrying.

My thoughts on this are that in today's world, in companies and projects, coding by the seat of your pants does not fly. It may fly as a junior engineer, but not much farther.

If you just want to learn how to code to do some cool stuff and occasionally learn some details by mimicry, then fine; do the learn by public domain method.

If you wish to become part of a team or do some individual ground breaking work in the world of programming, then you should consider getting formal training; and I would suggest a degree program. I would suggest a degree program because college makes you study a number of subjects, not all exactly programming focused, but focused towards the total picture of their impression of a software developer; you also do this over a range of years which I feel is important as well because it brings experience along with the formal instruction.

There are plenty of short workshops, training classes, and so forth. I'm not too sure that they are the best choice. One category of them which are probably the worst for a new learner, but may be fine for experienced people are workshops for focused items in the industry. Workshops sponsored by companies, mainly to highlight their technologies. Therefore the expectations are that those attending are already programmers and they're here to learn highly specific techniques, and also learn about that stuff on specific systems, conveniently provided by the sponsoring company. The other category are things like certification training or short classes each of which you'd pay for. One, they're expensive - so is college. Two, they're typically one-of's. Meaning they're "a" class about one thing. They may teach it to you pretty well actually. But you really can benefit by more formalized instruction; hence why a degree program has about 40 courses over a 4 year period.

It would seem dismissive, but basically however good you seem to be at talking the talk; if you didn't take the time, or put in the effort to get a degree; why should I hire you to work alongside me? Why should I trust you to accomplish projects which are critical to our company's success? It says something about an individual, enough so that (1) sometimes the team has difficulty working with that person because their knowledge base is lacking, they are limited in intellectual background and they fall behind; and (2) the hiring manager would be hard pressed to get that person hired at all, let alone justify a position level and/or salary amount. It's not a complete door slam, but it's a pretty big brake applied for that person versus another person with a degree and similar experience.

psionl0 09-09-2014 04:54 PM

Quote:

Originally Posted by a4z (Post 5234862)
it was about programmers, not Einsteins,
but even for Einstein or Newton, without motivation and amount of invested work they would not have come that far.

You are implying that it doesn't take any special talent or intelligence to become a good programmer - whether it be writing code or designing solutions to a problem.

That would put you firmly in the "made" category.

sundialsvcs 09-09-2014 09:00 PM

Quote:

Originally Posted by rtmistler (Post 5234967)
Some here are talking about 30+ years of experience; therefore they started much like I did, back in the days of assembly language, BASIC, punch cards, and so forth. Programs back then were things like simple sort algorithms, mortgage amortizations, and biorhythms. We were thrilled that the machines did what we told them too, after many iterations of trying and retrying.

No, you can't have my well-prized copies of Basic BASIC or Advanced BASIC ... :)

AnanthaP 09-10-2014 12:56 AM

Actually, this thread should be in GENERAL even though it has programming in the title.

OK

peterscot423 09-10-2014 02:26 AM

You have to do those in which you can show your skills and tactics. performace is a way to show thier talent. It's depend uopon your intrest, how much you adopt the job scenario and how do results them.
The best talent of every person how he learn and produce results from them.

rtmistler 09-10-2014 05:37 AM

Quote:

Originally Posted by sundialsvcs (Post 5235315)
No, you can't have my well-prized copies of Basic BASIC or Advanced BASIC ... :)

Will you take my COBOL and FORTRAN guides in trade?

moisespedro 09-10-2014 04:24 PM

I am glad there is a not a consensus on it and most people said good programmers are made. I was reading a few things about good programmers being born, like a natural skill and that was kinda turning me off. I read all opinions/posts and I plan on writing a more elaborated post later. :)

NevemTeve 09-11-2014 03:21 AM

Another thing to remark, some people are doomed to never became programmers. (Sometimes they have ADHD, but other reasons are possible, too.)

Germany_chris 09-11-2014 06:42 AM

I think people have a predisposition to certain based on the way they think practice is great and all that but you have to naturally think in particular ways to do things well. You do not choose your calling you are called


All times are GMT -5. The time now is 01:57 PM.