The Artima Developer Community
Sponsored Link

Weblogs Forum
Are Programmers People? And If So, What to Do About It?

44 replies on 3 pages. Most recent reply: Aug 9, 2006 3:53 AM by Vincent O'Sullivan

Welcome Guest
  Sign In

Go back to the topic listing  Back to Topic List Click to reply to this topic  Reply to this Topic Click to search messages in this forum  Search Forum Click for a threaded view of the topic  Threaded View   
Previous Topic   Next Topic
Flat View: This topic has 44 replies on 3 pages [ « | 1 2 3 | » ]
Ken Arnold

Posts: 27
Nickname: arnold
Registered: Apr, 2003

Re: Are Programmers People? And If So, What to Do About It? Posted: Apr 14, 2003 9:28 PM
Reply to this message Reply
Advertisement
> If programmers are human, we should address programmer psychology.

Maybe I'm not so fond of my premise any more...-)

This is true, but I think that this is part of human factors as well. "What can people understand?" includes the question "What are people willing to [take the time to] understand in this context?" (It isn't always a matter of time; it can also be a question of difficulty with a new concept, or just dogged hideboundedness.)

Still, this is yet another intersection with building architecture problems: You can only go so far as your customers/users will accept. And you have to actually sell what you have, so you might do something aesthetically contrary to your normal desires to adapt or to get attention. I personally think that anyone using XML for anything is playing this game or is deluded, but that's a whole 'nother topic. (And beating up on XML for human factors is as easy as giving candy to a baby (taking it is much harder).)

> But I can recall a time when I thought it was "fun"
> to learn C++ syntax. Templates were cool and operating
> overloading was powerful and "elegant."

I think this is always true -- being a holder of arcane knowledge is powerful, and some knowledge is just fun to pick up anyway. There has to be enough play in it.

> Programmers want their users to need them.

It's nice to be loved, but it's nicer to be loved for oneself rather than for the bunghole in the barrel through which you feed your loved one. Still I agree, many people will take this second kind of love if it's all they can get.

Steve Merrick

Posts: 1
Nickname: pattchase
Registered: Apr, 2003

Re: Are Programmers People? And If So, What to Do About It? Posted: Apr 15, 2003 8:24 AM
Reply to this message Reply
Interesting. Dick Gabriel published guidelines for scientists - not just programmers - pointing out that they're writers, and the results of their labours must be comprehensible or they're a complete waste of time. This applies to source code just as much as to natural languages. Look here for more information: http://www.dreamsongs.com/RPGWritingBroadside.html

Pattern-chaser

"Who cares, wins"

Peter X Huang

Posts: 1
Nickname: px
Registered: Apr, 2003

Re: Are Programmers People? And If So, What to Do About It? Posted: Apr 15, 2003 9:21 AM
Reply to this message Reply
I just can not agree more with Ken. And same as Ken, I just wonder why not people see such obvious things. Too often I hear super heros say "if you are a good programmer, this language is perfect", "that is just a syntactical sugar". They just completely forget the human factor.

Isn't that obvious that all the greatest innovations in computer engineering are about human factor? Like below:
1. Windows OS.
Is there anything you can do in windows which you can not do with a shell ?
2. Internet Browser
Isn't there a FTP thing long before browser ?
3. C programming language
This is pure human factor. The C's greates impact is to dramatically increase the number of people who can program. From this point of view C++ is actually pedaling almost backward. Guess I am just getting tired to open the 800 page C++ law book every time I do a little bit coding.

It is very refreshing to hear opioions that is human like. We are so easy to get buries in the technologies we created and we lost our way.

-Peter X Huang

Patrick May

Posts: 19
Nickname: patsplat
Registered: Feb, 2003

Re: Are Programmers People? And If So, What to Do About It? Posted: Apr 15, 2003 10:38 AM
Reply to this message Reply
The creator of ruby gave a talk, and this was the best slide:

http://www.ruby-lang.org/en/rc2002-minor/mgp00019.html

It seemed somewhat pertinent to the blog.

~ Patrick

Tim Vernum

Posts: 58
Nickname: tpv
Registered: Dec, 2002

Re: Are Programmers People? And If So, What to Do About It? Posted: Apr 15, 2003 8:29 PM
Reply to this message Reply
> I am speaking about the more basic tools programmers
> use every minute they do their work: programming languages
> and APIs.

I think there's a danger if you consider the language apart from the tools.

e.g. Guido is known to suggest that Python improves productivity because it takes less keystrokes to implement the same thing.
But that's largely a tool issue, and I'm not convinced that it's something you should solve at the language level.
Good IDEs (i.e. IDEA, and sometimes eclipse) reduce the cost in terms of keystrokes by automating things. In fact, various features of these tools are only possible because the language has static typing - so something which may appear to be a cost to the language, can be a gain if the right tools are available.

I think a language should be designed to be used by a good tool - but you need to invest in the tools when you release the language (something MS is very good at doing).

Joe Cheng

Posts: 65
Nickname: jcheng
Registered: Oct, 2002

Re: Are Programmers People? And If So, What to Do About It? Posted: Apr 16, 2003 1:05 AM
Reply to this message Reply
> Interesting -- I often find a lot to learn from
> architecture. I think it is an important connection that
> we use the same word for software and buildings, because
> the tradeoffs have the same flavors: Customer desires
> vs. your own aesthetics; What works vs. what
> would be beautiful; Timeframes, budgets, and other
> constraints. Architecture (both kinds) is a practice at
> the intersection of beauty and reality. (And like many
> kinds of intersections, there are a lot of
> accidents.)

Great blog entry, Ken!

I got married a couple of weeks ago--my bride is a beautiful and talented (building) architect. It is remarkable how much we relate to each others' work, even though I don't know anything about designing campus libraries and she has never written a line of code. We are both young idealists who care very much about our respective crafts, which both lie at the intersection of business, science, and art.

About the blog entry, I'm struck by the contrast between your ideas and what Bjarne Stroustrup had to say in The Design and Evolution of C++, where he stresses that one of the main design principles of C++ is to let programmers do things their own way, dangers be damned. And isn't one of the Perl battle cries, "There's More Than One Way To Do It"? You seem to be worried about forcing neophytes to learn more than one way to do things. They seem to be worried about forcing experts to unlearn the way they already do things.

Not to say that I disagree with your conclusions--far from it. But I just wanted to suggest that perhaps, in some cases, C++ and Perl break your rules not by accident or negligence, but by design (or at least, as a deliberate tradeoff). OTOH I'm not a C++ or Perl programmer--I like Java for its friendliness--so what do I know about it!

-Joe Cheng

Joe Cheng

Posts: 65
Nickname: jcheng
Registered: Oct, 2002

Re: Are Programmers People? And If So, What to Do About It? Posted: Apr 16, 2003 1:16 AM
Reply to this message Reply
> Good IDEs (i.e. IDEA, and sometimes eclipse) reduce the
> cost in terms of keystrokes by automating things. In fact,
> various features of these tools are only possible because
> the language has static typing - so something which may
> appear to be a cost to the language, can be a gain if the
> right tools are available.

Yes, yes, yes! Well put, Tim... the same thought was drifting around in my head while reading Guido's articles here on Artima, but I couldn't get it into words.

If you take the tools out of the picture, then maybe yeah, you could make an argument for the kind of finger-typing and lines-of-code cost measures that he touts. But the way tools (starting with IDEA) have evolved in the last 4 years or so have totally changed the equation, in my opinion.

Vincent O'Sullivan

Posts: 724
Nickname: vincent
Registered: Nov, 2002

Re: Are Programmers People? And If So, What to Do About It? Posted: Apr 16, 2003 3:21 AM
Reply to this message Reply
> Not minor enough for me...

How minor do you want to go?

"The classical Brian Kernighan paper 'Why Pascal Is Not My Favorite Programming Language'"

The paper my be a 'classic' but it's not 'classical'!

:)

Otherwise your article is very interesting and certainlyt provides food for thought.

Vince.

Guido van van Rossum

Posts: 359
Nickname: guido
Registered: Apr, 2003

Re: Are Programmers People? And If So, What to Do About It? Posted: Apr 16, 2003 9:44 AM
Reply to this message Reply
> e.g. Guido is known to suggest that Python improves
> productivity because it takes less keystrokes to implement
> the same thing.

I never say that; I don't care much about reducing keystrokes. I care about code size for a different reason: reading shorter code makes for easier understanding -- up to some point, and that's the point where I stop.

Ken Arnold

Posts: 27
Nickname: arnold
Registered: Apr, 2003

Re: Are Programmers People? And If So, What to Do About It? Posted: Apr 16, 2003 1:02 PM
Reply to this message Reply
> I got married a couple of weeks ago

Congrats!

> You seem to be worried about
> forcing neophytes to learn more than one way to do
> things. They seem to be worried about forcing experts to
> unlearn the way they already do things.

I agree that this is actually a design choice. The question is whether it is a wise one. I'm not only worried about newbies, but also about maintenance. I was pretty well versed in C++ by the time I fled into the arms of Java, but I was regularly coming across new rules in the language that hadn't bit me before. And this was just before exceptions were added (okay, I'm dating myself). It has gotten much worse over time.

What this means in a practical sense is that even someone as up on things as I was cannot read anyone else's C++ code and get it. This is doubly true with Perl (a language I still use commonly). I have seen non-obfuscated perl code that uses tricks and twirls that I don't even know where to start looking in the docs for. And if I can't look it up, how can I figure it out?

That's experiential evidence. But to fall back to my "human factors" approach, I would ask: What is the experience with the human factors community with giving people lots of ways to do a thing? And the universal experience is: This is bad. There are exceptions of course (there always are), but as a rule, if you can do task X when using thing Y, allowing the user to chose among 5 ways to do it is a mistake, especially if you want that task to be communicated to others. And source code has a primary purpose of communicating with other people besides the original programmer (including being clear to that same human six months later).

[As an aside, I think it's not only unlearning, but also what's natural to each programmer -- if one way is more natural to you and another to me, let a thousand operators bloom.]

> Not to say that I disagree with your conclusions--far from
> it. But I just wanted to suggest that perhaps, in some
> cases, C++ and Perl break your rules not by accident or
> negligence, but by design (or at least, as a deliberate
> tradeoff).

Oh, yes. I once had a public discussion with Stroustroup at a COOTS conference (Toronto, I believe -- don't remember the year) where I argued that his rules for "use" violated something his previously stated simplicity principle. He argued in response that it was unreasonable to worry about how complex things were -- that he didn't care much if any understood the whole language. Nobody, after all, understands all the systems in their car (especially these days), yet they work. He envisioned your programming task as requiring lots of complexity, and whether that was in the language or the libraries was irrelevant. Why worry about it?

I've got witnesses.

Ken Arnold

Posts: 27
Nickname: arnold
Registered: Apr, 2003

Re: Are Programmers People? And If So, What to Do About It? Posted: Apr 16, 2003 1:15 PM
Reply to this message Reply
> The paper my be a 'classic' but it's not 'classical'!

http://www.bartleby.com/61/0/C0390000.html says:

classical: 1a. Of or relating to the ancient Greeks and Romans, especially their art, architecture, and literature. b. Conforming to the artistic and literary models of ancient Greece and Rome. c. Versed in the classics: a classical scholar. 2. Of or relating to the most artistically developed stage of a civilization: Chinese classical poetry. 3. Music a. Of or relating to European music during the latter half of the 18th and the early 19th centuries. b. Of or relating to music in the educated European tradition, such as symphony and opera, as opposed to popular or folk music. 4. Of, relating to, or being a variety of a language that is epitomized by a prestigious body of literature. 5a. Standard and authoritative rather than new or experimental: classical methods of navigation. b. Well-known; classic: the classical argument between free trade and protectionism. 6. Of or relating to physics that can be described without the use of quantum mechanics or relativity. 7. Relating to or consisting of studies in the humanities and general sciences: a classical curriculum.

Of course, I was talking in terms of #6...

Okay, okay, I'll fix it. (Actually an argument could be made for #4, or 5.b, but you are right about classical -- er, standard -- usage.-)

Ken Arnold

Posts: 27
Nickname: arnold
Registered: Apr, 2003

Re: Are Programmers People? And If So, What to Do About It? Posted: Apr 16, 2003 1:24 PM
Reply to this message Reply
I'm not sure I buy this. Basic text editors have been the tool of choice for decades for many people, and not just old foggeys like me. (Well, whether emacs has now become and IDE is an interesting matter for debate, but never mind.) Visual programming languages have been a pretty dismal failure, except in specific domains. All the text tools of Unix (say) can be brought to bear on any piece of C++ or Java or Python code. That's a powerful tool suite to discard in favor of something else.

Which may not be what you are suggesting. I'm just saying that the language itself -- as a text block -- is an important tool. To the extent it does not impose on people, I think it is reasonable to design for other tools, but people come first (okay, I'm selfish). And I think that people will be writing code quite literally for some time to come.

Matt Gerrans

Posts: 1152
Nickname: matt
Registered: Feb, 2002

Re: Are Programmers People? And If So, What to Do About It? Posted: Apr 16, 2003 1:32 PM
Reply to this message Reply
John O'Hanley wrote:
> ...I would add, "Programmers are just as stupid as everyone
> else." That is, the intellectual effort required to use an
> API should be roughly equivalent to that required to
> understand a cooking recipe.

Maybe I'm just stupid, but I am really annoyed by APIs that require me to stop my flow of thought and waste my time and intellectual effort trying to figure out unnecessary intricacies. Let's say you want to get the CRC of a file. Do you prefer an API that has a simple interface including a GetCrc( Stream stream ), or do you prefer one that requires you to create a CRC table object, initialize it, convert your stream to a series of int arrays where only the lower 16 bits are meaningful, add a Crc update event listener, etc., etc.? Like Laird, I remember a time when it was cool to be acquainted Byzantine details (particularly when others didn't and you could lord it over them) of the language, API, or system, but now I am less interested in those things and more interested in tools (including the language) that get out of the way as much as possible and let me think more about the problem I'm really trying to solve.

Guido van Rossum wrote:
> > e.g. Guido is known to suggest that Python improves
> > productivity because it takes less keystrokes to implement
> > the same thing.
>
> I never say that; I don't care much about reducing keystrokes.
> I care about code size for a different reason: reading shorter
> code makes for easier understanding -- up to > some point, and
> that's the point where I stop.

Beat me to the punch! I was going to say exactly that one of the nicest things about Python is its pithiness per page. This is in great contrast to Java, where a high-res monitor and[/b] the Page Up/Down keys are always necessary.

> Good IDEs (i.e. IDEA, and sometimes eclipse) reduce the
> cost in terms of keystrokes by automating things. In fact,
> various features of these tools are only possible because
> the language has static typing - so something which may
> appear to be a cost to the language, can be a gain if the
> right tools are available.

I agree that tools like IDEA make Java programming a lot more fun and productive. Even Microsoft's Visual Studio, operating on the languages they invented (VB, C#, managed C++) pales in comparison to many of IDEA's cool features (they need to have a look at IDEA and then do some "innovating").

That Python is dynamically typed by no means implies that it is immune to cool features like those of IDEA. Python has excellent reflection facilities, like Java, which tools can leverage. For example, in IDLE (the default "Python Shell" that comes with Python), you get the now-common parameter tool tips when you begin to type a method. Even better, when you dynamically load a COM automation object (of which the Python environment has no prior knowledge, of course) and call one of its methods, you get tool those tips! Doing something similar in Visual Studio is not dynamic (you have to build an "interop assembly") and doesn't give you any more information. I haven't used any COM or CORBA libraries in Java, but I would be pretty impressed if IDEA could dynamically show method parameter lists when using them.

Matt Gerrans

Posts: 1152
Nickname: matt
Registered: Feb, 2002

Re: Are Programmers People? And If So, What to Do About It? Posted: Apr 16, 2003 1:35 PM
Reply to this message Reply
(Whoops! Forgot to do a Preview and mismatched my formatting tags. I've been petitioning Bill for a "delete my last post" feature, to no avail.)

John O'Hanley wrote:
> ...I would add, "Programmers are just as stupid as everyone
> else." That is, the intellectual effort required to use an
> API should be roughly equivalent to that required to
> understand a cooking recipe.

Maybe I'm just stupid, but I am really annoyed by APIs that require me to stop my flow of thought and waste my time and intellectual effort trying to figure out unnecessary intricacies. Let's say you want to get the CRC of a file. Do you prefer an API that has a simple interface including a GetCrc( Stream stream ), or do you prefer one that requires you to create a CRC table object, initialize it, convert your stream to a series of int arrays where only the lower 16 bits are meaningful, add a Crc update event listener, etc., etc.? Like Laird, I remember a time when it was cool to be acquainted Byzantine details (particularly when others didn't and you could lord it over them) of the language, API, or system, but now I am less interested in those things and more interested in tools (including the language) that get out of the way as much as possible and let me think more about the problem I'm really trying to solve.

Guido van Rossum wrote:
> > e.g. Guido is known to suggest that Python improves
> > productivity because it takes less keystrokes to implement
> > the same thing.
>
> I never say that; I don't care much about reducing keystrokes.
> I care about code size for a different reason: reading shorter
> code makes for easier understanding -- up to > some point, and
> that's the point where I stop.

Beat me to the punch! I was going to say exactly that one of the nicest things about Python is its pithiness per page. This is in great contrast to Java, where a high-res monitor and the Page Up/Down keys are always necessary.

> Good IDEs (i.e. IDEA, and sometimes eclipse) reduce the
> cost in terms of keystrokes by automating things. In fact,
> various features of these tools are only possible because
> the language has static typing - so something which may
> appear to be a cost to the language, can be a gain if the
> right tools are available.

I agree that tools like IDEA make Java programming a lot more fun and productive. Even Microsoft's Visual Studio, operating on the languages they invented (VB, C#, managed C++) pales in comparison to many of IDEA's cool features (they need to have a look at IDEA and then do some "innovating").

That Python is dynamically typed by no means implies that it is immune to cool features like those of IDEA. Python has excellent reflection facilities, like Java, which tools can leverage. For example, in IDLE (the default "Python Shell" that comes with Python), you get the now-common parameter tool tips when you begin to type a method. Even better, when you dynamically load a COM automation object (of which the Python environment has no prior knowledge, of course) and call one of its methods, you get tool those tips! Doing something similar in Visual Studio is not dynamic (you have to build an "interop assembly") and doesn't give you any more information. I haven't used any COM or CORBA libraries in Java, but I would be pretty impressed if IDEA could dynamically show method parameter lists when using them.

Not my real name

Posts: 2
Nickname: zamphir
Registered: Apr, 2003

Re: Are Programmers People? And If So, What to Do About It? Posted: Apr 16, 2003 6:26 PM
Reply to this message Reply
I think you are missing an important human factor, but I don't think I can express what it is clearly.

The thing that makes me think you're missing one (or perhaps more than one) is that I can clearly and successfully apply all six of your human factors to coding for a Turing machine.

I do not think anyone wants to code for a Turing Machine.

Flat View: This topic has 44 replies on 3 pages [ « | 1  2  3 | » ]
Topic: Are Programmers People?  And If So, What to Do About It? Previous Topic   Next Topic Topic: Python 3000 Slides


Sponsored Links



Google
  Web Artima.com   

Copyright © 1996-2014 Artima, Inc. All Rights Reserved. - Privacy Policy - Terms of Use - Advertise with Us