Re: The Economics of Incompetence



I use my clients as references, which is a good thing. I can also
show applications that I developed, which gives a sense of what I
can do. You're right, in that being able to write a function does
not mean you are able to put an entire application together.

You also need to be able to see how the user will *use* the
application, which will enable you to make leaps of logic to help
discern between what they *say* they want, and what they *really*
want, and to make it as usable as possible, as in your examples.
I have no idea how you would test that.

I wrote a medium-sized application at my last job, and the clients
asked me to demo it to their boss because they liked it so much.
He really surprised me -- he took it for granted that the app
functioned effectively based on feedback from the clients, and
congratulated me on the little things that make the users happy,
like using masked edit boxes for the dates so they don't have to
type the slashes, using a listbox on one screen so the users could
pick several items at once, being able to run a report two
different ways because the group couldn't reach consensus on which
way was best, and things like that. People don't usually notice
that stuff, but it makes a huge difference.

On the other hand, my boss asked me to give this other guy
something to do. He had taken a VB class. I asked him to copy these
two screens that were basically a grid showing a table, and an
add/change/delete screen to update the grid, and make them work
for another table. It took him 4 weeks, and multiple consultations
with me going over his code explaining stuff like "you have to change
the field names." (He had no pattern recognition skills at all.)

But here's the thing that really cracked me up. One of the input
fields was a Project ID that needed to be in uppercase with no
leading or trailing spaces. To resolve this, he checked it for
leading/trailing spaces and lowercase letters, and if he found
any, he popped up an error to the user telling him to fix it.

I was like, "Um, couldn't you just uppercase and trim the field
for the guy? We're talking about one line of code here."

He said, "Well, they should put it in right."

Sigh.

Robin S.

------------------------------------------------

"Tom Leylan" <tleylan@xxxxxxxxxx> wrote in message
news:OsQDQBRLHHA.320@xxxxxxxxxxxxxxxxxxxxxxx
I think these types of discussions are rare but important (in
moderation) in a programming newsgroup.

By all means solving the A-Z question using a loop rather than 26 case
statements tells us something. Among them that you're efficient in
your solving of the dreaded uppercase A-Z conundrum :-) This can
reasonably be translated into "he thinks logically" and this is a
programming asset.

Does this translate into "he can write applications?" I'm fairly
certain it does not. Lots of programmers are (algorithmically
speaking) top notch but are barely able to create a useable
application. I fix code all the time, these days usually taking over
projects that have been abandoned by other developers. In every case
the code works, in some cases it was a creative solution (not too
often though) but in almost every case the "application" shouldn't
have worked that way.

I can't give detailed examples in a message but I find a menu option
for "Search" and sub-menu items for "By Code", "By Name", etc. The
user is forced to decide too early which method to find something, if
the code he keys in isn't found then he has to choose the menu and
another sub-menu and try again. Clearly the user just wants to find
something so all search options should be available from a composite
search form. Having keyed in a code and getting a "not found" dialog
the user would simply try typing in a name not navigate down a menu
tree again. I don't even want the user to have to dismiss a dialog
box it's annoying after the 3rd or 4th miss. And of course the thing
should support (as an option) wild-card searches.

I'd say a good number of projects fail not because there isn't a lot
of code but because they are coding the wrong thing. When complete it
isn't what any user really needs though it may be want the user said
he wanted.

I ran across a case where "reprints" prompted "Enter Invoice Number:"
and then reprinted one. The user often needed to reprint multiples so
it was suggested I let the user key up to 5 invoice numbers. Uhhh....
how about I display the list of available invoices and they select as
many as they feel like? That eliminates having to check (and report)
that the invoice number doesn't exist (if they key it in wrong), the
repeated selection of the "Reprint" option and it means they could
select several dozen and go off and work on other things.

Are those questions asked during the interview? Is the goal to write
applications quickly or with the fewest lines of code or (once
complete) to make the company run more efficiently? The hotdog who
wrote "Enter Invoice Number" surely did it faster than my rewrite. I
may have taken 5 times as long to write it but I saved the users hours
per week from them on. It isn't my salary that was the offset it was
the cumulative cost of all the user's salaries.



"RobinS" <RobinS@xxxxxxxxxxxxxxx> wrote in message
news:7MGdnWtGVLyAYArYnZ2dnUVZ_tSunZ2d@xxxxxxxxxxxxxx
I agree with you. The last few jobs I've worked, I was hired by small
business units inside large corporations who just wanted someone to
help them get their jobs done by automating some of their work. The
people interviewing me had nothing to do with IT at all.

And he *is* assuming that the people already there are exemplary,
and you're right, that often is not the case.

I also would have difficulty remembering the parameters (isn't that
what Intellisense is for?), but I don't think that's how they would
judge you. He talks about writing a function to check and see if
a character is an uppercase A-Z -- I'd do that by checking the ascii
code or unicode #'s, but I'd have to look up the corresponding
number.
But the fact that I would do it that way, rather than a big IF
statement with 26 letters in it must say *something* about me. And
there are some people who wouldn't know how to do it at all.

There's no magic bullet. It's just a difficult thing all the way
around, isn't it?

Robin S.




.



Relevant Pages

  • Re: Writing portable applications (Was: Jargons of Info Tech industry)
    ... platforms that STILL don't have a browser that would work with most ... They all have NNTP, SMTP and POP clients. ... > applications provide more portability - which is important for some ... >> Unix wars, before POSIX. ...
    (comp.unix.programmer)
  • Re: Business objects, subset of collection
    ... FOREACH invoice IN invoiceSet ... FOREACH payment IN paymentSet ... Why do you think that designers of large, complex applications spend so much effort trying to minimize persistence access, regardless of whether they are doing OO or not? ... you have to optimize to the problem and provide custom data ...
    (comp.object)
  • Re: Application Security
    ... these Windows Forms applications, ASP.NET applications, Windows services, or ... I assume that your C# clients are not distributed to end users. ... > There is a global SQL Server userid and password. ...
    (microsoft.public.dotnet.security)
  • Re: good, simple (!) invoice for freelancer
    ... All the Mactopia templates seem gaudy -- and with more features than I need. ... Can anyone point me to a good Mac invoice template that has these basic ... techniques to their other clients. ... The summaries made their way back into the spreadsheet. ...
    (microsoft.public.mac.office.word)
  • Re: Application Security
    ... Have you looked into storing your passwords via the Data Protection API? ... >> these Windows Forms applications, ASP.NET applications, Windows ... >> I assume that your C# clients are not distributed to end users. ... >> You can review Microsoft recommendations related to this issue at ...
    (microsoft.public.dotnet.security)