From: Frans Bouma on
Robert Martin wrote:

> On 2007-01-26 01:09:23 -0600, "topmind" <topmind(a)technologist.com>
> said:
>
> >
> >
> >On Jan 25, 7:02 pm, Don Roby <d...(a)acm.org> wrote:
> > > topmind wrote:
> > >
> > > > But software is not as clear-cut as say law or medical. The
> > > > human body is mostly "fixed". There will not be 10 new body
> > > > plans to choose from every few years (unless maybe arthropods
> > > > and echinoderms grow intelligent). Software suffers from the
> > > > "god problem".
> > >
> > > If you find legal and medical work to be so simple and clear-cut,
> > > perhaps you should change profession and make a bundle.
> >
> > Well, let's try it then. What would you put on the software
> > engineering exam?
>
> Exams are about knowledge. An exam for entry into a software guild
> would test knowledge that any good software engineer should have.
> Knowledge of languages, data structures, algorithms, databases,
> paradigms, methods, practices, etc.

And here you go wrong. Algorithms, ok, though not everyone knows
language X or language Y and still can be a great software engineer.
For example, not everyone practises TDD/Agile methodologies, and even
so, there are a great number of people who THINK they practise TDD or
agile methodologies however are not doing any of that.

Besides, knowledge != wisdom.

> The exam should also involve
> some significant problems to solve by writing software that solves
> them.
>
> Architects used to do this by asking candidates to create blueprints
> of buildings from a spec. Then a group of Juror architects would
> evaluate the blueprints and grade them.

And here you have a great point. :) I think this is the only real way
to judge if a candidate is good. Theoretic blabla about 'do you know
how quicksort works internally?' is perhaps great for coffeetable
conversations, but really not that important for a person to be in a
guild as nowadays people USE quicksort, not implement it and if they
have to, they open sedgewick's book and type in the few lines. Theory
exams might sound OK, but what if a person had his/her education 10,
15 maybe even 20 years ago? I graduated from uni 13 years ago in an era
where OO wasn't widely accepted for example, and the specialization one
took after graduation is of more importancy than the real education:
the education provides the raw tools, the framework, but what you are
able to do with it is learned afterwards, so I think theoretic exams
are bad in this case but a set of problems to solve and where the
solutions are examined by a jury is an excellent way to test a
candidate IMHO.

FB

--
------------------------------------------------------------------------
Lead developer of LLBLGen Pro, the productive O/R mapper for .NET
LLBLGen Pro website: http://www.llblgen.com
My .NET blog: http://weblogs.asp.net/fbouma
Microsoft MVP (C#)
------------------------------------------------------------------------
From: JXStern on
On 27 Jan 2007 09:32:47 GMT, "Frans Bouma"
<perseus.usenet.NOSPAM.(a)xs4all.nl> wrote:
>> > Well, let's try it then. What would you put on the software
>> > engineering exam?
>>
>> Exams are about knowledge. An exam for entry into a software guild
>> would test knowledge that any good software engineer should have.
>> Knowledge of languages, data structures, algorithms, databases,
>> paradigms, methods, practices, etc.

Maybe, but guilds are about basic competence, exclusivity, and
balancing the demands of the customers.

The elite may opt out of the guild more often than not with the
guild's happy agreement, as the star is as likely to make the others
look bad as to shine in his/her reflected light.


> And here you go wrong. Algorithms, ok, though not everyone knows
>language X or language Y and still can be a great software engineer.
>For example, not everyone practises TDD/Agile methodologies, and even
>so, there are a great number of people who THINK they practise TDD or
>agile methodologies however are not doing any of that.
>
> Besides, knowledge != wisdom.

If wisdom were a requirement, doctors would be truly rare, and don't
even think about applying that to lawyers!


>> Architects used to do this by asking candidates to create blueprints
>> of buildings from a spec. Then a group of Juror architects would
>> evaluate the blueprints and grade them.
>
> And here you have a great point. :) I think this is the only real way
>to judge if a candidate is good.

Yeah, but the classic guild involves an apprenticeship to a master who
teaches, and basically sponsors the newbie for full status. It's not
the AMA or ABA who licenses their members, nor vouches for them.

I'd love a guild, but I can't see ever establishing the exclusivity
bit, which pretty much kills the idea.

J.


From: topmind on


On Jan 26, 7:13 pm, Robert Martin <uncle...(a)objectmentor.com> wrote:
> On 2007-01-26 01:09:23 -0600, "topmind" <topm...(a)technologist.com> said:
>
>
>
> > On Jan 25, 7:02 pm, Don Roby <d...(a)acm.org> wrote:
> >> topmind wrote:
>
> >>> But software is not as clear-cut as say law or medical. The human body
> >>> is mostly "fixed". There will not be 10 new body plans to choose from
> >>> every few years (unless maybe arthropods and echinoderms grow
> >>> intelligent). Software suffers from the "god problem".
>
> >> If you find legal and medical work to be so simple and clear-cut,
> >> perhaps you should change profession and make a bundle.
>
> > Well, let's try it then. What would *you* put on the software
> > engineering exam?Exams are about knowledge. An exam for entry into a software guild
> would test knowledge that any good software engineer should have.
> Knowledge of languages, data structures, algorithms, databases,
> paradigms, methods, practices, etc. The exam should also involve some
> significant problems to solve by writing software that solves them.
>
> Architects used to do this by asking candidates to create blueprints of
> buildings from a spec. Then a group of Juror architects would evaluate
> the blueprints and grade them.

But this would get into the issue of which language to use in the
test, where to find judges proficient in the chosen language(s), which
paradigms are used, which methodologies should be tested, etc.

In my opinion, you have to work with somebody for a few months to
really know if they are any good at real-world issues. Exams don't cut
it. At best, exams may weed out the worse, but beyond that are of
limited value.

>
> > --Robert C. Martin (Uncle Bob) | email: uncle...(a)objectmentor.com

-T-

From: AndyW on
On Fri, 26 Jan 2007 21:13:04 -0600, Robert Martin
<unclebob(a)objectmentor.com> wrote:

>On 2007-01-26 01:09:23 -0600, "topmind" <topmind(a)technologist.com> said:
>
>>
>>
>> On Jan 25, 7:02 pm, Don Roby <d...(a)acm.org> wrote:
>>> topmind wrote:
>>>
>>>> But software is not as clear-cut as say law or medical. The human body
>>>> is mostly "fixed". There will not be 10 new body plans to choose from
>>>> every few years (unless maybe arthropods and echinoderms grow
>>>> intelligent). Software suffers from the "god problem".
>>>
>>> If you find legal and medical work to be so simple and clear-cut,
>>> perhaps you should change profession and make a bundle.
>>
>> Well, let's try it then. What would *you* put on the software
>> engineering exam?
>
>Exams are about knowledge. An exam for entry into a software guild
>would test knowledge that any good software engineer should have.
>Knowledge of languages, data structures, algorithms, databases,
>paradigms, methods, practices, etc. The exam should also involve some
>significant problems to solve by writing software that solves them.

I would suggest to you that it should be just about technical stuff.
I would perfer the three P's to be examined, these are People,
Process, and Product.

In my mind people skills are just as important on a software project
as technical skills. Process is the process of developing software,
the diffrerent techniques taught by each method out there. Product
(i'm modifying the meaning here) is the technical stuff.

Andy

From: AndyW on
On 27 Jan 2007 20:49:58 -0800, "topmind" <topmind(a)technologist.com>
wrote:

>
>
>On Jan 26, 7:13 pm, Robert Martin <uncle...(a)objectmentor.com> wrote:
>> On 2007-01-26 01:09:23 -0600, "topmind" <topm...(a)technologist.com> said:
>>
>>
>>
>> > On Jan 25, 7:02 pm, Don Roby <d...(a)acm.org> wrote:
>> >> topmind wrote:
>>
>> >>> But software is not as clear-cut as say law or medical. The human body
>> >>> is mostly "fixed". There will not be 10 new body plans to choose from
>> >>> every few years (unless maybe arthropods and echinoderms grow
>> >>> intelligent). Software suffers from the "god problem".
>>
>> >> If you find legal and medical work to be so simple and clear-cut,
>> >> perhaps you should change profession and make a bundle.
>>
>> > Well, let's try it then. What would *you* put on the software
>> > engineering exam?Exams are about knowledge. An exam for entry into a software guild
>> would test knowledge that any good software engineer should have.
>> Knowledge of languages, data structures, algorithms, databases,
>> paradigms, methods, practices, etc. The exam should also involve some
>> significant problems to solve by writing software that solves them.
>>
>> Architects used to do this by asking candidates to create blueprints of
>> buildings from a spec. Then a group of Juror architects would evaluate
>> the blueprints and grade them.
>
>But this would get into the issue of which language to use in the
>test, where to find judges proficient in the chosen language(s), which
>paradigms are used, which methodologies should be tested, etc.

In my mind technical people have this problem where they sweat the
detail too much. I dont think a software development organisation
should examine things such as knowledge of programming languages as
believe it or not, at the end of the day its just keyboard bashing and
to me, makes up only about 10% of the effort invovled. Things like
knowledge of a programming language are at the end of the day, covered
in the job interview process. Also, if one is only allowed to join
said guild/organisation when one has a proveable amount of experience,
it could also be said that ability to cut code is going to be a given.
I would also suggest that examining a person on all the areas
surrounding cutting code, may to some degree ensure that they are
aware of the issues that lead to producing bad code.

I think focusing on the wrong things is why the software industry
needs uniting in a governing body to give it direction.

Also, I think that it isnt a good idea to focus on only one process
area. I think its important to be inclusive of all of the development
practices rather than focus on what is likely to be end up being a
vested interest. I would much rather examine somone on the theory
behind the CMM or PSP than on how well they know a programming
language.

Andy