In my recent blog posting "The Secrets to Becoming a Great Programmer" I discuss a couple of characteristics of great programmers. You can read about those characteristics at
The Secrets to Becoming a Great Programmer
What other characteristics make a programmer great? Do you agree with my assessment?
I'm slightly disappointed in that again there is an implied relationship between programming and software engineering. What makes a Great Software Engineer is quite a different proposition to what makes a good programmer.
Niall, I love your point and would like to hear more what you think the difference is. This brings out small nuances that has implications to how a project is done.
Hi Peter,
Thanks you beat me to it (and much more eloquently than I'd put it!)
In my mind programming is just a tool - an important one, but only part of the whole story. An engineer being a "good programmer" is like a carpenter saying he is "good with hammers" - it's an incomplete skill set by itself. Being a good engineer is about much more than just grinding out lines of code, and generally needs a skill set which is well versed in the whole code carpentry workshop. This may range from the technical - writing specs, knowing how to design and test system - to the more soft-skills - communication, ability to review, project planning, task estimation, and balancing the technical and business needs. All are vital to the successful delivery of any project with more than a handful of engineers ...
Indeed - guilty of over simplification for the sake of making a point .
> you cannot be a programmer without being an engineer
Yes that was really the point I was trying to get across. There is a lot more to "being a programmer" than "programming" so I dislike the name. Personally I find writing code - the act most traditionally called programming by many - a little tedious. By that time I've done the fun part - the design, understanding the system, etc. You do find some people who only want to write code, and who actively avoid most of the other parts, but they are few and far between - most people are multi-disciplinary.
At the other end of the spectrum I work with very good software engineers who no longer write much code at all; they have other expertise be that designing and writing specs, running QA teams, etc. Understanding software code is key to the job, but writing it isn't.
In that case, I would say before one can become a great software engineer, they need to go through the drudgery of programming. Just because someone can code does not make a good system in the end. It still needs a good system architect to make good manageable, efficient, and maintainable codes.
Indeed, and a lot of discipline!
Becoming a good programmer or software engineer isn't done overnight. Often this takes years and in some cases (like mine) decades...
Shh, Peter - if you call a programmer a 'hammer', then he/she would probably feel offended.
The World is a strange place.
In Denmark,you cannot be a programmer without being an engineer. It's more or less impossible.
Reason: An engineer is someone who built or made something. Whether he built a gadget that blinks a LED or he just drew the entire thing on paper, he would be an engineer.
I do not know how it is in the rest of the World; it may differ.
But as soon as you've made your first "Hello World!" program, you're no longer only a programmer, but you're suddenly a hybrid programmer+engineer.
So I would say an engineer may not be able to do a single line of code; he could draw the program flow on a piece of paper and let others build the actual program.
Same about bridge-engineers; they usually do not do the hard work; they're just architects.
But there are engineers (in the engine-rooms), who became engineers because they worked with programming, designing circuits or physically built a bridge...
And there are engineers, who are educated to be engineers, who would maybe never even build or design anything; they just have the education and that entitles them to call themselves engineers.
Confused yet ?
(It is not. You had forgotten the leading 'w' and the profanity filter bleeped you. I edited your post to add the w)
"is 'who' always replaced by '**' ?"
(This is now corrected, thanks Alban. I found out now that I get the ability to edit the posts, when going to the article page; those are not available from the overview in the streams)
Lovely discussion!
It's so important to recognise that what makes a good programmer and what makes a good software engineer are very different. I know individuals who are incredibly talented programmers but just don't get the "engineering" thing at all; conversely, I know excellent engineers who can't write code for toffee (hope that's not too UK-centric a phrase but I'm sure you can work out what it means!)
A really good "software engineer" combines both.
There may be places in the world where someone could be a de facto engineer. Attainment of the title or status could be based primarily on one's skill in "building or designing something." How technically meritorious "something" needs to be depends on the norms of that particular society.
In some parts of the world there are legal definitions of being an engineer. It will require a college diploma and depending on the jurisdiction, a licensure exam. In some cases the competence to build or design "anything" does not matter.