13 ms·
No other profession trivialises their profession to the degree of software
- thriftwy 5y agoLicensing will mostly allow mediocre developers in. Anyone who does app security via a static bullet point list is bound to produce a sieve. And licensing is usually a series of bullet point lists.
- justbored123 5y ago
- watwut 5y agoI dont want licensing, but mediocre developers are in. Many guys get in initially on self confidence and super basic skills only. Some of them learn and grow over time, other not all that much. > Anyone who does app security via a static bullet point list is bound to produce a sieve. And licensing is usually a series of bullet point lists. It would be improvement over current "app security via ignoring it" approach.
- TameAntelope 5y agoThat’s the problem; I don’t want or need excellent developers, I need a known quality of developer. I’m so sick of giving basic FizzBuzz and watching people with “10 years” of experience fail. I’m sure the competent developers want to stop wasting their time taking FizzBuzz! We’re looking for a floor, not a ceiling.
- voz_ 5y agoWhat do you learn from giving them FizzBuzz and watching them fail?
- vippy 5y ago
- TameAntelope 5y agoThe obvious; that I should not hire them for a given senior development position. It’s remarkable to me how many people do fail. I get that there’s pressure, but a huge part of being a senior dev is overcoming that to lead.
- dgb23 5y agoDo you literally mean FizzBuzz or is that a stand-in for tricky leetcode puzzles? The latter seems to be a thing that selects for people who like puzzles. I’m in that camp but I don’t think it’s a super important area of interest.
- TameAntelope 5y agoI literally mean FizzBuzz, it’s gobsmacking how these people get as far as they do.
- manigandham 5y agoThat they're obviously not senior, or even mediocre?
- jusssi 5y agoI am curious. What is the ratio between the failure modes? E.g. * Completely freezing / not coming up with any way to approach the problem / admitting they don't know how to code? * Failing to use the basic tools, i.e. keyboard, text editor, compiler (please don't say you do whiteboarding)? * Failing to produce code that compiles? * Failing to produce an implementation that even approximates correct behavior? * Failing at minor details / edge cases / reading comprehension? * Failing at providing an unit test? * Failing at code quality even if their solution works? * Failing at explaining their solution?
- TameAntelope 5y agoFor my limited experience, and drawing only on memory of observation, rather than any recorded data, I'd break it down approximately as: * 1/3rd of interviewees freeze up and wouldn't be able to add two numbers together if asked. This is, to me, is mostly indistinguishable from, "have never coded in their life and lied successfully to get this far." * 1/3rd only partially freeze up and produce an incomplete solution and can't talk their way through what they did and why there's a missing piece * 1/3rd are able to get through FizzBuzz but with great frustration (they're usually upset with themselves for struggling so much). None of these failures are acceptable in an engineer with any amount of experience, even though they're not all strictly speaking about ability to work with data structures and algorithms in a vacuum. The thing is, software development is a team sport, and you have to come ready to play. If the goal was to find the person with the absolute best ability to take a set of static requirements and turn them into functioning code by themselves, this would not be a fantastic test. That is not, however, how nearly any software job actually works.
- EnKopVand 5y agoBuilding houses became a profession over thousands of years, however, only beginning to have real standards when the masons banded together in guilds. These guilds only attained the power they did because people die when buildings collapse, and important people care when churches collapse. By comparison our profession is, extremely, young and a lot of the software we build doesn’t really matter and doesn’t really have anyone that cares enough about it for there to be consequences. This is why I both agree and disagree with the article. Because anyone can frankly build a house, and a lot of people around the world, not only do so themselves, they do so poorly. At the same time there are a lot of parts of software that are inaccessible to most software developers. Banking and medical software developers tend to care quite a lot about your qualifications and even the modern coding interview is sort of there because our profession lack the “trade skill approval” seal that builders and electricians get. On the flip side of this I live in the city of Aarhus. Some years ago we got a new form of public transportation called Letbanen, which is a street level metro (I’m not sure what they are called in English). It was sort of a standard product that my city bought and it runs in both Norway and Switzerland during their winters that are worse than hours. Last week it was cancelled 5 days out of 7 because the electricity lines were frozen. I love the thing and I don’t mean to complain about it or pretend to know why my city can’t make it work when a city in Norway can, but the fact is that it doesn’t work and tens of thousands of commuters haven’t been able to rely on it for a couple of winters now. It’s CEO hasn’t changed. This is a standard product that was build by certified people that keeps people from getting to their jobs without having a car (in Denmark it’s common not to need a car in our larger cities), and yet, there hasn’t been a lot of consequences for it failing the same way for several years.
- Nursie 5y ago> Banking and medical software developers tend to care quite a lot about your qualifications and even the modern coding interview is sort of there because our profession lack the “trade skill approval” seal that builders and electricians get. As someone that's worked around banking and finance a fair amount in the last few years, I'd say this is not universally true. I've never worked in the medical sphere, but I have worked on everything from tiny payment systems at SMEs to massive compute systems at banks in the top handful of the fortune 500, to quasi-governmental inter-bank communications bodies, and really I've not seen any more focus on qualifications, nor reliance on 'hard' coding interviews than I've seen elsewhere in software. Maybe medical is different, AFAICT finance and banking ain't.
- justbored123 5y ago
- giorgioz 5y agoIt's not a bug it's a feature! LICENSING WON'T INCREASE QUALITY OR SUPPLY Adding licensing to be a software engineer will not produce more or better software developers. LICENSING OBSOLETE IN FEW YEAR The software industry changes very fast and that's also because it doesn't have a ton of beuracracy weighting on it (yet). Try standardising exams to be a software developers, then everyone will have to know a language or practice of 10-20 years ago! Already this is happening with universities that are stuck teaching Java while clearly everyone should have moved to Javascript/Typescript/Python/Go/Rust by now. LICENSING ONLY GIVES ADVANTAGE TO SENIOR DEVELOPERS Finally, this type of licensing are also a way for the people already INSIDE to close the gate and allow less younger talent in to compete with them. Don't close the gate, move up in your career as software engineer and become an entrepreneur or manager and help younger developers rise up too.
- kqr 5y agoYeah, licensing has always seemed to me like a sort of rent-seeking; artificially keeping the supply low to improve the pay of the insiders. It's not like we need that in software right now. Besides, software is a business that's surprisingly low on the bullshitisation that's taking over almost every other "serious" job, where people have ever less time to do their actual job and spend more time documenting how they do their job and justifying their choices with after-the-fact narratives that don't accomplish anything other than make someone look busy while producing nothing of value and increasing consumer costs.
- datavirtue 5y agoI think software developers are highly underpaid. The value delivered by solving a problem permanently is worth far more than $5-$10k a week. You end up working for a year at $300k to produce something that yields tens of millions of dollars for the company. Bad fucking deal.
- giorgioz 5y agoI do think so too. Don't work for others than. Boostrap your own B2B SaaS company with Silicon Valley savings while living in cheap places! I worked 1 years in Silicon Valley and with that salary I was able to live for 3 years around Europe and South East Asia while building my company waiterio.com Now after 9 years I finally have the same salary of what I would be paid in Silicon Valley but I created a new company, created jobs and I won't sell to Google/Apple/Microsoft/Amazon to create monster monopoly. A
- robbrown451 5y agoSome software developers are self taught and do fine. The problem might be that you are referring to it as a "profession." It is for some, but for others it is something they might do more casually, and that should be ok. Would you agree that a teenager should be able to build a widget for a local business's web site for money? Or should a license be required to do that? Should that same teenager have to get a license to baby sit or mow lawns? Presumably you don't think of baby sitting or lawn mowing as professions, so that's the difference. Maybe a license should be required to call themselves a "software engineer." But beyond that, I think this article views things in way too black and white terms.
- Lascaille 5y agoThere's always people who push to regularise and gatekeep the profession, and while they claim to have noble aims it's often simply because they're better at bureaucracy (and surrounding themselves with it for protection) than simply producing viable code. I always view these pushes with a lot of suspicion given the nature of the people that tend to promote them.
- mdeck_ 5y agoComparing ALL software developers to builders or veterinarians isn’t fair. Veterinarians are continually holding animals’ lives in their hands. Builders almost invariably build things that can fall on their head and kill them—so a license is needed. If you just want to build a doll house, though, no one is going to require a license. Software developers sometimes work on critical infrastructure—and licensing there does make sense. But requiring a license for me to build a silly web app seems like a classic example of what people complain about when they complain about unnecessary government regulation.
- donatj 5y ago> Software practitioners should be licensed and be bound by a professional ethical code where violation of said code would result in the revocation of the license to practice software engineering. Nope. You're done.
- brobdingnagians 5y agoExactly. At what point do we need licensing? Someone writing Excel scripts? VB scripts? Making their first game? Making their first website? The first paid opportunity in any of those? Some things might be _reasonably_ licensed (but still in debate), if you are making an automatic robotic heart surgeon... but pretty sure that as a whole is already in that category and taken care of in other, better ways. It would kill creativity, exploration, and innovation of those who are unlicensed. You don't need a PhD to start on the path, and since software is as broad as every other industry and has many different approaches, it is futile to try to set boundaries and limit it. Is someone who prefers strict functional programming not worthy of certification? The "certification" would tend to favor the current dominant styles, which would be enterprise-y procedural-ish stuff. I don't think that would be a boon to the state of the art or to progress.
- cush 5y agoHandling personal data, health data, or financial data, could be criteria used in licensing. Codes would exist for safely handling them, just like building codes for safely building a structure. And no the code wouldn’t include functional vs object oriented programming, just as a building code wouldn’t specify the building’s paint colour.
- erosenbe0 5y agoAmerican healthcare is already such a closed market with horribly inefficient, protectionist regulations that literally squeeze the breath out of American industries and consumers. Any proposal that could increase costs for marginal benefit should be considered dead on arrival.
- cormacrelf 5y ago
- SamReidHughes 5y agoI can't imagine any serious developer thinking a licensing program would improve outcomes. One reason this blog post is a bunch of images and analogies instead of a coherently constructed argument about how things would work in practice is because that couldn't hold up to scrutiny.
- coldtea 5y ago>I can't imagine any serious developer thinking a licensing program would improve outcomes. The "serious" qualifier makes this a "no true Scotsman". If a developer thinks that, then one can always say "he is not a serious developer".
- Doxin 5y agoJust because an argument contains a logical fallacy doesn't mean the entire argument is fallacious. Never mind that the GP probably had a definition in mind for the words "serious developer" there, making it not a "no true Scotsman" fallacy but just a badly worded argument.
- SamReidHughes 5y agoThe developer just needs to have good systems thinking. Anybody who disagrees with that is a goals thinker.
- dataflow 5y agoDo you have any links to such arguments and rebuttals to them? I dare say it's not obvious to everyone why a licensing program would not improve outcomes.
- SamReidHughes 5y agoNo, sorry. I've never seen any argument of the sort that describes some cause-and-effect relationship, like, developer licensing => downstream effects => outcome improvement achieved. It's not like I go looking for these, though.
- Tepix 5y ago> Systemically, I'm concerned that there is a lack of professional liability, rigorous industry best practices, and validation in the software industry which contributes to why we see [...] stories floating around our industry publications about people being concerned about the possibility of a remotely exploitable lunar lander on Mars. If a Lunar Lander were to be on Mars, is only software to blame? /s
- voz_ 5y agoYou have it backwards. We need more engineers, less moats, less licensing, less credentials.
- Kim_Bruning 5y agoAlways good to refer back to RMS's Right To Read to see what stage people are proposing to implement next. https://www.gnu.org/philosophy/right-to-read.en.html https://www.gnu.org/philosophy/right-to-read.en.html Now Licensed and Bonded programmers are being proposed. Who thought this was science fiction, once upon a time? RMS is a Cassandra of our time.
- teddyh 5y agoNext: Programmers with Imperial Conditioning.
- Apocryphon 5y agoLike so many proposals, this is just a blog post, destined to be shared and ballyhooed about, never to be made into policy of any substance.
- t43562 5y agoWe use software that's developed voluntarily by unpaid developers because it's so much easier than trying to get permission to buy everything we need, so much more flexible and it takes the decision out of the hands of the managers who would screw it up for endless reasons that have nothing to do with what's the best tool for the job. Software developers are in shortage and we don't need to put any more roadblocks in the way of people who decide to learn it. On the absolute contrary we need to make it easier.
- eterevsky 5y agoI know a ton of smart people who got a degree in something other than computer science and ended up as successful software engineers. All of those people would need to waste additional years of their life if software engineering profession was regulated. For me personally the lack of regulation is one of its best features of this profession. We already have to deal with enough corporate bullshit to add to it licensing and regulations.
- injidup 5y agoI'm not sure that the author has experience in the aerospace software industry. Software development there is a totally different ball game compared to web site / consumer app development. Automotive is also very different though not to the same standard as aerospace. There are rigorous standards that will make your eyes bleed https://en.wikipedia.org/wiki/DO-178C https://en.wikipedia.org/wiki/DO-178C and you won't have any fun with the latest frameworks and toys. It's designed to be boring and safe. The development process is excruciating. I remember from my short experience fun things like the person who writes the spec is not allowed to write the code and the person who writes the code is not allowed to write the test cases. Code coverage is not enough. You have to try to cover every combination of branching. https://en.wikipedia.org/wiki/Modified_condition/decision_coverage https://en.wikipedia.org/wiki/Modified_condition/decision_co... But in the end as the Boeing example shows. If you have people willing to subvert the regulations for their own personal profit then things will break.
- morelisp 5y agoMC/DC coverage is weaker than path coverage, which is what you describe. MC/DC coverage is also not as useful outside control systems, as other large systems usually have more side effects and path interdependencies. Conversely, path coverage measurements are computationally intensive at best and uncomputable at worst.
- someweirdperson 5y agoAutomotive: It looks really great for management, to minimize the liability risk. Look what great processes we have installed to avoid all kinds of problems. Reality: The code is written by the lowest bidder. This might be people with some form of formal qualifications, but also often is people who have no idea how a car is supposed to work, who do not even have a license to drive one. Imagine someone implementing a web app without ever having used a web browser. The specifications are written by non-software engineers, and more often than not they contain a code-like description of the software, without any significant explanation. That's code written by people with no clue about software. The tests may provide any coverage you can dream of, but they are unfit to detect any kind of bug. Which is obvious because the authors of the code and test have no idea about what problem the code is supposed to solve. And the only goal is to prove coverage not to find bugs. In the end it only works because there is different people, who know how cars work, and test everything manually. At that point, coverage is of no concern at all, and bugs stay undetected, but the result might be just good enough. Also, it helps that (from a pure software point of view) most automotive software isn't exactly highly complicated.
- MisterBastahrd 5y agoOh goodie, we're doing professional credentialing. First, you grandfather in all the people who are already working. Next, you artificially limit the people who can come in behind them so that the rates of the licensed pros can skyrocket. It works for surgeons and orthodontists, after all.
- datavirtue 5y agoCount me in!
- deleted 5y ago[deleted]
- cloudsec9 5y agoWhile it's easy to write a small piece of code, it's much harder to craft a coherent system of some kind to do anything non-trivial. Does that mean we need some test or professional credential to serve as a "gate" between small and large? I think that the only thing that helps here is experience. And a piece of paper doesn't really help with that. I also think that good developers are able to be self-deprecating. Just because we muse over not working or writing bad code, we don't want to deliver a bad product or project -- usually the user doesn't see the code. So, I'm fine with being a bit less "professional", if my users are happy with my work product and it makes me seem more approachable and human.
- amelius 5y ago> I also think that good developers are able to be self-deprecating. This also holds for doctors.
- zaptheimpaler 5y agoI do agree the profession is trivialized and infantilized, but licensing is not the answer. There are plenty of shitty doctors and builders too. We don't need licensing and crazy security standards to build the 10000th SaaS app. It doesn't matter if it breaks or falls down or is built by a clown. There are a few rare places where software actually needs to be very reliable, like say NASA or medical equipment or self-driving cars. Those places typically already have a very different culture and practices. The trivialization of software comes from the VC/investor class imo. They want to desperately push this idea that everyone can code because it means a continuous supply of cheap labor. Pushing back on that idea is called "gatekeeping". Devs get mindfucked into devaluing themselves, and even if they realize this, they are competing in a pool of others who are similarly mindfucked. I wish software devs would stop ceding power so easily. The typical arrangement is that you don't decide what to work on, don't decide how long it will take, don't have much say over the organizational structure etc. You don't have to passively accept shitty interviews, the obligation to make your code public, the complete decoupling of decision making from execution etc.
- erosenbe0 5y agoEveryone CAN code though -- just like everyone can write a story or hammer a nail. There are different skill levels, that's all. I couldn't write a quality publishable work or build cabinets without several years of honing those crafts.
- greenmana 5y agoRegarding licensing, having a degree from a good university with good grades is already a pretty good "license".
- barry-cotter 5y agoIndeed, we should ban people from bad universities from competing for our jobs. We certainly wouldn’t want anybody who hasn’t graduated high school to be working with us. They might say the wrong things or have the wrong attitudes.
- kuboble 5y agoI hope even author of this article would agree that it's stupid to require licence for building a simple browser game. Yet it feels that building essential life- saving machines running on windows XP with internet access should be a crime. I think if anything we need regulation on the industry-level so that e.g. plane controllers won't be running on operating system which can restart and update without users consent. It would make prefect sense to require certain level of certification to work on code in some selected industries.
- cush 5y agoWhen people think of industries that need regulation, it’s aviation and healthcare. But the fact is there is so much liability in every industry and there’s nothing protecting consumers from reckless incompetence or misuse of personal data. Ethics is at the core of all other Engineering disciplines, and there’s no reason we couldn’t regulate Software similarly. It protects the public.
- lucic71 5y ago
- MadSudaca 5y agoThere are fields where software development practices are regulated by standards (i.e. medical devices). I don’t see the need to regulate all areas. Moreover, anyone can complete a few tutorials and do something useful for society using software: a website, a mobile app, etc. Why would we forego these benefits? There are situations where mitigating risks is absolutely necessary (again, healthcare is a good example), but in most cases, it’s best to let individuals decide how to best deal with those risks, taking into account their domains and resources to determine how to best produce value.
- cm2187 5y agoI would regulate all areas that store private information. It is just shocking that developers handling this data are still writing SQL injection vulnerabilities, storing it in unprotected databases in this day and age.
- erosenbe0 5y agoThe storage of private information is already regulated, particularly in Europe, or in American Healthcare settings.
- newbie789 5y ago
- smokey_circles 5y agoI can't read this article as anything other than "I want to be special, look at me". The only thing worse than the idea is how poorly it's argued. Boeing's issues are not software related. Those planes crashed because of MacDonald Douglas's involvement and the lack of accountability _for management_ that followed. Also the FAA. Licensed software engineers wouldn't have fixed a systemic issue elsewhere. Plainly a stupid, irresponsible and irreverent opinion. Hopefully the author reneges on this nonsensical idea.
- onion2k 5y agoI think a lot of software developers like to think of themselves as skilled code surgeons who precisely cut away solutions to life or death problems. Truth be told though, most software that gets built isn't very important. No one is going to die if another WordPress site falls over or if a mobile app crashes when you put an emoji in the Name field. People should be licensed when their failures have a serious impact on other people's lives. Devs don't need to be licensed; most of our failures are annoying rather than dangerous. The majority of us are the crystal aura cleansers of the medical profession.
- deleted 5y ago[deleted]
- unicornmama 5y agoSoftware engineers are more like orthopedic surgeons, who are living memes in the medicine community. Nsfw ortho meme: https://images.app.goo.gl/fTKFFYP9vTgoFiAs6 https://images.app.goo.gl/fTKFFYP9vTgoFiAs6
- dataflow 5y agoIt's not websites or apps going down that's the issue here. Security breaches can very much have real impact on people. For security issues at least, it doesn't really matter how silly or nonconsequential the use case of your software is. What matters is the data you hold, and how you take care of it. Your software could literally be a background service gathering user data, and it could still be devastating for a user if that data gets leaked, even if they didn't know about (and were otherwise unimpacted by) your software's existence (or lack thereof).
- onion2k 5y agoThere are lots of software security certifications though, for individuals and businesses. I've work with an ISO27001 company a few times - it's the CSO's job to assure things are done securely rather than the individual devs. The same is true for most aspects of the software lifecycle - PMs, security, QA, etc do have certifications available. Devs are just the people who do the hands on work, not the ones who made sure it's done well.
- paganel 5y agoWriting software has proved to be one of the most successful professions of the last 30-40 years, yes, there have been (and there certainly will be) mishaps, but the world has changed considerably (for good or for worse) because of our profession. Software has indeed eaten the world. Had this profession been a guild-like thing from the very beginning as the author of this article suggests then I think none of this would have happened.
- Barrin92 5y agoI don't take 'software eating the world' as positive. Finance has eaten the world as well, does that sound so good? The only reason it has a positive connotation is because the people quoting it tend to profit from it. If we took software engineering seriously overall we'd still have all the things where that's already the case. Compilers, machinery, infrastructure and so on. Sure we maybe would only have two delivery platforms that don't lose your data instead of 50 that do, but is that so bad? For many years now every time people discuss raising standards in the industry there's always the line of argument that we lose a whole bunch stuff. To me it sounds like arguing that banning people from pouring lead into the river loses you a bunch of companies. Sure, but good riddance.
- stevage 5y agoWhat do you know, the parts of the software profession where it really matters if someone does a good job do have qualifications and certification (network security, for instance). When you build a shitty website, generally no one really gets hurt.
- degun 5y agoReminds me of this[1] article, which instead is a rant about the lack of quality work in our industry. [1] https://tonsky.me/blog/disenchantment/ https://tonsky.me/blog/disenchantment/
- nickysielicki 5y agoThis a very weird post. I feel like he got half way through, attempted to make some horrible analogy about a squirrel and shake shack, and then ended the post. What was your point?
- rickmode 5y agoThe answer, I think, is warranties. As soon as software can no longer be delivered “as-is”, the profession will need to change. Hobbies will still exist, just as they do for almost all other professions, but as soon as software is required to be fit for purpose, we will need to get serious. That’s when regulation and (gasp) licensing will need to come in to play. As soon as, say, a retailer or a bank can be sued to oblivion for bad and/or insecure software, whether it was written in-house or not, the regulations will flow back to the producers of the software. We are still in the Wild West days. Enjoy it while it lasts. Once we, as a society, start requiring software to actually do what it says it does, the fun times are over…at least professionally. We will still be able to have hobby projects automating sprinklers and lightbulbs and such with the latest unlicensed (edit: un-warrantied, really) Raspberry Pi and Linux. But at work we will be using buttoned down OSes, programming with buttoned down programming languages, using a (comparatively) small number of professionally licensed third-party libraries, and all this with some painful professionally certified software development methodology. Edit: for clarity.
- Dracophoenix 5y agoI'm not convinced. As long as someone is capable of inventing a new programming language, new libraries, or a new computer paradigm, there will always be a Wild West. If computers operated on the logic of "what's popular today will stay popular tomorrow", COBOL and Ada would be where C and Python are today. Buttoned-down OSs existed in the form of mainframes and minicomputers up to the 90s (I'm sure you know what happened to those). Government and corporate standardization often fails more than it succeeds (e.g. respectively, OSI and CORBA), and will eventually follow the trends of the commercial market anyways. Until governments start inventing their own operating systems with 60 years of code and multiple versions of multiple programming languages and standards to reimplement, I wouldn't be so worried. Right now, state governments and federal agencies are panicking to find COBOL practitioners. That should tell you how even respectable stations can become ghost towns.
- renewiltord 5y agoMan, to think the pioneers of our craft were free thinkers with liberty on their minds. We could so easily have had our field founded by obsessive credentialists. Can you imagine? “Please enter your license number and authorization code to use this compiler”. No thanks, credentialists. I’m a better programmer than you. And part of that is because I don’t waste time trying to become an MSCE or whatever you’re trying to do.
- datavirtue 5y agoYet everyone runs around with their hair on fire chasing AWS certs. I'm missing your point.
- Apocryphon 5y agoAnd looking for AI/ML specialists, and data scientists, with PhDs. How about that.
- renewiltord 5y agoI know many $1M+/year engineers. I know zero AWS certified $1M+/year engineers. The point isn't to abolish the certification mechanism. It's to prevent it from being compulsory. The certification mechanism is a way for people without anything to recommend them to find a credential.
- endymi0n 5y agoOh my. First off, most people would disagree in the first place whether coding is a „craft“, a science or even an art. He‘s saying craft (which is taught by other craftsmen), but what he probably means with his certification is college/uni. Now I‘ve seen some of the worst sins of coding ever done by CompSci „master crafters“, with PhDs producing the cherries on the cake, with Java classes having longer names than the 80 character line limit. And I don‘t even mean the designed-by-engineers frontends with UX level „crime against humanity“ (hello, early Hadoop). I mean actual backends where CompSci education should shine, but even very smart people don‘t grasp the inherent cumulated complexity of massive systems. Because creating complexity is what you learn at Uni, rarely removing it. Log4J wasn‘t a bug. It wasn‘t a backdoor. It was working as specified. Look, this stuff is hard, one way or the other. I don‘t think we need even more gatekeeping and cover-your-ass to keep out the smart people who fail at university because they challenge the status quo and an outdated curriculum.
- einherjae 5y agoBut all you’re saying boils down to the best practices being questionable, not that actually formalizing them into a proper craftsmanship wouldn’t make sense if we actually made better best practices. You may talk about gatekeeping all day, but at the end of the day we do want the code in our pacemakers, cars and drones to be written by people following stringent standards, such that we have some idea of the quality. The fact that said standards may not yet exist is not an argument against that, it’s an argument against the status quo in standards.
- athrowaway3z 5y ago> not that actually formalizing them into a proper craftsmanship wouldn’t make sense if we actually made better best practices. This is the start of a bureaucracy that will grind progress to a halt. Because now instead of solving problems we get to create a commission who can appoint a club that have the right to appoint the master craftsmen who will be capable enough to formalize best practices. If you think that's hyperbole on how this stuff works, it is not. Furthermore, why would we assume people who enjoy debating best practices know actual master craftsmen? > The fact that said standards may not yet exist is not an argument against that, it’s an argument against the status quo in standards. The fact that said standards have been tried, and you don't know about them is a very strong argument against them.
- _Nat_ 5y ago> Software practitioners should be licensed and be bound by a professional ethical code where violation of said code would result in the revocation of the license to practice software engineering. That seems like something that might make more sense if done minimally. For example, if we freely granted anyone who wanted a professional-license, then basically just publicly affixed warnings of blatant misconduct (like deliberately sabotaging an employer's code), then that might seem sensible. However, professional-licensing schemes seem prone to becoming cartels. Eventually we'll probably want a (web-of-trust)-like system to replace the ad-hoc strategies for vetting business-associates used historically. Professional-licensing bodies seem sorta similar in principle, though their heavy centralization/bureaucracy seems prone to corruption and chilling-effects while also being of questionable effectiveness.
- postit 5y agoI won’t ever forget a macroeconomics lecture I had back in university. It was in line with “To accumulate wealth, you either have to exploit the planet, other nations or it’s own people. This applies for countries, companies and even individuals.”
- wolpoli 5y ago> To accumulate wealth, you either have to exploit the planet, other nations or it’s own people. This applies for countries, companies and even individuals. That's an excellent way to put it. Our regional Dental Surgeon association constantly runs ads encouraging people to become dental hygienist, explaining that it is a great career. It's obvious through why the association wants more hygienists - Dental office needs to hire and pay for Dental hygienists, which are owned by Dental Surgeons. These days, tech companies and executives constantly encourage people to learn to code because it is supposed to be a great career. I couldn't think of other reasons beyond the obvious altruistic reason of just wanting to make everyone better off by guiding them towards this career. /s Really, the issue is that many young people in software hadn't taken many social science or business courses so they hadn't seen how society/politics/business work until later in their career.
- roenxi 5y agoThis is basic economics - a lot of different approaches were tried and components overwhelmingly developed by unpaid volunteers on an as-is basis turned out to be cheap and of high quality when the marginal cost of copying work gets really low. The issue of bugs doesn't go away from having more certification. Formal methods might be able to have an impact, but that can't produce software at the rate we need it produced to get real value. No-one sat down and decided to use open source - quite the reverse, it rolled over any number of opponents by being more reliable in the long term and cheaper. If the same approach worked in other industries it'd be used there too.
- minroot 5y agoTo author: The scroll performance of this webpage is bad on my mobile phone.
- molsongolden 5y agoThinking about the accounting industry after reading the post and comments: Many accountants have non-accounting degrees, are self-taught, work without a license, etc. but a license is required to “hold out as a Certified Public Accountant (CPA)” and perform some regulated services. The CPA license provides the skills/knowledge floor that other comments have mentioned so being a CPA offers signaling even if a role doesn’t require the license. There aren’t any buildings falling or patients dying but all CPAs have annual continuing education requirements (including ethics classes) and the Code of Professional Conduct has a strong focus on maintaining public trust in the profession. There’s a lot of professional judgment involved but most of the Code boils down to: keep the public interest in mind, act with integrity, be competent, do things your professional peers would deem reasonable.
- niemenmaa 5y agoYeah, no. Anyone could build furniture without any licenses. It's like anyone can be a salesman, but the more serious consequences something has, more regulation there is for selling it. Regulation based on consequences already exists in IT sector as others have stated in this thread.
- cush 5y agoThe responses here really attest that most software engineers don’t know the first thing about regulation. Comments like, “Why would you need to regulate a browser game?”. Anyone can go to Home Depot and build personal toy projects, but as soon as they start selling services with liability, like electrical work, they need certification and need to follow building codes. There’s absolutely no reason why software couldn’t have similar regulations and certifications for software sold to customers that carries liability.
- wakeupcall 5y agoYou can already see the effect of regulation on ISO certified enterprise software. It's software which is bought generally by big companies which are themselves certified, so if there's a problem there's somebody to push the blame onto. To put it lightly, it's expensive and it's shit. I'd be against setting any sort of guideline currently. IT is still too immature and everything is still changing too fast. To make one easy example, setting guidelines for testing would just result in worthless unit tests. I'd be more favorable to some FAA/EASA style of institution where we evaluate a company/project/people based on its incident-response track record. And even then, I still see too many recipes for abuse.
- Apocryphon 5y agoPlenty of non-certified enterprise software is just as bad; is following ISO standards really the reason for their lack of quality?
- wakeupcall 5y agoDefinitely not, but I feel the certification is a big reason for it: - certification is usually an expensive process which doesn't add value by itself - small teams are effectively removed from the talent pool due to the cost requirement, leaving only large (and less efficient) teams/orgs You artificially reduce competition, to the point that the remaining entities are shielded by the initial barrier to entry and have very little incentive to do anything about it. You can keep raising the certification requirements: it's actually "good" for enterprises which can afford the costs, with basically little or no change in the quality of output. This is not unique to software development either. I'm not against it by principle, but I'm very skeptical in how certification is applied in _many_ of the contexts I've seen it.
- dalbasal 5y agoSo... There are a bunch of loosely connected elements here. The primary one, IMO, is the "anyone can be a dev" ethos. A lot of this ethos is historical. Programming does not have long decades or centuries of history, like civil engineering, medicine or whatnot. In fact, programming was (relatively) recently something that users were expected to do. "Buy computer, program it." was the model into the 90s. Related is the fact that programming moves fast. Building techniques change, but much slower than software. Most civil architects work all their life building similar constructions with similar materials. That lends to a lot more formalism. Idk... I'll grant that there are a lot of downsides to openness. There are upsides too though. On balance, I feel that software's rare status as a "free profession" in anachronistic terms, is good. Also, I think that expansionary economics plays a role. There's more software work every day. Software developers aren't under the same economic pressure as other professions. Lawyers would be hurt financially if accreditations and qualifications were taken out of law. It's hard to know what a world with licence to code looks like. Maybe we have a lot less software, but it's more secure. Maybe we know a lot less about the software we have. Finally, I consider the importance of OSS, FOSS and volunteer made software a strength, not a weakness. That's a whole other thread though.
- ElemenoPicuares 5y agoYes surely most workers the medical industry, most service workers, home health aids, school teachers, retail professionals, etc etc etc would be astonished and disappointed by the degree to which software engineering is trivialized in our society and professional landscape. If you’re wondering why people think software developers are seen as out of touch children, I don’t think professional licensure is high on the list tbh.
- unicornmama 5y agoPointless blog post which generalizes from an extreme case (Boeing) to draw hyperbolic conclusions. Let’s start with the three major fallacies 1. Software Engineer is a monolithic profession. There are a great many specializations. 2. Software Engineering is comparable to trades and other engineer professions. Classical professions have existed for millennia, and are built on a foundation of failures through anti-fragility. We understand really well how to build houses and bridges. Software is a nascent profession. 3. Societal problems can be solved by software engineers. This is a problem of law and consequences. The Babylionians had a great thing with Hammurabi’s Code. When data protection laws will severely punish personal data leaks, then banks and other financial firms will take great expense to prevent them.
- ce4 5y agoShouldn't that be a "cannot solve" in the 3rd paragraph?
- locallost 5y agoWhen you check e.g. building code or surgical procedures there is always a reason for something. E.g. use nails not screws because screws are brittle. Wash hands before surgery because bacteria on your hands might kill your patient. But all of this needed to be proven at some point. With software, best practices often end up being "I would do it differently, hence it's a code smell". In this way developers are less like serious engineers and more like simple craftsman. They learned one way from someone (their first job, the blogger they respect etc.) and that's it, that's the correct way. That's how plumbers etc. operate. So the first step in becoming serious is proving why one thing is important and why we should do it. I am experienced in a way, and I mostly really don't know. I've seen projects built real serious that were impossible to change and duct taped things that were a breeze. So it's not what most people think.
- kragen 5y agoIf this blog post had been written 4000 years ago, it might have said: I asked the other scribe at the temple if anyone can learn to read, and here's the first result: Anyone can be literate — it's not magic. You don't need to be a pharaoh or a priest to solve writing problems in the real world No other profession that I'm aware of trivializes their profession to the degrees that scribes do. Scribes should be licensed and be bound by a professional ethical code where violation of said code would result in the revocation of the license to practice reading and writing. — ⁂ — http://www.cs.cmu.edu/~Compose/bok_assessment.pdf http://www.cs.cmu.edu/~Compose/bok_assessment.pdf In May 1999 the ACM Council adopted a resolution both reaffirming ACM’s commitment to solving the software quality problem and also stating its opposition to licensing software engineers, on the grounds that licensing is premature and would be ineffective in addressing the software quality problem. ACM Council also affirmed its interest in developing a core body of knowledge for software engineering, which is often viewed as an appealing step toward improving software quality. Our committee was formed to study the existing software engineering body of knowledge efforts — including SWEBOK, with which ACM is involved through the joint IEEE CS/ACM Software Engineering Coordinating Committee (SWECC). Our charge was to determine the status, progress, and likely outcome of these efforts. This report documents our findings, our reasoning, and our conclusions. Our study and analysis has led us to the conclusion that the current software engineering body of knowledge efforts, including SWEBOK, are at best unlikely to achieve a goal of critical importance to ACM: the ability to provide appropriate assurances of software quality for software systems of public interest. Although the body of knowledge efforts may possibly make progress towards other stated and unstated objectives, we believe that ACM’s continued participation in the SWEBOK effort will not further — and indeed, may distract from — efforts to improve software quality, especially for systems of public interest. It would be consistent with our analysis for the ACM Council to choose to withdraw ACM from further involvement with SWEBOK, largely because of the danger of pursuing a path that might well provide false assurances to the public. Furthermore, we are uncertain whether, at present, there exists any process to articulate a core body of knowledge in software engineering that will directly contribute to the solution of the software quality problem. At a minimum, a conceptually clear and generally accepted organizing principle is a necessary pre-condition to the effective articulation of such a software engineering body of knowledge. No compelling organizing principle exists at present, and we see no clear course of action that would be likely to lead to one in the next few years. — ⁂ — That's from 02000, but unfortunately the situation hasn't changed since then. The IEEE continued promulgating the SWEBOK, but it's nothing more than a bunch of snake-oil methodology salesmen seeking unearned credibility for their fake project-management panaceas. We do have a few pieces of software that may have achieved reasonable quality for "software systems of public interest", like seL4 and CompCert, but it's still an extremely fringe activity. — ⁂ — The bigger issue is that computers are now our exocortices; we've offloaded significant amounts of our thinking and communication onto them, as we did previously with inventions like books and clocks. Computers vastly extend our mental abilities. Without control over our computers—without the legal and practical ability to program them and to investigate what they are programmed to do—we in effect lose our freedom of speech, association, and thought. That power is far too dangerous to allow any guild or faction to monopolize it. — ⁂ — The closest I've seen to a well-thought-out professional ethical code for software development is https://www.gnu.org/gnu/manifesto.en.html https://www.gnu.org/gnu/manifesto.en.html, which motivated the development of much of the infrastructural software we rely on every day: GCC, glibc, bash, GNU grep, GNU xargs, etc. Its core value is giving end users control over their own computers; this is completely incompatible with Huntley's point of view, not to mention much of current industry practice. But its main problem is that it doesn't go nearly far enough, having been written too early to contemplate issues like DRM, IoT, the commercialization of the internet, spam, and centralized online identity providers.
- twowatches 5y agoMate, don't point it out! Just enjoy how nice it is being able to be a "professional" without having to be a professional and regulated all the time. Imagine in ten years if they brought in a bunch of tests you had to do to get a programmers license - I'd honestly probably just change career, and in the end we'd just end up with a further shortage of programmers. I use basically nothing of what I learned at uni to do my job. Everyone knows that the best devs usually didn't have any formal education. It's all based on merit - let's just keep it that way as it seems to work fine. As a counter example - I'm currently living in Germany and I need a guy to fix up the walls of my house. Problem is it's impossible to find anyone to do it because there's not enough qualified craftsmen in the country. Everything is so tightly regulated that nothing gets done anymore, so instead there's a move towards folk trying to do it for themselves and buying materials from non-regulated big American-style hardware stores. Wouldn't life be better if we all had a broader skill set and were able to hack things together ourselves in an unofficial capacity like programmers do?
- ChuckNorris89 5y ago>Imagine in ten years if they brought in a bunch of tests you had to do to get a programmers license - You mean like leet code, white bording and take home tests? Except that instead of being standardized/credentialized, every company has a different variation you need to study or do unpaid work, for every interview. Yeah, good thing we don't have that kind of testing, this is so much better./s
- Apocryphon 5y agoIf only interviews focused on rigorous optimization knew how to optimize the process by having applicants pass part of it once, caching the result!
- wolpoli 5y ago> You mean like leet code, white bording and take home tests? Except that instead of being standardized/credentialized, every company has a different variation you need to study or do unpaid work, for every interview. We don't test our accounting candidates on advanced accounting theories. We just trust the certification and the experience on their resume. But we ask our developer candidates with take home tests. I wonder why. /s
- bikamonki 5y agoHold on. I think only a handful of geniuses understands the whole stack: from electrons moving in your PC to a hyperlink. Even they are really only good (experienced) at one thin slice of that big layered cake. Most in this trade work on a layer near the top (closer to the end-user) coding just a bit of logic and gluing together building blocks in order to provide a solution to real needs. The trade seems trivial because the hard work (millions of lines of code) is already done. And that right there is the brilliance of the whole thing: take any layer apart and it will be done of smaller pieces which have been debugged to the point of being practically flawless (yes, we still find bugs in code that is out there for years, but that is the exception not the rule). On the other hand, if you want accountability and guaranteed results, you have them already: formal software development processes used by the likes of NASA or the military.
- joshe 5y agoOdd to put this forward for a profession that pays 150 - 500K with a 1-4 years training. And software one of the fastest growing and most innovative parts of the economy. Breaking that seems bad, right? It would be quite a bit better if most other industries eliminated licensing. Because they become grab bags for random political whims that have nothing to do with ability to do the job: https://www.nelp.org/publication/unlicensed-untapped-removing-barriers-state-occupational-licenses/ https://www.nelp.org/publication/unlicensed-untapped-removin... https://www.cato.org/policy-report/september/october-2018/tangled-mess-occupational-licensing https://www.cato.org/policy-report/september/october-2018/ta... Because they force workers to do hundreds of hours of unnecessary and expensive training: https://nsjonline.com/article/2021/10/instructors-salon-owners-fight-for-occupational-licensing-reform/ https://nsjonline.com/article/2021/10/instructors-salon-owne... Most of all we don't have any examples of nimble adaptable licensing, software development would not be some magical exception. For low innovation professions, where the knowledge doesn't change much over 20 years, licensing is bad. For a high innovation profession it would be crippling. What if when switching from Java to Python to Javascript you had to do 400 hours of training and sit for 2 days of tests each time? What if each of those transitions had taken industry an extra year to make because of excess oddball training requirements? What if certain members of your team couldn't "get up to speed" by being mentored on some system, but first had to be licensed before they could commit any code at all? Far better for other occupations to copy our very successful one. And as life advice, avoid any profession that does require licensing, it is usually a bad deal.
- fauigerzigerk 5y agoI don’t think there is any indication that licensing requirements developers would improve software quality. There are countries and industries (banking) where a far greater share of job adverts ask for a degree. They make some of the shoddiest software I have ever seen. Most quality issues are down to economic constraints and priorities. It’s not hard to hire cheap degree qualified devs and set the deadlines so tightly that only garbage can ever come out of it. Most terrible software I have seen is terrible because no one cares to make it better. Let’s not forget that historically a lot of licensing restrictions had more to do with protectionism and gatekeeping than with quality. Most countries have a long list of absolutely laughable restrictions that are justified by ridiculous claims about quality control. I think where quality is an absolute requirement, it’s the software itself that should be inspected and licensed, not the developers. After all, users rely on software, not on degrees.
- Fr3dd1 5y agoAlthough a little bit polemic I like the article. I wrote a comment a few days ago that kind of hit the same note. Almost all developers I know can make things work. They get the job done and thats fine. Like some people here wrote, for many applications thats enough. But already one "level" higher, density gets way lower. I only have my subjective feelings but as far as I can tell, developers who not only get things done but have a okayish code quality and an acceptable test coverage are so much more rare. True software master craftsman are almost not existing. I guess our view of the software industry here is a bit distorted. Naturally people who are active here (or on other sites) dont represent the big mass of software developers. The top people in our software industry can keep it up with the top people of other industries (at least I hope and think so) but the entry and average level is not on the same level as the entry or average level in other industries. Thats where good and structured qualification paths can help.
- thatjoeoverthr 5y agoWe have no idea how to even hire people. Think of all the tests, schemes and exercises we come up with and argue about in the context of hiring. Now imagine some busybody picks one and mandates it, legally, across the entire industry. What a nuisance. Shoo!
- throwawayffffas 5y agoI see a lot of flaws in this article. He claims that open source software trivializes our profession ignoring the fact that most of the time the open source as is software is the best there is. He talks about all these examples of software falling boeings, financial firms, lunar landers which by the way are all not open source. Additionally the boeing case was not even a software failure, if I recall correctly one of the sensors would physically get stuck in a wrong position, you know the kind of physical system designed by licensed engineers. Then he proceeds to list a number of perceived problems in the software industry, failing to see that they also exist in other industries, these are not symptoms of lack of professionalism they are the reality of profit seeking taken to the extreme. Liability is a thing, we don't need licensing because we are liable for the code we sell and the services we provide. Licensing does not fix any of these problems all of the bridges that have fallen, all of the planes that have crashed have been built by licensed engineers, the solution in engineering has been regulations.
- deleted 5y ago[deleted]
- hdkesting 5y agoIt's not software engineering that needs licensing, but their managers. They need to listen to their engineers when they say that refactoring is needed, instead of "this cost money now and doesn't earn me more money now, so request declined". Yes, "shipping is a feature", but "it compiles" is not enough to just "ship it": you need to spend serious time to test it. I'm sure you all can come up with more examples
- rich_sasha 5y agoOther fields effectively also rely on unpaid volunteers. Anything driven by academic research, say medical sciences, overwhelmingly relies on unpaid volunteer peer reviewers. Also the academics producing said papers in the first place... not unpaid (hmm) but also often not really qualified or outright fraudulent. Still, it’s scary that to wield a pneumatic drill you need a license, but to suck in my personal data and store it on an unsecured S3 bucket you need absolutely nothing. To sign off a building you need a qualified surveyor, but medical records storage isn’t audited. Etc etc
- zivkovicp 5y agoIt seems that most people miss the point. The software we create is a direct reflection of the problem that is being solved. If you are hired by a small 3 person startup company to help them build an MVP on a budget for an untested business model, then you _should_ expect garbage, because that is precisely what is being asked/paid for. Writing systems software for flight controls or similar use case where loss of life might occur? Well then you are _still_ being persuaded by a project manager and senior leadership to find a balance between cost and quality... but since lawsuits get more expensive when lives are lost, you have more quality control (yes, ethics should be more important than money, but that is not the case). The _business_ makes the bulk of the decision on quality and safety, NOT the person in front of the keyboard. In most cases (web, e-commerce, SaaS, games, etc.), there is more business value to be had from releasing buggy garbage _fast_ rather than thoughtful and well tested features. You can always roll out a fix next sprint. Our profession _is_ full of immature practitioners, and it has a long way to go if we are going to fix this, but there are powerful market forces at play currently and for the vast majority of us it makes more sense to _swim with the current_ and extract as much value from your career as possible... and if we can be spoiled brats that demand more vacation and free food/drinks, why not? It's difficult to say which is better, 20 years ago we were more professional, but today we have a lot more leverage. I miss the professional attitudes and behaviour, but I've gotten used to the outsized compensation and easy job market, and in all honesty, wouldn't turn back. ¯\_ (ツ)_/¯
- jaclaz 5y agoOnce said that (IMHO) regulation is not a solution to poor software, something must be done. Software (at least business tools) tend to be monetized/sold (at a high price) by corporations (that employ programmers that write these programs, and are well paid) as tools to actually do something. When the something is not delivered (or it is not delivered correctly) there are consequences (time lost, money lost) for the customer/client that bought the tool (or subscribed to a service), as the tool is needed (or only useful) for the "main" activity of the client. Yet - usually - neither the corporation (that gets the money from the client), nor the programmers (that get the money from the corporation) consider these cases as anything more than "oh, a bug, didn't see/foresee it". In any other more material contract when you don't deliver the goods (or don't deliver them in time, or they are not up to the required standards/quality) you pay a penalty, and after you fail a few deliveries you are likely to go out of the market. Somehow, in the software world, it seems like it is always a "oops, will fix next time".
- sam-s 5y agoWhile I can commiserate with the author's feelings and dispute some of his observations, as others already did, I want to make an orthogonal observation. Software development differs from other engineering disciplines dramatically: a blueprint/spec for a car or a bridge or a building is not in the same ontological category as a car or a bridge or a building: you cannot drive it or live in it. However, a spec for a computer program is a kind of a program. It just requires "a truly smart compiler" (an SDE). This conceptual connection might explain the shape of the learning curve for software vs other engineering disciplines.