Earlier quoted context omitted.
That is one of the most subtly disturbing snippets I've ever read about the state of the medical "system" in the USA.
Can you elaborate on what you find disturbing? The implication of high failure rate, or the shift of focus to reliability?
Developer Manifesto – You Are an Artisan, Not an Engineer
41–50 of 91 posts
Re: Developer Manifesto – You Are an Artisan, Not an Engineer
#42Ultimately, the issue for me is when people use the wrong title (?) to describe their level of experience, skill and overall sweet spot.
For example, a programmer is not a developer, and a developer is not an engineer. So when a programmer describes themselves as an engineer - to someone who has no idea what the difference is - that just ruins it for everyone. Not to point fingers in a negative way but the WordPress community is notorious for such shenanigans.
Re: Developer Manifesto – You Are an Artisan, Not an Engineer
#43I was expecting an article focussing on how making software is not engineering said to myself, "not this again." But the article isn't arguing that, the article seems to be arguing we are something more than engineers. There is a subtle implication that engineers are hyper pragmatic and the only thing that is important is that it works. My wife who is a biomedical engineer and makes robots might disagree. In fact, I…
> But the article isn't arguing that, the article seems to be arguing we are something more than engineers. But we are not even engineers, let alone more. There are some people active in the production of software that would qualify as engineers but that's a tiny fraction and they're not going to be found too far from medical devices and aerospace.
Re: Developer Manifesto – You Are an Artisan, Not an Engineer
#44Re: Developer Manifesto – You Are an Artisan, Not an Engineer
#45Oh my god this is such pompous article. None of these things are specific to software developers, and 90% of the things it says are platitudes that mean nothing. There are even some that are just wrong, like the 'throw it away' section. "It's not the code that is valuable. It's the understanding you've gained from building it." What? Maybe at some places, but where I work, the software I write is NEEDED. And this: "N…
This jumped out at me too. This is such a HUGE fallacy. If what you have written is core to or is the product you're selling, you can't just rewrite it! Software evolves over time, and it can become difficult to replace it when it gains features and bug fixes for random edge conditions.
Properly replacing existing software requires having a consistent API against which you are developing and can test to make sure that it continues to work. And then having the ability to potentially dark launch new software next to old to see that it works properly. Even doing all of that, replacement projects often fail, why? Simply because most organizations can't afford to have a team that is not contributing to the bottom line of delivering features to customers.
Doing a replacement project should never be started without a significant amount of thought and attention. Software always takes longer to develop than you think, I even underestimate "Hello World!" most of the time.
Re: Developer Manifesto – You Are an Artisan, Not an Engineer
#46This is why I never touched Laravel, 'The PHP Framework For Web Artisans'. I'm not an 'artisan'. I just code.
Re: Developer Manifesto – You Are an Artisan, Not an Engineer
#47I was expecting an article focussing on how making software is not engineering said to myself, "not this again." But the article isn't arguing that, the article seems to be arguing we are something more than engineers. There is a subtle implication that engineers are hyper pragmatic and the only thing that is important is that it works. My wife who is a biomedical engineer and makes robots might disagree. In fact, I…
> But the article isn't arguing that, the article seems to be arguing we are something more than engineers. But we are not even engineers, let alone more. There are some people active in the production of software that would qualify as engineers but that's a tiny fraction and they're not going to be found too far from medical devices and aerospace.
I feel perfectly content to deem my work as "engineering". I can understand why someone quickly whipping up a small web application (which is not to imply that all web applications are quickly whipped up, nor that all web applications are small) might reasonably feel that their work is not engineering.
So since I've also done quick little web applications, what do I think the difference is?
The aerospace work includes precise operational requirements. It includes formal verification tests which demonstrate that the requirements are met. Code is reviewed; documents are reviewed; reviews are reviewed (not joking, though typically only a sampling subset). Code is subject to formal coding standards; code repositories are subject to formal standards; tools for testing software are subject for formal standards (and documented/reviewed/etc. in their own right). Software that goes onto aircraft is tested in simulations; tested in limited on-ground hardware scenarios; tested in extensive on-ground hardware scenarios; tested on board flying aircraft. The entire process (and the following of process) is reviewed. The end product is signed off on, and, for example, in the case of U.S. commercial aerospace, certified by FAA representatives.
Sounds nothing at all like developing web applications!
Or does it?
A consumer-facing startup web application might have little or no requirements. Testing may be ad hoc. Nothing is reviewed. Coding standards don't exist. Does the software seem to do what is intended? Ship it!
But what about web applications for banking? I've never worked in banking, but I suspect the requirements are fairly robust. (And if in fact they are not, they easily could be.) I suspect that tests are comprehensives, traced back to the requirements. (And if in fact they are not, they easily could be.) I suspect that the software goes through several rounds of testing, that code is reviewed, that coding standards are adhered to. Maybe not to the same level as aerospace, but probably pretty solid.
So what?
Is financial software engineered? I would imagine so. Maybe not as strictly as aerospace -- or maybe stricter! I honestly don't know. But I can easily imagine comparable scenarios.
So if we can engineer financial software, can we not engineer productivity software? We sure could! How about social media software? You bet! Even games? Why not?
I think that all software could be engineered. But in fact it probably shouldn't be. If you want to make a change on software on an aircraft, it might be five minutes editing code in Emacs, surrounded by a year of paperwork and process. That'd be ridiculous for an iPhone game. It'd probably be excessive for a financial application, but maybe some measure of that would be appropriate.
Perhaps there is (or should be) a spectrum of software engineering. At one end, we take extreme measures to ensure quality and process, because (literally) lives depend on it. At the other end, we can hack out whatever we want and it doesn't matter. Most software lies somewhere in between. Maybe some of it should consider moving more toward one end or the other. :-)
[Incidentally, it's common to repeat the phrase, "never roll your own cryptography software". I think it would be totally fair to say "never roll your own flight control software" too. But the people actually writing flight control software aren't necessarily top-tier 0.000000001% brilliant developers. They are, though, surrounded by sufficient process and review that their work is nearly guaranteed to be solid by the time it takes to the air. We could probably do something similar with cryptography software, if there were a model in place (and, I reckon, funding in place) for all of the surrounding infrastructure to engineer it properly.]
Re: Developer Manifesto – You Are an Artisan, Not an Engineer
#48Earlier quoted context omitted.
Engineers of any kind usually aren't doing something radically different. Even if you are building a robot, which is undoubtedly engineering, you probably have a team down the road building something similar. In fact, most software engineers I know are very interested in the cutting edge and research pieces. You can make a living as a mechanical engineer without using an equation newer than a few hundred years.
You can make a living as a mechanical engineer without using an equation newer than a few hundred years. Have you seen what's happened to control theory in the last 15 years? There's so much new math that new PhDs are having trouble deciding which parts to learn. Control theory has imported much of machine learning in addition to all the classic control theory, and they want bounds so they know the machine learning p…
I am absolutely not implying that there have been no advancements in mechanical engineering. Just that it is possible to find a job where you will not encounter them. I am confident you are right that PhDs are doing great cutting edge stuff.
Re: Developer Manifesto – You Are an Artisan, Not an Engineer
#49Re: Developer Manifesto – You Are an Artisan, Not an Engineer
#50The term artisan always makes me think of pizza. How about referring to ourselves as smiths instead? Imagine upon being asked what do you do for a living and responding that you're a codesmith!
It feels like we are borrowing titles from other professions in effort to legitimize our profession. (or inventing new ones)
Software "Engineer"
Software "Architect"
* "Designer"
Solutions *
Distinguished *
Software "Evangelist"
"Technologists"
* Specialist