http://www.perlmonks.org?node_id=206220


in reply to The future of software design

I think that the fundamental differences between software vs. iron and concrete make your analogy weak, but not irrelevant. Making and maintaining physical things requires a lot of capitalization and a steady predictable market. There are standards of engineering practice in the construction of durable objects.

The more etherial nature of software, seen in its mutability and cheapness to duplicate, makes the skill of the programmer more important to the cost structure. The speed of change prevents the formation of rigid professional standards. Programmers are valued for their ability to get a job done which has never been done before. Once an application has been implemented a few times, de-facto standards arise for that application. Those standards are broken up and applied to new problems, not as standards but as guidelines.

The software industry is already broken into divisions like you describe: design, production, consulting, maintainance, support, with similarly differentiated pay scales. The difference is that software at any level needs an aptitude for abstraction, a grasp of mathematical logic, and a kind of linguistic sensibility. Mechanics and engineers have fundamental differences between them, and they each tend to regard the other as the enemy. That situation can arise in software, when warm bodies are expected to maintain what they don't understand, but the fundamental differences are not there.

After Compline,
Zaxo

Replies are listed 'Best First'.
Re: Re: The future of software design
by drat (Hermit) on Oct 18, 2002 at 12:18 UTC
    As someone whose degree is in Civil Engineering (UVA 1993) but programs Perl for a large part of my living, My opinion is in line with Zaxo's: The differences between CS and a 'more mature' disipline like CE are more instructive than the similarities. A fundamental difference is that to be a 'real' civil engineer, one must be licensed. Almost all work done by the profession must be certified by a licensed professional. That certification or 'stamp' carries with it extreme liability (google "joint and serveral")that is mitigated through (expensive) insurance. Also, licensing itself entails 3 year of progressive experience under the direction of a licensed engineer. Licensing is done by the state but is none the less controlled by the profession itself, much as it is with doctors or lawyers.

    Having said all that, I don't think that the concrete and iron aspect of CE is what produces the diffences. In fact CE (like all engineering) is more about information. Deliverables are plans, specs, and designs.

    There is a school of thought that espouses the idea that some fields are professions. These include: Doctors, Lawyers, Teachers, Engineers. Professions have in common a duty to the public and the ability to self-manage due to the unique set of skills that are required.

    Whether or not this pre-20th century idea of a profession can or should embody software development is an interesting question that I have pondered without coming to a firm conclusion. I am certainly not of the belief that all SW developers need be licensed like doctors.

    drat

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

    "That is the best engineering, not which makes the most splendid, or even the most perfect, work, but that which makes a work that answers the purpose well, at the least cost"
    --Ashbel Welch, President American Society of Civil Engineers, 1882
      And most of those professions have parallel professions which do some of the "junior" work, i.e. nurses, paralegals, etc. So there is no need for all software developers to be licensed at the same level.