Live data from Hacker News

A New Software Engineering

queue.acm.org

31–40 of 94 posts

Re: A New Software Engineering

#31
Recipe for making great software:

- Build a good team. Keep management overhead and bullshit to a minimum. Motivate people by giving them really good people to work with and not pulling crap compensation games.

- Do your product three or four times. Rule of thumb: When you're absolutely sick of re-writing the thing and you're ready to work on something else (probably at about this many repetitions) you're reaching the point where you have a decent solution.

- Work on something hard and fun that people actually want to buy.

- If someone in management tries to cram a methodology down your throat, or a salesman knocks on your door with a rad new way to do scrum, kill them and stuff the body with all the other miserable wastes of oxygen who tried to bamboozle you with snake oil.

I dunno. This stuff is just bloody hard, and every silver bullet I've ever seen -- especially the ones that management loves or that use the word "paradigm" in their literature -- has been a dud.

Re: A New Software Engineering

#32
For web and mobile apps, you need programming ability and tooling (bug tracker, source code control, editor/ide, test/release system, etc.)

With that, IMHO your job looks more like a writer than an engineer, and your product feels more like a serial TV show than a skyscraper. Key skills: identifying a compelling story line, building awareness and engagement with a loyal audience.

Re: A New Software Engineering

#33
post #9

Earlier quoted context omitted.

The article points out in the beginning that borrowing project management practices from other disciplines is what we tried to do (which gave us The Waterfall method) and it doesn't work. That said, I agree with the GP in that I was expecting more focus on actual software matters, like how to test the reliability of a system before it's built etc.

I don't think waterfall is actually used in other disciplines, perhaps we were just cargo culting back then? But my question is: if SE is supposed to be based on a theory of project management, then what is the theory used in other disciplines? Or do project management not see that as their underlying theory, but rather something more hard like physics or chemistry? It sounds like there must be a general field of pro…

> I don't think waterfall is actually used in other disciplines, perhaps we were just cargo culting back then?

I think this is half right. There was quite a bit of cargo-culting going on. But the fundamental error was to try to apply the project-management process for the construction of other kinds of artefacts to the design of software. I wrote about this very topic here:

http://www.zerobanana.com/essays/reclaiming-software-enginee...

You're correct that no other engineering discipline attempts to use waterfall-style project management of its design process. They don't really use it in the construction process either (in practice, design tends to continue alongside construction), though it probably has at least been attempted.

It was no surprise to see that the authors of this piece are in fact among the originators of the Rational Unified Process. They claim to have corrected their mistake; in fact they are still pushing the same wrongheaded ideas as they were in the 1980s.

Re: A New Software Engineering

#34
the ethos of software engineering has tended to devalue coders (if not explicitly, then implicitly through controlling practices)

All aboard the software engineering boat: see you downriver for delivery, right past the waterfall!

Re: A New Software Engineering

#35

For more technical methods and theory, I would check out The Five Orders of Ignorance ( http://dl.acm.org/authorize?9919 ) and the book The Pragmatic Programmer.

Five Orders of Ignorance working link: http://www-plan.cs.colorado.edu/diwan/3308-07/p17-armour.pdf .. I didn't find it to be particularly of value.

Re: A New Software Engineering

#36

Another silver bullet in the making. I don't mean to be rude but to me it's pure BS. A grand plan, a conclusion talking about paradigm shifts, and no substance at all. Seeing the method co-signed by Robert Martin even made me chuckle a little. I guess we're on for a second round. This is clearly meant for management (again) and doesn't give a hint of a clue to what is the practice of software engineering. Won't they…

Your comment is actually one of the best formulations of software engineering I've ever read. However, I'd disagree, at least to some extent, with your conclusion:

"This precludes precise estimates or estimates at all..."

While we software developers do occasionally solve novel problems that can't be estimated since the methods for implementing them are not currently known (i.e., research problems), most of the problems we work on are variants of problems we've already solved, and our experience - especially if we record it and make an effort to learn from it - can be used to estimate the scope and complexity of a project (including the "discovery process").

Sure, sometimes our estimates will be way off, but an estimate that's within a factor of two or five of the actual cost of a project is more useful than no estimate at all.

The people who are paying us (management, customers, investors, etc.) will eventually want to know what they're going to get for their money and when they're going to get it - and sometimes the answers to those questions need to be answered before they provide any funding at all, since a solution might be completely useless to a customer if it's not available by a certain date.

Re: A New Software Engineering

#37
It's not like we can't design very elegant, robust, reliable software, you know.

We just can't find anybody to pay for us to retool the whole stack (and I do mean the whole stack, since we're only as strong as our weakest link) while the current ad hoc solution operates within acceptable parameters.

The guy who wrote this paper, in my opinion, is missing two really bedrock principles of "pure" engineering-- manufacturing tolerances and cost. If it works as well as it needs to and comes in under budget, it's miller time. There's a reason every stereo ever made goes -clunk- when you push the 'on' button. There's a reason none of the walls in your house are exactly plumb.

Re: A New Software Engineering

#38
post #37

It's not like we can't design very elegant, robust, reliable software, you know. We just can't find anybody to pay for us to retool the whole stack (and I do mean the whole stack, since we're only as strong as our weakest link) while the current ad hoc solution operates within acceptable parameters. The guy who wrote this paper, in my opinion, is missing two really bedrock principles of "pure" engineering-- manufactu…

Addendum:

The other real serious mischaracterization here is likening software to a physical product, even one as complicated as a skyscraper.

Software is a factory that makes products, whether they're html pages, or graphics on a screen, or inputs to an industrial controller. You start looking at how to engineer and design and manage factories and a lot of the chaos of computing looks very familiar. E.g."367 days since someone lost a limb in a major industrial accident."

Re: A New Software Engineering

#39
I agree with the first half of the article but find the "kernel" concept lacking. Here's why: It doesn't mention actual programming theory.

SCRUM, Extreme Programming, Waterfall, etc. These are all about management and business practices, not about what we do. Extreme Programming has some craft related "practices" (TDD, CI) but even these are mostly in the QA corner.

I think we need a theory about classes of programming problems and their solutions. We need to analyze our code bases, and how we grew those, in order to understand the trade-offs and nature of our approaches. And by this I really mean analyze the code base, the "project idioms", the abstractions, their cooperation.

Examples I recall are from the Lisp world where the bottom-up onion is a well liked strategy (layering toolboxes on toolboxes, each made up of many small pieces which can be combined effectively). Another such observation is the many types with few methods vs many functions on few types debate. This is what I want to see researched (and research myself).

Re: A New Software Engineering

#40
post #33

Earlier quoted context omitted.

I don't think waterfall is actually used in other disciplines, perhaps we were just cargo culting back then? But my question is: if SE is supposed to be based on a theory of project management, then what is the theory used in other disciplines? Or do project management not see that as their underlying theory, but rather something more hard like physics or chemistry? It sounds like there must be a general field of pro…

> I don't think waterfall is actually used in other disciplines, perhaps we were just cargo culting back then? I think this is half right. There was quite a bit of cargo-culting going on. But the fundamental error was to try to apply the project-management process for the construction of other kinds of artefacts to the design of software. I wrote about this very topic here: http://www.zerobanana.com/essays/reclaiming…

"They don't really use it in the construction process either (in practice, design tends to continue alongside construction)..."

For something like a high-rise office tower, the design decisions you can change after construction is in progress are quite limited. For example, you can't add ten more floors to the building as an afterthought, since that would involve adding extra elevator shafts, emergency stairways, water and sewage lines, etc. that would cause significant disruption to the floors of the building that have already been built. Similarly, redesigning the layout of a floor to accommodate twice as many people would require similar changes to stay compliant with building and safety codes.

I suppose if you're constructing a single-family house, there's much more leeway to change the design during construction - but it would still be costly.

Post reply on HN