← Back to context

Comment by csande17

4 years ago

> SE should not be an art form. It should be founded in solid science and abstraction should allow us to keep our knowledge applicable.

Software engineering can never be anything but an art form!

A lot of fields of endeavor have both mechanical "science-based" components and creative "art form" ones. An inexperienced chef can get some productive cooking done by mechanically following the steps of a recipe someone else wrote--cutting up vegetables, operating the stove, and so on--without making culinary decisions of their own. Experienced chefs, though, come up with ideas for things to cook, which you can't effectively do just by following some procedure. You need to have some creative je-ne-sais-quoi.

In software engineering, we have no long-term need for the first category of people. Any programming task that doesn't require human creativity can be automated. (When's the last time you decided which CPU registers corresponded to which variable names in your program?) An effective programmer uses abstraction for precisely this purpose. They spend all day, every day on making the hard decisions, and they let the computer handle the rest.

This is why Enterprise Software Architecture techniques have always been and will always be doomed to fail. You can't have senior engineers come up with rules that junior engineers can just mechanically follow to write good code. If you could, you wouldn't need the junior engineers, since you could just tell a compiler or code generator or something to follow the rules instead. Everyone who works on a codebase needs to be capable of making good decisions about code, in a way you can't boil down to science and checklists, or the best they can ever do is waste their own time producing repetitive boilerplate.

If you look closer everybody who create something on work, like every craftsman, is a kind of an artist. But it pays very badly, so even for people who like the job, are forced to step up into the office, because of the better pay. That is part if the reason, why you almost can't find a good plumber or electrician. If you can count to 2, you are forced out of the job. As you long, as you write software by yourself, you are not much different than a plumber .. you work with your hands.

  • > As you long, as you write software by yourself, you are not much different than a plumber .. you work with your hands.

    There is one small difference - a plumber needs to design some piping and then execute it which takes more time than designing. After writing code, programmer just presses a button and results are made by computer. Otherwise, there is some overlap. There are many programmers, who are not more skilled than a skilled plumber or whose job is not more crative than that of a plumber, but we call them "juniors".

I get this sentiment often, but I think it is incorrect. Software developers should not consider themselves artists - they should consider themselves designers. Yes, a designer has some freedom to express themselves, but mostly they should satisfy the customer. Think of someone designing a lamp for IKEA. The functional and nonfunctional constraints outweigh the artistic freedom by far. Software developers have one advantage over the poor soul that has to come up with that lamp, though: For us there is serious, hard, science that tells us what can and what cannot work. The IKEA designer must rely on market research.