What does it mean to be a good programmer?

From Visual Basic to GNU C, this is the place to talk programming.

Moderators: SecretSquirrel, just brew it!

Re: What does it mean to be a good programmer?

Postposted on Fri Jul 26, 2013 3:28 pm

notfred wrote:I was branded a trouble maker for complaining about the extra complexity of his code which improved things from 15.1s to 15.01s.


At least the guy didn't take your source code, apply that 0.01% performance improvement to it, and then call it "his" because of his "substantial time" spent improving on it.

I've had that happen enough in the open source community, which is why I don't program any more. It feels like a cesspool of leaches.
Star Brood
Gerbil First Class
Silver subscriber
 
 
Posts: 182
Joined: Wed Mar 21, 2012 4:57 am

Re: What does it mean to be a good programmer?

Postposted on Tue Aug 06, 2013 2:56 am

Much has been said but I will add up to this too.

Being a good programmer means being a different type of human mind. Let me explain. To write code very well you gotta think like a poetic machine. Note - not as a machine, but as a portic machine. There is a place for creativity in writing code for sure, it's just that its a different type of creativy - not the one you use when writing a song and painting. This creativity is sctructures and placed in order while it still does not lose it's power.

Thinking like a machine does won't make you a good programmer. But thinking like a creative machine will deff-ly do it.
Hope I made it clear.
Last edited by Kevin on Tue Aug 06, 2013 11:51 am, edited 1 time in total.
Reason: EDIT BY MOD: Spam link in profile, user banned.
Vorobei
Gerbil In Training
 
Posts: 1
Joined: Tue Aug 06, 2013 2:45 am

Re: What does it mean to be a good programmer?

Postposted on Tue Aug 06, 2013 6:41 am

notfred wrote:I found several bugs in his code (which admittedly he did address) whilst looking at why some of the queries took 15 minutes, put some proper indices in and had them running in sub 15-seconds. I was branded a trouble maker for complaining about the extra complexity of his code which improved things from 15.1s to 15.01s.


Yup, learned the hard way that one must give some thought to politics too. The most important thing though is to stick up for yourself, even if everyone else is against you.
Mothership: Thuban 1055T@3.7GHz, 12GB DDR3, M5A99X EVO, GTX470+Icy Vision Rev.2@840/3800, Vertex 2E 60GB
Supply ship: Sargas@2.8GHz, 12GB DDR3, M4A88TD-V EVO/USB3
Corsair: Macbook Air Ivy Bridge
Crayon Shin Chan
Minister of Gerbil Affairs
 
Posts: 2246
Joined: Fri Sep 06, 2002 11:14 am
Location: Malaysia

Re: What does it mean to be a good programmer?

Postposted on Tue Aug 06, 2013 6:42 am

Vorobei wrote:Being a good programmer means being a different type of human mind. Let me explain. To write code very well you gotta think like a poetic machine. Note - not as a machine, but as a portic machine. There is a place for creativity in writing code for sure, it's just that its a different type of creativy - not the one you use when writing a song and painting. This creativity is sctructures and placed in order while it still does not lose it's power.

Would you say it's the kind of creativity that one exercises when putting Lego blocks together, or when making your own Lego blocks? That seems like an apt metaphor to me.
Mothership: Thuban 1055T@3.7GHz, 12GB DDR3, M5A99X EVO, GTX470+Icy Vision Rev.2@840/3800, Vertex 2E 60GB
Supply ship: Sargas@2.8GHz, 12GB DDR3, M4A88TD-V EVO/USB3
Corsair: Macbook Air Ivy Bridge
Crayon Shin Chan
Minister of Gerbil Affairs
 
Posts: 2246
Joined: Fri Sep 06, 2002 11:14 am
Location: Malaysia

Re: What does it mean to be a good programmer?

Postposted on Tue Aug 06, 2013 7:02 am

notfred wrote:I found several bugs in his code (which admittedly he did address) whilst looking at why some of the queries took 15 minutes, put some proper indices in and had them running in sub 15-seconds. I was branded a trouble maker for complaining about the extra complexity of his code which improved things from 15.1s to 15.01s.

Too true. All too true.

I remember my first job, straight out of university: we were writing a billing system (don't ask, or I'll have to go find some brain bleach.) Amongst other things, this system had to interface with other systems - passing details about financial transactions and the like, using delimited text files (sometimes fixed width, sometimes CSV, sometimes a brain dead abomination from the pits of hell.) I worked on a fair chunk of these interfaces; in fact, I wrote the first or second one that was implemented.

My colleagues copied and pasted the code into their work when they had to do their own interfaces. (Experienced programmers at this point will be laughing hysterically, if they aren't sobbing into their drinks.)

Cut to several months later. We discovered a bug in one of my interfaces, which I duly fixed. A week or two later, I was assigned another bug report. "Hmm - this looks familiar." Sure enough. So I went to management, and told them the situation; I wanted to move the duplicate code into the superclass, and use inheritance to override whatever behaviour varied between interfaces (which, for the functions in question, was very little), because I believed that there was a near certainty that the bug would appear in all the other interfaces, and it would be easier in the long run to do that, even allowing for the fact that it would require running tests on all the interfaces rather than just the one affected. They knocked me back. "We don't have time, just fix the bug you've been assigned."

No prizes for guessing what happened next.

So when somebody asks me what makes a good programmer, my response is simple: knows when, and how, to reuse code (making it generic if necessary), rather than copying and special-casing it in dozens of different spots. Not the whole story, it's true, but it's definitely a big part of it.

For the record, it was that job that burnt me out on programming and had me head into the realm of systems administration, which brings its own unique headaches, but that's a tale for another time.
sjl
Gerbil
 
Posts: 68
Joined: Tue Dec 07, 2004 5:14 pm

Re: What does it mean to be a good programmer?

Postposted on Tue Aug 06, 2013 7:12 am

danny e. wrote:Uses readable code. Commented. team code style compliant. Good variable names - don't be schmuck and use short/dumb abbreviations. It's 2013.


^THIS!

You may be a UI expert. You may be a DB expert that is able to massage the mundane. You may be able to punch out complex code in minutes. You may be able to read code and can articulate the function/s. But if you don't comment and/or document it doesn't mean $#!7!

I can't tell you how many times I have inherited something at work that was done by someone else (Who is no longer with the company or was a contractor) it's broken and when I open it up it just line after line after line of useless code. Sure I can decipher the jumbled mess. But I should have to waste hours cleaning it up!

A good programmer/developer should take pride in their work and that means commenting everything! Even basic functions everyone (is supposed to) knows. It takes very little time to do and makes debugging even that much easier.
(\_/)
(O.o)
(''')(''')
Wounded Warrior Project
Watch out for evil Terra-Tron; He Does not like you!
tanker27
Darth Gerbil
 
Posts: 7294
Joined: Tue Feb 26, 2002 7:00 pm
Location: Georgia

Re: What does it mean to be a good programmer?

Postposted on Tue Aug 06, 2013 11:26 am

"Good programmers copy and paste good code. Great programmers copy and paste great code." :lol:

This was a quote from a Microsoft employee at a SQL 2008 launch event.
"I take sibling rivalry to the whole next level, if it doesn't require minor sugery or atleast a trip to the ER, you don't love her." - pete_roth
"Yeah, I see why you'd want a good gas whacker then." - VRock
dextrous
Gerbil Elite
 
Posts: 563
Joined: Mon Nov 22, 2004 1:49 pm
Location: Ooooooooooklahoma

Re: What does it mean to be a good programmer?

Postposted on Thu Aug 08, 2013 1:25 am

A good programmer makes efficient code, simple, fast, easy to read and maintain, and WELL DOCUMENTED.

A good programmer doesn't use variable and functions names like "dmuhfvbwiuhb", but "thisThingDoesX".

A good programmer understand that even himself will forget how his own written code works some months in the future.

A good programmer assumes that even the most carefully written code will not work as intended, and takes measures to deal with that.

A good programmer doesn't reinvent the wheel, because somebody already solved the same problem, and fixed all the bugs, and everybody knows how it works and what it does. Example, everybody knows what a dictionary does. Do not program a mysterious solution just to implement a dictionary. Use libraries.

A good programmer uses a profiler to check his code efficiency.
marraco
Gerbil
 
Posts: 11
Joined: Tue Jan 11, 2011 10:06 am

Re: What does it mean to be a good programmer?

Postposted on Thu Aug 08, 2013 2:14 pm

marraco wrote:A good programmer uses a profiler to check his code efficiency.

You'd be amazed how many programmers have never, ever, touched a profiler.
Z68XP-UD4 | 2700K @ 4.7 GHz | 16 GB | GTX 780 | PCP&C Silencer 950 | XSPC RX360 | Heatkiller R3 / X3 | D5 + RP-452X2 | HAF 932 | 480 GB Extreme Pro
Waco
Gerbil Elite
 
Posts: 778
Joined: Tue Jan 20, 2009 4:14 pm

Re: What does it mean to be a good programmer?

Postposted on Thu Aug 08, 2013 3:15 pm

Waco wrote:
marraco wrote:A good programmer uses a profiler to check his code efficiency.

You'd be amazed how many programmers have never, ever, touched a profiler.

For many types of (non-performance-critical) applications, they aren't really necessary. So no, I don't find it amazing.

That said, I haven't just *used* profilers, I've *written* one. :wink:
(this space intentionally left blank)
just brew it!
Administrator
Gold subscriber
 
 
Posts: 37853
Joined: Tue Aug 20, 2002 10:51 pm
Location: Somewhere, having a beer

Re: What does it mean to be a good programmer?

Postposted on Fri Aug 09, 2013 10:47 am

just brew it! wrote:For many types of (non-performance-critical) applications, they aren't really necessary. So no, I don't find it amazing.

That said, I haven't just *used* profilers, I've *written* one. :wink:

I guess that's true. I do HPC stuff, so performance matters a lot. :P

Also, which one? Open sourced anywhere?
Z68XP-UD4 | 2700K @ 4.7 GHz | 16 GB | GTX 780 | PCP&C Silencer 950 | XSPC RX360 | Heatkiller R3 / X3 | D5 + RP-452X2 | HAF 932 | 480 GB Extreme Pro
Waco
Gerbil Elite
 
Posts: 778
Joined: Tue Jan 20, 2009 4:14 pm

Re: What does it mean to be a good programmer?

Postposted on Fri Aug 09, 2013 12:20 pm

I think there's really a difference between business and raw skill. I'm thinking of the moddemo scene (Amiga, C64, PC) where people were pulling off tricks like no one had ever seen on the hardware of the time. Even Carmack's earlier stuff like Wolf3D and Keen, before he got his NeXT and stopped doing so much ASM tuning.

You can't say that those programmers sucked because they didn't write properly documented code. But for business or working in a team setting, yeah, totally different rules apply.
Scrotos
Graphmaster Gerbil
 
Posts: 1035
Joined: Tue Oct 02, 2007 12:57 pm
Location: Denver, CO.

Re: What does it mean to be a good programmer?

Postposted on Fri Aug 09, 2013 3:35 pm

Commenting is an art form. The Practice of Programming by Pike and Kerningham really goes into this properly. There is definitely such a thing as too much comenting and there's definitely such a thing as to little. Properly written code generally only contains minimal comments because the code is readable. It's when you do clever things or special edge cases that you really need a BOOK written. And those comments depending on internal processes might not even be written IN the code, but instead in the project notes/bug archive.
keltor
Gerbil First Class
 
Posts: 177
Joined: Thu May 10, 2012 4:29 pm

Re: What does it mean to be a good programmer?

Postposted on Fri Aug 09, 2013 5:36 pm

Waco wrote:
just brew it! wrote:For many types of (non-performance-critical) applications, they aren't really necessary. So no, I don't find it amazing.

That said, I haven't just *used* profilers, I've *written* one. :wink:

I guess that's true. I do HPC stuff, so performance matters a lot. :P

Also, which one? Open sourced anywhere?

It was for a custom massively parallel system at Fermilab, many years ago. No longer in use.
(this space intentionally left blank)
just brew it!
Administrator
Gold subscriber
 
 
Posts: 37853
Joined: Tue Aug 20, 2002 10:51 pm
Location: Somewhere, having a beer

Re: What does it mean to be a good programmer?

Postposted on Fri Aug 09, 2013 7:09 pm

just brew it! wrote:It was for a custom massively parallel system at Fermilab, many years ago. No longer in use.

Respect++ :)
Z68XP-UD4 | 2700K @ 4.7 GHz | 16 GB | GTX 780 | PCP&C Silencer 950 | XSPC RX360 | Heatkiller R3 / X3 | D5 + RP-452X2 | HAF 932 | 480 GB Extreme Pro
Waco
Gerbil Elite
 
Posts: 778
Joined: Tue Jan 20, 2009 4:14 pm

Re: What does it mean to be a good programmer?

Postposted on Fri Aug 09, 2013 7:45 pm

marraco wrote:A good programmer understand that even himself will forget how his own written code works some months in the future.

My experience has been that you can potentially forget how your code works if you just get up to get more coffee. :P
2600K @ 4.8GHz; XSPC Rasa/RX240/RX120 Phobya Xtreme 200; Asus P8Z68-V Pro; 16GB Corsair Vengeance 1333 C9; 2x7970 OC w/ Razor 7970; Force GT 120GB; 3x F3 1TB; Corsair HX750; X-Fi Titanium; Corsair Obsidian 650D; Dell 2408WFP Rev. A01; 2x Dell U2412m
mortifiedPenguin
Gerbil Elite
 
Posts: 812
Joined: Mon Oct 08, 2007 7:46 pm

Re: What does it mean to be a good programmer?

Postposted on Sat Aug 10, 2013 3:37 am

IMHO, a good programmer these days is a master of different relevant programming languages, shoots for code efficiency and minimal bloat, and just can't have enough cores to program for! :D
The three pillars of my digital life: AMD FX-8350, Google Nexus 7 (Qualcomm Snapdragon S4 Pro), Intel Core i5-2450M
ronch
Gerbil Elite
 
Posts: 663
Joined: Mon Apr 06, 2009 7:55 am
Location: C:\Program Files\

Re: What does it mean to be a good programmer?

Postposted on Mon Aug 12, 2013 9:44 pm

ronch wrote:...and just can't have enough cores to program for! :D

Always the goal. :)
Z68XP-UD4 | 2700K @ 4.7 GHz | 16 GB | GTX 780 | PCP&C Silencer 950 | XSPC RX360 | Heatkiller R3 / X3 | D5 + RP-452X2 | HAF 932 | 480 GB Extreme Pro
Waco
Gerbil Elite
 
Posts: 778
Joined: Tue Jan 20, 2009 4:14 pm

Re: What does it mean to be a good programmer?

Postposted on Mon Aug 12, 2013 10:49 pm

Waco wrote:
ronch wrote:...and just can't have enough cores to program for! :D

Always the goal. :)

Closer to the truth than you might think. Since we're apparently hitting a wall on GHz and single-core IPC, being able to write good multi-threaded code is likely to become increasingly important. This is a skill that many programmers seem to struggle with.
(this space intentionally left blank)
just brew it!
Administrator
Gold subscriber
 
 
Posts: 37853
Joined: Tue Aug 20, 2002 10:51 pm
Location: Somewhere, having a beer

Re: What does it mean to be a good programmer?

Postposted on Mon Aug 12, 2013 11:24 pm

Another skill is taking advantage of those 512bit registers (soon to be 1024 bits)
Even with compiler vectorisation, (rarely work) you need to understand the concept, specially around branching.

Ex: writing a line drawing function using scalar operation VS SIMD is dramatically different.

That to say, a single threaded app that is fully SIMD optimize can be faster then a version that is scalar but run on 8 cores.
Now if you get both working together, you get the prize ...
sschaem
Gerbil Team Leader
 
Posts: 247
Joined: Tue Oct 02, 2007 11:05 am

Re: What does it mean to be a good programmer?

Postposted on Tue Aug 13, 2013 2:31 am

just brew it! wrote:
Waco wrote:
ronch wrote:...and just can't have enough cores to program for! :D

Always the goal. :)

Closer to the truth than you might think. Since we're apparently hitting a wall on GHz and single-core IPC, being able to write good multi-threaded code is likely to become increasingly important. This is a skill that many programmers seem to struggle with.

And with good reason. Finding parallelism, writing for it, and getting the locking model right is a hard problem. The systems for dealing with it "behind the scenes", in much the same way that compilers abstract away the details you need to manage when writing assembler, aren't there yet; Grand Central Dispatch is an interesting take on the problem, but isn't as widespread as it could perhaps be.

Deadlocks, race conditions, locks that block too much ... no, the techniques are not as well understood as they need to be, although I do hope that the situation is improving. Getting your mind around it all is definitely not trivial.
sjl
Gerbil
 
Posts: 68
Joined: Tue Dec 07, 2004 5:14 pm

Re: What does it mean to be a good programmer?

Postposted on Tue Aug 13, 2013 8:13 am

From my personal experience, a good programmer is an architect. The elegance or conciseness of the actual typed code is less important than how the application in general is designed and structured (though a well designed and structured application invariably leads to elegant and concise code). A good programmer doesn't get hopelessly lost in the details; they are able to step back and see the application as a whole from at least 3 perspectives. First, from a perspective similar to a doctor looking at the human body, a web of intelligently interconnected parts, and how they interact with each other to make the organism as a whole work. Second, from the perspective of the user who will use the application and largely doesn't give a crap about the particulars of how the heart beats or the brain thinks. Third, from the perspective of the developers that come after you and whether they will curse or praise you when it becomes their responsibility to pick up where you left off.

Doctor
Does the application meet all user requirements? (or, depending on time constraints, the most immediate and relevant user requirements)
Separation of concerns?
No code duplication?
Is it extensible?
Good leveraging of the application platform?
Is it portable?
etc

User
Does the application do what I want?
Is the application easy to use?
Does the application make my work faster/easier to do?
etc

Next Generation
Is the application easily extensible (this goes back to abstraction, separation of concerns, etc)?
Is the application well documented (or, even better, self-documenting)?
Is the application portable?
etc

Whether you know C, C++, Java, PHP, or whatever, the basic principles of design and architecture don't change. The tools are less important than how they are used (knowing and understanding the principles of object-oriented design is more important than knowing Java or PHP in particular, for example). A good programmer isn't defined by the languages or techniques they know, they are defined by their ability to engineer from the ground up.
Under Construction Forever~~~
Kurotetsu
Gerbil Elite
 
Posts: 525
Joined: Sun Dec 09, 2007 12:13 pm

Previous

Return to Developer's Den

Who is online

Users browsing this forum: No registered users and 4 guests