Fog Creek Software
Discussion Board




Amazed at uninformed programmers?

Andrew said in the Hawthorne thread:
"XP is pretty new, so it's attracting people who are interested in the craft of software construction. These people IMO are going to generally be a cut above the average programmer. Programming is just a job to most people (present company excepted, natch). I'd be surprised if more than half the people at my current job had even _heard_ of XP. "

This is a very good point. I am constantly amazed at how many "developers" seem to be completely unaware of what's going on in the software world. They seem to move through their little realm of knowledge without even knowing there's a whole community (albeit a disjointed one) that sees software as an art...

People who haven't heard of ATL, IPv6, PHP, MySQL, Grady or Booch, the controversy around passport/hailstorm, the whole ongoing DRM mess, Code Complete, the Mythical Man-Month, and so on.

To them, there's just the IDE, Wrox, MS, and ADO...

Do you think it's fair to divide programmers into "workers" and "tradespeople"? Would this be yet another indicator?

Philo

Philo
Friday, May 23, 2003

I respectfully disagree.  Most developers I have worked with are quite the opposite.  Above all else, they have tended to have a profound cusiosity regarding new technology, both innovating and researching.

Canuck
Friday, May 23, 2003

I started a thread a year ago about what websites people visit on a regular basis, and someone "If you don't read http://slashdot.org everyday then you should have your CS degree revoked."

There are people who are programmers because they're smart and know they'll make better money programming than flipping burgers.

There are people who are programmers because they love computers.

There are other categories, of course, but let's say there are just these two. How much do you think their knowledge and skills overlap? What percentage of each read Slashdot?

www.marktaw.com
Friday, May 23, 2003

> This is a very good point. I am constantly amazed at how
> many "developers" seem to be completely unaware of
> what's going on in the software world. They seem to
> move through their little realm of knowledge without even
> knowing there's a whole community (albeit a disjointed
> one) that sees software as an art...
>
> People who haven't heard of ATL, IPv6, PHP, MySQL,
> Grady or Booch, the controversy around
> passport/hailstorm, the whole ongoing DRM mess, Code
> Complete, the Mythical Man-Month, and so on.

Just to see if I got it right - as long as I've heard about it, it's OK, even if I don't have a firm understanding of the subject. Is this correct? If it is, then I agree with you.

At work, my tasks include project supervision/management and some minor developing tasks (mainly shell script and small web apps). The major developments are done in outsourcing.

On my spare time, I've tried Java, and I haven't even looked at .NET. I've looked at Perl, PHP, and Python.

However, my little realm of (somewhat limited) knowledge is Win32 using Delphi/C++ (also on my spare time). And, since my spare time is limited, and this is what gives me pleasure at the moment, I have no interest in looking at the zillion other things available out there.

The point is - how much knowledge about a subject must one have before you classify him as "informed" or "uninformed"?

--
"Suravye ninto manshima taishite (Peace favor your sword)" (Shienaran salute)
"Life is a dream from which we all must wake before we can dream again" (Amys, Aiel Wise One)

Paulo Caetano
Friday, May 23, 2003

It's interesting Philo mentioned Wrox books.

For me, the majority of Wrox books are focused on the "how" and not the "why". People who concerntrate on the "how" can often get buried in the details and not really understand "why" they're doing whatever it is they're doing. Conversely if you focus on the "why" the "how"s become techniques that help you stick to the "why"s.

Or more simply buy Addison-Wesley, don't buy Wrox.

Footnote:
I did say "majority" - proving an exception to the rule Rod Johnson's "Expert J2EE" book published by Wrox is brilliant - because it ties the "how" and the "why" together very nicely (e.g. his critique of Java MVC frameworks).

Walter Rumsby
Friday, May 23, 2003

I think it's really important to be aware of what's "out there," if only to avoid repeating stupid mistakes... e.g. if a well-rounded programmer runs into a memory management issue, they can rummage through their experiences and think, "Should I use reference counts? Smart pointers? Mark-and-sweep garbage collection? etc..." Whereas an ignorant coder would just waste time re-inventing one of those techniques, poorly. (or perhaps discovering something genuinely new and better - but that's not going to happen 100% of the time...)

Most trivial software problems have been solved, some many times over. Being aware of all these solutions keeps you out of the common pitfalls... e.g. if you didn't know reference counting can't handle cyclical references, you might waste a lot of time implementing it (like I did once :).

Yes, I've encountered a couple of programmers who were startlingly ignorant of one thing or another (myself included). It probably happens more among self-taught coders than those with an academic background. But I think it's getting to be less and less of an issue, with resources like Google. So many times I've found the right solution with a simple web search, when in pre-Google days I'd have wasted days or simply given up.

Dan Maas
Friday, May 23, 2003

Dear Philo,
                Your problem is that you are assuming that your knowledge and interests are universal.

                I try and have a superficial knowledge of everythng in order to appear more knowledgeable than I really am, and yet I have never heard of Grady, Booch or ATL and have not even cut the pages of the MySQl and PHP books on the bookcase I keep to impress visitors.

                What you are saying is true of many fields. These people only know of what is necessary for them to do a good job. They are not project managers so they don't need Brooks or McConnell, and possibly unlike loads of sad geeks they have a social life and know about things that are of interest to the rest of humanity.

Stephen Jones
Friday, May 23, 2003

I agree with Philo but it's a problem of how wide you cast the net.

John Topley
Friday, May 23, 2003


This is all a lot of unnecessary, elitist blather.

My dad is a civil engineer. Actually, his specialty is groundwater contamination. My brother is an aeronautical engineer.

There are other types of engineers: electical, chemical, mechanical. There are also engineers who specialize in managing engineering projects.

Sometimes the only thing these people have in common is that they all went to the same faculty and got the cold shoulder from the same nursing students.

They're still engineers.

What purpose does it serve to try to segregate engineers into "informed" and "uninformed"? From my point of view, the only purpose is to try to find some way of creating an artificial pecking order. What bullshit.

Bruce
Friday, May 23, 2003

There are more things in heaven and earth, Philo, than are dreamt of in your philosophy.

Its all about specialisation.  Those of use at the code face can sniff at others for not understand pointers or the rest.
   
There are those in our design team who wonder how programmers can hope to implement their stuff if they don't have a true understanding of finance.
   
There are probably HCI experts who despair at the awful interfaces churned out by ignorant programmers.  They hate the gross simplification of Joel's book, and wish they could burn every copy and wipe clean the web server's hard disk.

In some companies the internal politics are so complex that you need to be positively machiavellian in order to buy yourself a new pen.  We probably fail to appreciate the manager who can navigate a successful project through these storm waters, even though he couldn't write a single line of Basic.

The guy who never takes time to read computer books at home may be to busy being a wonderful father and a pillar to the community.

Always remember just how much you don't know.

Ged Byrne
Friday, May 23, 2003

>What purpose does it serve to try
>to segregate engineers into
>"informed" and "uninformed"?

I think I can explain Philo's argument in better terms.

Some time ago, I worked at a company that was
writing a browser-based application that would ship
on CD.  We ended up using MS's IE control to write
our own browser-like front-end, and also using some
microsoft tools to write our own pluggable protocol
handler.  (In other words, we wrote our own web
server.)

Now, there were two main designers on the web server side of the project, and it was pretty slick - because we were using all microsoft technologies, we could tie to app very closely to the operating system, keeping the whole thing in one process, which minimize context switches from the OS, etc.

According to legend, one of the junior programmers went and asked one of the designers "Hey, I'm just curious - when you decided to write a web server, why didn't you just start with Apache and then see if performance was an issue?"

The reply?

" ... What's Apache?"


--- Is -that- what Philo's talking about?


regards,

Matt H.
Friday, May 23, 2003

Oh, so we're talking about gross incompetence...

Too bad we're against licensing.

victim, jr.
Friday, May 23, 2003

I think the original question is about people who have "heard of" a subject, not who "are knowledgeable in" the subject. Outside of software, [from a North America viewpoint] the equivalent might be people who have "heard of Spain and France" (maybe even find them on a map) or maybe knowing that both Dutch and French are spoken in Belgium, not "people who can fluently speak Spanish, Dutch, and French". Also, it is not referring to people who have heard of one specific subject or technology (that is of particular interest to the person making the observations) - it's not possible (or reasonable, perhaps) to have heard of every language, technology, practice, tool, technique, etc.

It's not possible to know everything, but it is sometimes surprising when people don't seem to have even HEARD OF anything outside their immediate area of knowledge in the technology world (or location in the real world). However, I don't think this should be used as a means of dividing or categorizing programmers (or anyone else). Perhaps, we should use it as an opportunity to share our knowledge (without being condescending) and respond to questions such as "What's Apache?" by providing a genuine answer with as little or as much information as wanted by the person asking the question. We can also hope that when we ask a similar question about something outside of technology (like "What's NPV?" to the financial person or "What's a fly ball?" to a sports fan) that the response will be information, not derision.

Philip Dickerson
Friday, May 23, 2003

1) why all this hoopla surrounding another MS operating system anyway?

2) What's a "fly ball"?

[actually 2) is a genuine question]

Justin
Friday, May 23, 2003

Rather than getting hung up about whether people should know about particular technologies/issues/etc. I think that it's more useful to make the wild generalization of dividing software developers into people who view software development as a job and those that view it as a profession.

The software development as a job people just view their work as something to do at the office to earn some money and they only seek out enough knowledge to do what is required of them (and maybe keep their resume buzzword compliant).

Whereas the people who view software development as a profession actively try to stay knowledgable about things outside their immediate job requirements and are interested in the history and direction of the field in general.

Now I'm not trying to make a value judgement here; both approaches are valid.

Bill Tomlinson
Friday, May 23, 2003

I have interviewed hundreds of people and generally
they have been poor. For most people software development is a job, not a profession, not a real interest. If people aren't intriniscally interested they don't keep
up and don't get better. Few people read software
related books, magazines, news groups. If you
hang around boards like this your view can get skewed
because it's a self-selected population of people
who do care. In the wild it is not so.

valraven
Friday, May 23, 2003

"Fly ball" is to baseball what a "catch" is to cricket.

David Clayworth
Friday, May 23, 2003

Not completely on topic here, but kinda related to the uninformed/only programs for a job type.

I was showing a co-worker the other day how I found some VB online to create and add to a new Word document through Excel.  I showed him the webpage where I got the original code and how I did it myself and he seemed pretty impressed.  Then he let this fly:

"But the code on that page isn't written for your program.  How did you know what to change to make it work in your program?"

I was dumbstruck.  This guy has been working here 25 years and has a Masters degree in Elect. Eng...

Andrew Hurst
Friday, May 23, 2003

I once had someone ask me: "When I display a file in my webbrowser is it actually transferred to my computer somehow?".
He was a CS professor at a univeristy.

Just me (Sir to you)
Friday, May 23, 2003

I agree with Stephen: "Your problem is that you are assuming that your knowledge and interests are universal."

I work on a web-based software project (Apache/Python/MySQL). I'm the least experience programmer on the team (out of six).  And I am constantly amazed by how little of them know about XHTML, CSS, JavaScript or even vanilla HTML. Never mind issues like accessibility and web design .

Similarly, I don't know shit about ATL (still learning C/C++) and don't have a clue what DRM is.

I understand your point -- that if you really care about your career, you will make a concerted effort to learn about:
* what other people are working on/with (e.g. PHP)
* what you can do to get better at it (e.g. XP)

But I don't think it can be simplified as a checklist. If you change around the items on that list, you can make pretty much anyone look ignorant.

As an aside, I understand you're pissed off that you're out a job while there are morons who are gainfully employed. And you should be. But that's the case in every industry; nothing specific to software.

Joe
http://www.joegrossberg.com

Joe Grossberg
Friday, May 23, 2003

What university was this? 

victim, jr.
Friday, May 23, 2003

ATL is just a thin framework to support Visual C++ programmers. That way they can write light weight server-side business logics or components that generally  are assumed to have no GUI. So you might use such a thing for example if you are trying to write Yet Another Base23 encoder in C++ and want to wrap it in COM to use it from your ASP scripts. Now you can wrap it in a variety of ways and try to use lighter calls from either MFC or the heavier ActiveX/COM, ATL. With ATL, you are suppose to somehow get some performance and coding benefit from learning yet another wrapper around some decade old c code base.

Li-fan Chen
Friday, May 23, 2003

Here's another one of my pompous, elitist pronouncements: *real* professionals are curious enough to stay informed on current developments in *some* area of their general professional realm. 

I don't think we should limit "valid professional curiosity" to just one angle, such as the set things that Slashdotters find of interest and concern. That's why I'm qualifying this elitist pronouncement: if you aren't interested in SOME aspect of current practice, you're blue collar, not professional, and you just wait on your employer to set a direction for you, as blue collar people do.

My set of interests (IT job market, political outlook for technology, aspects of current practice in open source) may look pretty stupid to someone who is well informed on Microsoft technologies, and again these may look lame to someone who is well versed in current Java technology. But they are examples of the diversity of this industry.

As far as saying "EVERY professional developer should know what XP is" or  some such is a dangerous line of thought. Although, something like XP has intersected just about every niche of our industry in some way, so I think it's possible to validly infer lameness when someone hasn't heard of certain really big issues.

This is a big industry. I just think it's totally lame to limit yourself to the niche that you current work in. And no, you don't have to live at staying current. Just get your head out of your ass and pick up a computer magazine and skim it once a month or so...

Bored Bystander
Friday, May 23, 2003

Matt H said, "Now, there were two main designers on the web server side of the project, and it was pretty slick - because we were using all microsoft technologies, we could tie to app very closely to the operating system, keeping the whole thing in one process, which minimize context switches from the OS, etc."

Say what? A complete system that's willing to waste millions of cycles

* detecting badly hand-written HTML,
* decoding an extremely inefficient transfer protocol,
* loading thousands of unnecessary dlls
* initializing and maintaining tens of thousands of unused functionalities within a reasonably bloated operating system

has NO problem context switching between kernel and application space once in a while. Why would you write a one process to save a few microseconds on a Intel chip that will cost half its market price in (sometimes) 12 months?

Li-fan Chen
Friday, May 23, 2003

This phenomenon is not unique to Comp Sci or even engineering.

For any given profession, there are true professionals ("aficianados" as Hemingway would put it) and there are laborers.

In professional sports, there are athletes that get out of college into the pros and proceed to gain 100 pounds of fat, spend all their money, and fade into obscurity.  Then there are the professionals, the aficiandos like Jerry Rice who work their ass off all year round to remain at the top of their game.

In restraunts, you will find waiters who are only killing time until their audition after work and then you will find the ones that can holde three plates in each hand without spilling and always remember exactly who ordered what.

Richard Ponton
Friday, May 23, 2003

"I was showing a co-worker the other day how I found some VB online to create and add to a new Word document through Excel.  I showed him the webpage where I got the original code and how I did it myself and he seemed pretty impressed. "

I think what is amazing is that older technical people do not know how to research. If you do not know how to use google then please learn. 


Friday, May 23, 2003

If I posted the question "What should a developer know?" or "What makes a good developer?" here on this forum, I bet everyone who responded to my post would come up with wildly different responses.

Some people believe that developers should only concern themselves with technologies, coding, and design issues while others believe developers should know something about the entire software development lifecycle and have extensive project management knowledge as well.

Philo wrote, "This is a very good point. I am constantly amazed at how many "developers" seem to be completely unaware of what's going on in the software world."

Not me. Most software developers that I know excel at one (handful at most) or two niches which allow them to put food on the table. Some of these developers may know a little about many computer topics, but most of that knowledge isn't used by them at work.

Not to be a wise ass or anything, but tell me what I should be keeping on top of?

Should it be:

* The various Open Source technologies out there
* Consulting topics
* Contracting topics
* Project Management issues
* Bioinformatics
* Artificial Intelligence
* Game programming issues
* Web design issues
* Web development issues
* Graphic art stuff
* Networking stuff
* The various ActiveX controls that currently exist
* The various commercial software products that currently exist
* All the Microsoft technologies that currently exist
* Requirements gathering and analysis topics
* The various project and task estimation techniques out there
* Computer hardware issues
* Middleware topics
* Data warehouse and data mining topics
* Mainframe technologies
* Coding issues related to: Java, C++, Phython, Perl, VB, VBA, VBScript, JavaScript, C#, VB.NET, COBOL, Delphi, SAS, ....
* 2D and 3D graphics programming issues
* The multitude of development methodologies that currently exist (light, heavyweight, OO centric, Procedural based)
* GUI issues
* Design patterns

I am pretty sure that I could continue typing for another 10 hours and still not cover everything related to developing software applications and systems. My point is that the software development industry is a very huge field to try to study in its entirety and in some instances it really does take the coordinated effort of various skilled individuals to successfully execute a software project and deliver a useful software system.

One Programmer's Opinion
Friday, May 23, 2003

Someone with no nickname wrote, "I think what is amazing is that older technical people do not know how to research. If you do not know how to use google then please learn. "

Counterpoint to your argument.

In late 1999, I contracted at a small transportation company (2 developers, 1 PM, and a business analyst worked there) that didn't provide Internet access, didn't allow you bring in books or magazines, had strict working hours (doors were promptly locked at 5 PM), and didn't allow you to take work home.

One Programmer's Opinion
Friday, May 23, 2003

[1) why all this hoopla surrounding another MS operating system anyway?]

Justin, Philo can correct me if I'm wrong, but I think they were talking about Extreme Programming, not Windows XP.

One-Armed Bandit
Friday, May 23, 2003

Ged, just for the record - I do have a law degree (obtained while I was programming), two kids in honors programs, and I serve as Chair of our local school advisory council and Secretary of the County Superintendent's advisory council. And I still find time to keep up with the software industry.

Okay, so maybe the two jobs thing didn't pan out as I'd hoped... [grin]

You don't have to spend 24/7 on the box to keep up with developments in the software field. Honestly, you just have to care. And I sincerely believe that the difference is whether you see coding as a job or a profession - whether you *care* enough to learn beyond what you think you need to know.

Philo

Philo
Friday, May 23, 2003

Bruce - interesting example. If those engineers you speak of are licensed Professional Engineers, then they know quite a bit about each other's fields. They have to, to have passed the Engineer in Training exam, which tests across all fields of engineering.

(Yeah, I've done that, too)

Philo

Philo
Friday, May 23, 2003

Joe -
Didn't mean it to be a "thou must knowest this" checklist - I was just trying to give some examples, and even those aren't necessarily the best examples. "What's apache" is another good one.

It's not a matter of "if you don't know this, you're an idiot" - it's more of a feeling you get when you mention something that seems like it *should* be an easy reference, and you get a blank stare. Imagine saying to an American "and so it was definitely a touchdown for me" and getting "what's a touchdown?" - there's nothing that says you have to even know (USAian) football exists to live a normal life, but you simply gotta wonder what rock that person has been living under.

Oh, I just had an idea. bbl...

Philo

Philo
Friday, May 23, 2003

What is the point of life if you look at your job as just a way to collect a paycheck?  I guess I'm glad there are plenty of people like that around though.  Someone has to collect garbage and sweep floors.


Friday, May 23, 2003

Well, it's a good point - it's nice to know what's going on, but Slashdot? Don't make me laugh. They'll be saying The Register is a good tech news site next.

Basil Brush
Friday, May 23, 2003

Philo, I think the interesting part of your question is the way it exemplifies an unusual characteristic of programmers as a profession, and that is the propensity of programmers to attack other members of the same occupational grouping.

This is relatively unusual. Most professions don't do this. Lawyers, doctors, journalists, plumbers, teachers, nurses generally understand the nuances and difficulties in their work and responsibilities, and protect each other against attacks from outside.

What is it about programming that removes this group identity?

.
Friday, May 23, 2003

About the group identity, it's because people who aren't in it 100% for the money want to plant axes in the backs of people who don't care and hinder them.  I remember a lawyer to whom I wanted to give a present, and she took the time to explain she didn't accept gifts because helping people was her reward.  I think she hid a pointed accusation in there about other lawyers.

Also, programmers get to use the net during work, so they don't need to identify with those they don't want.

You know what ninjas do when working with incompetent ninjas.  They kill them and finish the job. ;)

Tj
Friday, May 23, 2003

Don't confuse 'knowing about' and 'knowing'.

I know IPv6 is some internet protcol thingy.  Beyond that I don't care.  It won't affect me.

All tech goes thru the 'what's that?' to 'WOW!' to 'what's that' cycle, also known as the hype cycle.  At lot of us have seen it too many time.

I saw a comment once where someone was glad he didn't learn VRML, even though he felt pressured to do so, to keep up.  Current status of VRML - 'what's that?'

I almost became a NCE - Novell Certified Engineer.  What's that?

Choose carefully.  I know enough about digital TV to know I don't want it.  (You really want High Definition TV - and you don't care if it's analog or digital.)

AJS
Saturday, May 24, 2003

One Armed Bandit: Should I have used <joke> tags or smileys or something?

The comment was more subtle than simply confusing O/S with dev process. Let's please not get into a flame about this and further degrade an otherwise fine topic of discussion.

Justin
Saturday, May 24, 2003

"What is the point of life if you look at your job as just a way to collect a paycheck?  I guess I'm glad there are plenty of people like that around though.  Someone has to collect garbage and sweep floors. "

And do the maintainance programming at large corps.

Tom Vu 
Saturday, May 24, 2003

Justin,

It went right over my head.  My fault, not yours.

One-Armed Bandit
Tuesday, May 27, 2003

*  Recent Topics

*  Fog Creek Home