1. 42

To me, it seems that this has become necessary. While we may not need a traditional labor union, the people who build software need collective backing in order to defeat harmful/unethical business practices (e.g. non-competes, exploding offers, stack ranking, back channel references) and establish for ourselves the credibility and strength that we deserve.

We’re decently well-paid during venture-funded bubbles (1996-2000, 2011-2017ish) but abandoned as soon as the economy goes soft. In addition, even when we are well paid, we are not respected. We’ve let our industry be flooded with open-plan commodity programmers, we’ve been humiliated with insulting micromanagement frameworks like “Scrum”, and we’ve accepted a sexist, classist, and ageist exclusionary culture deliberately intended to divide us and prevent collective organization. The age discrimination is especially cruel when one considers that it takes at least 10 years of experience to get good at what we do.

How do we solve this? It’s obvious that we need professional structures to define who is and is not a programmer. We can’t be competing for jobs with 17-year-olds who read half a book on how to build websites and who’ll work for $15 per hour. That’s a losing proposition. There is always someone who will suffer more. We need strong professional bodies that protect our credibility, collectively and as individuals. Finally, we need collective negotiation of terms that are embarrassing for individuals to broach with employers: accommodation of disabilities (a major issue in the open-plan world) and the abolition of non-competes and the right of every programmer to have an independent advocate present during performance appraisals and, in the rare and unfortunate case when it becomes necessary, all interactions with management (at the employee’s discretion).

To me, the most compelling model is an exam-based meritocracy like the SOA and CAS (actuarial societies) use. (I’d be supportive of project-based evaluations for people of obvious talent who have learning disabilities that interfere with exam-taking.) This allows us to ensure the credibility of the individual member, by establishing a person as legibly not a commodity-grade non-programming programmer, and therefore prevent the extortions (e.g. threat of negative reference) that leave the individual programmer powerless. It is also a starting point in the direction of mobilizing around our interests, so that we can do useful things with our talents: curing cancer or moving to a post-oil economy, instead of helping rich psychopaths unemploy people. If we get this right, we can actually have ourselves working for the betterment of society, instead of selling our talents to one vapid startup after another.

As far as I can see it, the first step is to design a core curriculum for the exam system, just as the actuaries have done. (There would be no required coursework per se. It would be an exam-based system and people could use whatever resources, whether those be MOOCs or books read on their own time, to learn the material.) It would cover computer science (AI, compilers, OSes, distributed systems, databases, programming languages), software engineering (security, production systems, project management), mathematics (logic, cryptography, theory of computation, statistics). I’d also include courses on EE, physics, economics, design, and most importantly of all, ethics (removing scarcities instead of creating them, what we can and cannot say to non-programmers/outsiders about a colleague’s work performance, how not to be divided when outsiders try to pit us against each other). The ethics training is especially important because I think it’s necessary to deny talent to those who do evil (e.g. employee monitoring software) and to those who work to create scarcity instead of eliminate it.

The three major questions coming to my mind are as follows:

  • What should be on the curriculum? Am I missing something?
  • How do we establish initial credibility? How do we get to a point where employers take them to mean something (especially when some technology employers will be opposed to what we are trying to do)? How do we gain the leverage that will allow us to dictate terms (e.g. no non-competes, employee right to independent advocacy when dealing with management)?
  • How aggressive should be in enforcement? Do we prohibit members to work at companies that employ non-members, like a traditional labor union? (I’m against this, unless it’s absolutely necessary.) Do we reach out to legislators and get laws written on our side, as doctors and lawyers have? (I’m also leaning against this, but I could be convinced otherwise.)

I don’t know the answers to these questions. I do know that if we put our heads in the sand and let our work be commoditized, we’re signing up for a half-century of mediocrity (Scrum) and declining wages and work conditions. It’s become obvious to me that we need some collective organization around our profession. An exam-based meritocracy seems like a great starting point, because right now we don’t even have a good definition of who is and who is not a programmer.

  1.  

  2. [Comment removed by author]

    1. 7

      You can’t justify spending a lot for a professional programmer if companies can have endless quality problems and security failures and still have a huge profit margin.

      This is probably right. In the startup world right now, marketing wins the day. You can have a completely untrustworthy product and still be worth $20 billion.

      Also of note is that we do have a “curriculum,” the SWEBOK. Everyone hates it.

      I looked at it. It looks really pedestrian. I don’t think that “Software requirements” and “Software maintenance” deserve a whole Knowledge Area (or exam or course). I’d like to go the other way: have a genuine economic reward (proof of learning, intelligence, drive) for actually understanding how compilers or OSes or programming languages work. I want to absolutely murder the anti-intellectual Scrum brogrammer culture (if that isn’t already clear, haha).

      1. 7

        SWEBOK makes a bit more sense if you look at who designed it, which is mainly people from aerospace and similar industries, which are already professionalized and willing to buy-in to the idea that software engineering needs a standardized body of knowledge like other areas of engineering do. But they mean something fairly specific by “software engineering”, not just a euphemism for “software done right”, but more like the specific processes used by large engineering organizations to design, produce, and test/verify reliable software.

        I’d disagree with asthasr that everyone hates it. The idea of using it as a certification exam is widely disliked and has not caught on. But as a curriculum guideline, it’s used as at least a rough guideline by respected programs like the BS Software Engineering at Cal Poly. A lot of people in industry, especially outside Silicon Valley, actually like programs like that one more than they like traditional CS programs (which they see as too academic).

        1. 6

          I’d like to go the other way: have a genuine economic reward (proof of learning, intelligence, drive) for actually understanding how compilers or OSes or programming languages work.

          But for the bulk of software jobs, that’s not needed. There’s a huge need for people who can pull data out of a database, update a field or two, and then put it back in. This isn’t really something you need a deep proof of learning, intelligence, or drive for, but it is something that you’d need to cater to if you want to professionalize software engineering.

          It’s also something where software requirements and maintenance lifecycles seem like they’d be fairly important to cover.

          Another way you could approach that is inventing some distinction between kinds of software engineering, vaguely resembling the split between civil engineer and construction worker (although that’s a terrible analogy).

          1. 2

            Another way you could approach that is inventing some distinction between kinds of software engineering, vaguely resembling the split between civil engineer and construction worker (although that’s a terrible analogy).

            The bifurcation approach (software engineer vs. developer) seems to be what a lot of people suggest. That may be the only way to go. In fact, the exams could be useful toward that end. People who don’t want to go the whole way but want to stay in tech would be able to stay, but just not progress to architectural roles.

            Right now, we effectively have a bifurcation: architects and possibly an R&D group who get to do the cool stuff… and then everyone else. The problem is that it’s controlled by corporate managers, who use it toward their own ends.

            1. 3

              The problem is that it’s controlled by corporate managers, who use it toward their own ends.

              That’s a very strange complaint. By definition, this is going to be true as long as people work within corporations with leaders.

              1. 4

                That’s a very strange complaint. By definition, this is going to be true as long as people work within corporations with leaders.

                Managers will create their own credibility tokens, but an employer-independent credibility token that has some genuine meaning can really change the negotiatory environment for top talent. It’s important to have something that the bosses can never take away.

                Right now, the BATNA for the employee is to change jobs and risk falling into the Scrum mines. Even if you’re really good at what you do, there’s a nonzero risk with each job change that you’ll end up on the wrong side of the “bifurcation”.

        2. 4

          I could imagine a system where companies which wind-up egregiously losing customer data would have the “corporate veil” lifted if they didn’t have “professional procedures” in place (ie, shareholders become liable for damages, etc).

          This would have give an incentive for companies to put defined procedures in place. IE, companies would want to have procedures in place which they could use to convince a judge they weren’t being irresponsible if they did wind-up screwing up customers data. Rather than imposing a particular professional regime, give the companies an incentive to come up with one. Just an idea.

        3. 14

          Glad to see michaelochurch continuing this conversation!

          I’ll stay away (for the moment) on commenting about the culture and current business model, because that’s a lot to unpack.

          Instead, let me make some observations about the state of things. Feel free to correct me here or add things I’ve missed.

          Observations about the profession

          • There is currently no meaningful licensing or certification for software engineering and development.
          • There are a large number of professional certificates (from the usual suspects, for the usual reasons) for various individual techniques and technologies. Some are probably useful (RHCE, CCIE, etc.) and some are likely cash-grabs (<insert Agile cert of month here>). All are commercial.
          • There is basically no barrier to entry beyond basic technical literacy and access. Computers are cheap, and the web is a great resource for teaching oneself things. This was once not the case.
          • The addition of a bad engineer to a project, or even a misguided good engineer, can completely destroy a timetable or the long-term viability of a project.
          • There is no clear description of the different areas of the profession, least of all because of commercial influence/recruiters diluting and abusing titles.

          Observations about the problem-space

          • Software is the one sector where, once we create a solution, it may well never need to be solved again. Distribution and duplication costs are zero.
          • As a corollary to above, the only way to ensure continued payment is to prevent users from having their own copy of things. This presents perverse incentives from a maintenance and customer standpoint.
          • A gigantic amount of software work is customization and bespoke work. Even in cases where the tools are well-known (like Wordpress) we end up doing integration work.
          • Software correctness is not always possible, and in many cases is simply not worth the cost. “Let it fail” is an acceptable answer if 5% of your customers lose all their data occasionally but still pay for licenses.

          Observations about the customers

          • Software users and software consumers are not necessarily the same people. In fact, commissioned products usually are for users that have little say in the final product–only recently does this appear to be changing.
          • Software customers typically have no idea about the maintenance aspects of a software project or system, and so are hesitant to budget properly.
          • For modern software companies and startups, maintenance and correctness are tertiary concerns to shipping a product and showing traction.
          • Most customers really don’t need a complicated bespoke system; at the same time, we haven’t developed a taxonomy for naming common stuff they do need.

          ~

          There’s a rough incomplete cut. I’d love more feedback.

          1. 2

            The addition of a bad engineer to a project, or even a misguided good engineer, can completely destroy a timetable or the long-term viability of a project.

            I’m not convinced. I mean they can certainly ruin the code quality and make every feature take 3x as long, but it’s hard to connect that up with commercial success/failure of the project.

            Most customers really don’t need a complicated bespoke system; at the same time, we haven’t developed a taxonomy for naming common stuff they do need.

            A lot of the time you end up with turing-complete configuration. There are people with real full-time jobs (that generate a lot of real value for people) as Drupal configuration consultants. The nature of software is almost (and in the future will be, I suggest) that as soon as you can clearly specify what you need, you have it. It’s figuring out the specification where the work is.

            1. 1

              I’m not convinced. I mean they can certainly ruin the code quality and make every feature take 3x as long, but it’s hard to connect that up with commercial success/failure of the project.

              Another question I have is whether bad engineers can have such a strong impact because they’re just so bad, or whether management is actually to blame. I’ve certainly seen bad engineers cancel out the work of 2-4 good ones, but that’s usually because of fragility that come from understaffing, managerial overpromising, and unreasonable deadlines. It’s possible that if these companies were better run, they’d be more able to absorb the impact of a negative-impact engineer (and, in some cases, turn him into a good one).

              Moreover, often when a bad engineer seems to tank a project, there were critical failures of management along the way. If a single bad programmer can kill a project, that’s management’s fault as well as the programmer’s.

              In practice, Scrum seems to be designed to mitigate the effect of bad engineers, but it defines “bad” in the wrong way (it punishes people who don’t play ball with the system and its insulting performance monitoring, who often aren’t the problem employees) and it imposes unacceptable limitations on good engineers.

              1. 4

                Would you stop it with the anti-Scrum FUD? Your generalizations are completely out of line with my experience, so either I’m misunderstanding what you’re claiming the issues are (in which case you need to be more specific) or you’re defining “Scrum” very differently from the usual meaning of the word.

                1. 2

                  I wrote a takedown of Agile/Scrum here. Please read it and let me know if you disagree.

                  1. 5

                    I’ve read it and I disagree. I find business-driven prioritization works better; I find it a lot more satisfying to work on a feature that a client really wanted than a cool bit of engineering that no-one actually wants to use. I think this distinction between short-term and long-term value simply isn’t there: good long-term engineering is good short-term engineering done repeatedly; some good things may require taking risks, but doing something in a riskier way doesn’t make it better. If you’re worried about the effect on your career, remember that the overwhelming majority of large software projects fail; “spent two years working on a new system that was then cancelled” is a much worse place to be in than “spent two years incrementally maintaining/improving a working system”. More generally, if someone’s hiring criterion looking at my past work is anything other than how much business value I added, more fool them, and I’m happy for a business person to judge which work will provide more business value - that’s literally their job, if I were better at business judgement than them then I wouldn’t be working with them at all, I’d be running my own business. I think your last two points are just nonsense.

                    1. 3

                      I find business-driven prioritization works better; I find it a lot more satisfying to work on a feature that a client really wanted than a cool bit of engineering that no-one actually wants to use.

                      I think that you need both. You need the people who want to become executives and have some technical/mathematical literacy (e.g. the BAs) to handle the client needs, and you want the hard-core engineers to be able to work on problems they find intellectually fulfilling. You can’t have just an engine and you can’t have just a body; you need the whole vehicle. Business-driven engineering is based on the principle of making a car but forgetting to put in an engine.

                      If you’re worried about the effect on your career, remember that the overwhelming majority of large software projects fail; “spent two years working on a new system that was then cancelled” is a much worse place to be in than “spent two years incrementally maintaining/improving a working system”.

                      I disagree. Maintenance projects on your CV mean that you were low-status. Green-field projects mean that you were actually trusted.

                      Also, the political externalities you can flat-out lie about. As long as you actually did the work, you can tweak things (the project wasn’t cancelled, it was well-received and made a boatload of money). It’s not even unethical, because you’re lying about things that, while they influence how you are perceived, have little-or-no correlation with your personal merits and are out of your control.

                      On the other hand, if you don’t know anything because you never learned anything, that’s a lot harder to cover up (and, I would argue, it’s actually unethical to do so).

                      1. 3

                        Maintenance projects on your CV mean that you were low-status.

                        This statement implies (to me) that you find maintenance work simple, which I disagree with. Adapting an existing system to new requirements while it is operating is much harder than building something new, where you can often define the constraints yourself.

                        I have done both greenfield development and maintenance development, and I’m proud of achievements in both. I probably learnt most doing maintenance though: there’s so many opportunities to learn by example of what not to do when working with existing code bases.

                        I probably would not have been as successful at the greenfield work if I didn’t cut my teeth at maintenance.

                        Perhaps I’ll start calling myself a “full cycle” developer. I can start projects, and put them out of their misery when they’ve served their purpose, and everything in between.

                        I think doing both maintenance and greenfield makes me a better developer. “Those who don’t study history are doomed to repeat it” after all. Doing maintenance on a successful, if gnarly, code base surely qualifies as history in this case?

                        1. 3

                          I agree with you. The issue is that maintenance achievements rely on your word, because you have to trust management (and, at a company like Google, promotion committees) to believe that things were as hard as you’ve said they are, while greenfield accomplishments are demonstrable. Maintenance also has the problem of vested interests; the people who built the original system want the official story to be that the assets they created are in better shape than they actually were.

                          I tend to think that closed-source maintenance is a dead end for most occasions. Unless there’s a huge career benefit in slaying the dragon, credible people won’t work on legacy projects. The core of the company? Sure, people will work on that. No one wants to work on that legacy module that only a few people care about, that’s being preserved for largely political reasons. In the open-source world, it’s different; there’s a lot of credibility that comes from being a maintainer of an important project.

                          Everything you’re saying about the value of the maintenance experience makes sense, though. It’s not often rewarded, but it is important.

                        2. 4

                          I think that you need both. You need the people who want to become executives and have some technical/mathematical literacy (e.g. the BAs) to handle the client needs, and you want the hard-core engineers to be able to work on problems they find intellectually fulfilling. You can’t have just an engine and you can’t have just a body; you need the whole vehicle. Business-driven engineering is based on the principle of making a car but forgetting to put in an engine.

                          Your analogy makes no sense.

                          I disagree. Maintenance projects on your CV mean that you were low-status. Green-field projects mean that you were actually trusted.

                          Maybe to some employers. More fool them if so. Again, not behaviour we should be enabling.

                          Also, the political externalities you can flat-out lie about. As long as you actually did the work, you can tweak things (the project wasn’t cancelled, it was well-received and made a boatload of money). It’s not even unethical, because you’re lying about things that, while they influence how you are perceived, have little-or-no correlation with your personal merits and are out of your control.

                          Bollocks. No amount of sophistry makes lying ok.

                          On the other hand, if you don’t know anything because you never learned anything, that’s a lot harder to cover up (and, I would argue, it’s actually unethical to do so).

                          I’ve learned a lot more from maintenance projects than green-field ones. You can rule out bad ideas a lot more quickly when you start with working software and enforce that it continues to work.

            2. 30

              Pass.

              I’ll have no part in a union. We don’t need some sort of “programmers club” telling us who is and who isn’t blessed and allowed to write code. We can’t even agree on how to format code. Worse than that, we’re still storing code in flat ASCII files, because we refuse to agree on any other tools and nobody wants to learn a new set of keyboard shortcuts for moving text around on the screen.

              What we need is for there to be consequences when your bank gets hacked. If the companies who are selling services and software actually have to provide said service and software or directors start going to jail, then they’ll stop rushing out half-assed insecure software, and they’ll stop jumping from fad methodology to fad methodology trying to turn us into replaceable cogs churning out broken features nobody really wanted.

              1. 5

                So I’ll leave the first part of your comment to others; there seems to be plenty of conversation around this. I will say, having seen the impact of unions, your characterization of them as a “club” is a bit reductive; unions have had a major impact in improving working conditions for everyone.

                What we need is for there to be consequences when your bank gets hacked. If the companies who are selling services and software actually have to provide said service and software or directors start going to jail, then they’ll stop rushing out half-assed insecure software, and they’ll stop jumping from fad methodology to fad methodology trying to turn us into replaceable cogs churning out broken features nobody really wanted.

                I like the concept of accountability and consequences; they’re both necessary to solve the problem. But you seem to claim they are sufficient - which seems completely inaccurate.

                Most programmers don’t work at banks, or on life / health / safety critical software. If I am a developer that works on PLCs controlling the cooling systems at a nuclear power plant, I and the software I produce must be held to exceedingly high standards. If I work on software that tracks PII, my standards must also be very high.

                But I don’t, and my guess is that the majority of programmers don’t either. If I push out half-assed software, a small part of a small part of my business experiences, at worse, a minor outage. What consequences exist there?

                While “ratchet up the consequences!” may definitely work for a small subset of programmers, I’m not at all convinced it’ll have any meaningful impact on the rest of us.

                1. 4

                  I agree with you. I think that unions have an undeserved bad rep in this country. They’ve done a lot of good, and while bad unions exist, the principle behind them (that workers deserve a say in how their companies are managed) is solid.

                  You’re also right, I think, that increasing the personal consequences (i.e. throwing executives in jail) for software fuck-ups isn’t going to magically improve the problem. Shit rolls downhill. Make life more stressful for the bosses, and things are more likely to get worse for the peons rather than better. After all, the definition of a manager is someone with the authority to take his problem and make it someone else’s problem too.

                2. 2

                  This. I wanted to say the same thing but couldn’t think of the words to explain it. Thanks @sophistifunk :)

                3. 11

                  I’m against it. I’m theoretically in favor of exploring novel forms of organized labor as they might apply to the tech industry, but this option is neither possible nor desirable.

                  It’s not possible because there is no amount of education or credentialing which even moves the needle as far as incidence and severity of critical bugs. Cultural factors do, but not cultural factors of front-line programmers; the culture of the management above them. This proposal doesn’t give the new organization a means to effectively push back and alter that culture. (I’m also a little skeptical that such an adversarial relationship is the right approach, but I’m trying to be open to all options.)

                  Take the construction industry as an example: When a union member is told by a building owner to do something irresponsible, the union has the ability to escalate that concern while protecting that member, because the union can prevent the owners from finding any other source of labor. They didn’t get to that position by promising more value to the owners, and no approach premised on that could possibly work. They got to that position through collective bargaining, forcing building owners and development companies to play by the union’s rules.

                  Since this proposal is purely about offering a credential, it does nothing to change how such negotiations work.

                  Separately, this approach is not desirable because gatekeeping about who gets to be a real programmer disproportionately hurts the people who this industry should be trying hardest to include. It also doesn’t get any improvement in software reliability by doing that, though certainly respectability politics - “anyone who doesn’t meet these arbitrary criteria, you can treat however you want” - is a tried and true approach that would very likely help with the “credibility” axis. I don’t think that’s an acceptable strategy.

                  1. 8

                    That’s a good point to bring up, the distinction between unions and professional societies. Some organizations serve both roles, but they don’t necessarily overlap, and often have different goals. For one thing, professional societies tend to be more effective if they represent a fairly limited group of workers, especially a high-skill stratum that can form a kind of guild, while unions are most effective when they represent a broad set of workers, so they can negotiate common base conditions applying to everyone (to generalize a bit).

                    I’ve only been a member of an engineer’s union in Europe, since the U.S. seems somewhat allergic to social-democratic institutions. But I was happy with it there, and it didn’t serve any kind of a gatekeeper or certification role, just an advocacy role mainly focused on working conditions. Instead of my employment contract being written solely by management and then presented to me to sign, the standard employment contract terms in that case were negotiated between the union and management, and the union was therefore able to keep particularly bad terms out of it. They also provided advice about what my rights and options were, and after I started, there were several joint employee/management committees that vetted most significant changes in working conditions, to make sure everything was run in a generally transparent, consensual manner. All that led to a better working environment in my opinion.

                    1. 3

                      I’ve only been a member of an engineer’s union in Europe, since the U.S. seems somewhat allergic to social-democratic institutions. But I was happy with it there, and it didn’t serve any kind of a gatekeeper or certification role, just an advocacy role mainly focused on working conditions. Instead of my employment contract being written solely by management and then presented to me to sign, the standard employment contract terms in that case were negotiated between the union and management, and the union was therefore able to keep particularly bad terms out of it.

                      This is the sort of thing that I often have to bring up. Not all unions are bad. Nor do unions impose the uniformity of compensation that engineers fear. Professional athletes and actors and screenwriters have unions and nothing prevents the top performers from making millions of dollars.

                      Imagine, for example, if employees had the right to have an independent advocate with them during all interactions with management (e.g. performance appraisal, promotion and demotion decisions, termination and severance). Many wouldn’t need or want to use it, because not all managers are bad (obviously) but it’d be nice to have the protection, in case one ever needs it. That would be huge, and it wouldn’t make our jobs worse in any way.

                    2. 4

                      It’s not possible because there is no amount of education or credentialing which even moves the needle as far as incidence and severity of critical bugs. Cultural factors do, but not cultural factors of front-line programmers; the culture of the management above them. This proposal doesn’t give the new organization a means to effectively push back and alter that culture.

                      This is a fair point. The credential only achieves the first step, which is to provide a basic credibility for people in the profession. That makes moral autonomy possible but doesn’t guarantee it.

                      I certainly don’t think that an exam system and a professional society are all that it takes to solve the problem of bad code and irresponsible development practices. I think they provide a foundation. It’s up to us, then, to go further. Once we have that baseline credibility, I would hope that we use it for good.

                      Since this proposal is purely about offering a credential, it does nothing to change how such negotiations work.

                      Well, that would be a starting point, but not everything that I’d want to accomplish. The credential provides enough professional credibility that the negotiations can start without individuals getting steamrolled.

                      Separately, this approach is not desirable because gatekeeping about who gets to be a real programmer disproportionately hurts the people who this industry should be trying hardest to include.

                      It would be a blind graded exam. That’s not a perfect approach (not everyone has the same amount of time to study) but it’s the best that I can come up with. As a replacement for ad-hoc coding tests and brainteaser interviews (which might still exist, but would be less necessary with a pre-filter) I think that it’s an improvement.

                      I agree absolutely that this industry should be trying a lot harder to include women, minorities, career-switchers, and people with non-traditional backgrounds. Here’s the thing: the culture of Scrum and open-plan offices and “cultural fit” does a lot more to exclude such people (and, moreover, just wastes more time and energy) than a series of exams would. If we can fix the culture, we can actually make the industry more inclusive.

                      For example, a lot of people hate the SAT. Sure, there are things about it that are stupid. But are college admissions more inclusive and fair in a world with the SAT than they would be in a world without it? Absolutely.

                      1. 5

                        I’m having trouble explaining why I find this an unsatisfying response - sorry about that.

                        I don’t think a professional society is the right foundation here. I don’t know what is, and it is something I do put thought into.

                        1. 4

                          Well, I’d love to hear your ideas. I’m glad that you’re in the conversation. I agree that an exam system, on its own, doesn’t do nearly enough. I see it as being a starting point, but I also recognize the problems that you’ve noted. This is worth doing in my mind, but that means that it’s worth doing right, that requires listening to people who disagree with the idea in its first iterations.

                          Ideally, the exams should create an objective (or, at least, employer-independent) proof of expertise and work, and generate a mentoring culture. My goal isn’t to keep people out who want to put in the work. It’s to keep out the people who don’t love programming, math, technology, or CS, and who don’t have the curiosity necessary to get any good, but who are just in it because they think they’re going to get rich. Those are the people around whom the toxic open-plan Scrum culture was created: the douchebags who are just here for the easy money that they’ve heard about.

                          I’ve said elsewhere that I also really want a project-based alternative to exist. I’m a good test taker, but I know that “bad test taker” is a real thing. Having a disability myself, I’m sensitive to the needs of others who have it. My goal, here as well as generally in life, is to provide for people multiple paths to success. The exams can be the main pathway, but people who are hard working and just don’t handle timed tests well can submit projects for evaluation.

                          If anything, those two paths support each other. Let’s say that 90% of the people (the ones who don’t have a problem with written tests) demonstrate knowledge in written exams, and the other 10% demonstrate it through oral exams or projects, then the people in that 10% get affirmation that they’re as good as the 90% who took the easier route (the exams).

                          I should mention that this system assumes that there’s no penalty for failure. You can take the exams as often as you want, and failures are reported only to the exam-taker.

                          1. 2
                            Those are the people around whom the toxic open-plan Scrum culture was created: 
                            the douchebags who are just here for the easy money that they’ve heard about.
                            

                            This statement befuddles me. Scrum wasn’t created for those people. It was created to protect people like me from constantly shifting goalposts. The market and explosion of process that grew up around it is just the natural result of any popularized process. Something, in point of fact, that would also occur around your proposed exam system. An entire marketplace of slightly scammy, books and learn how to game the exam tutoring by companies taking advantage of people would spring up around it precisely to service those same people who just want in for the easy money. Your exam won’t keep them out because the qualities you want to screen for are among some of the hardest to actually test for. Any exam system will be easily gamable by those same people.

                            The best way to screen for it is actually code on github.com or bitbucket.com and time spent in industry and the reputation gained thereby.

                            1. 1

                              An entire marketplace of slightly scammy, books and learn how to game the exam tutoring by companies taking advantage of people would spring up around it precisely to service those same people who just want in for the easy money.

                              I don’t think that the actuarial sciences has this problem.

                              Your exam won’t keep them out because the qualities you want to screen for are among some of the hardest to actually test for.

                              So, there’ll be more than one exam. It’ll be a track of 10 or more. If you’re talking about technical exams, I disagree. You can certainly test for technical knowledge.

                              If you’re talking about the ethics exam, then its purpose is different. Obviously, the bad actors can lie on an ethics exam. The goal of ethical education isn’t to block bad actors by telling them not to be bad(that’s impossible). Its practical purpose is to help the good actors galvanize. It can’t prevent the bad actor from criticizing other professionals' work performance in front of non-technical outsiders, but it can create a climate where the good actors recognize that pattern and say, “That’s unethical”, and then do something about it.

                              1. 1
                                If you’re talking about technical exams, I disagree. You can certainly test for technical knowledge.
                                

                                Except that your goals require more than just testing for technical knowledge. You need to to test for abstract thinking and the ability to reason. Something that is notoriosly hard to test for. If you just test for technical knowledge you might as well just use one of the current certifications.

                    3. 14

                      I support the right of individuals to organize and do collective negotiation, bargaining, etc., but I completely oppose any kind of regulation or restriction of labor that involves the backing of government force/violence.

                      If I can’t provide more value than a guy who read half a book and now claims to know how to “build websites”, then I need to change careers anyway.

                      1. 8

                        If I can’t provide more value than a guy who read half a book and now claims to know how to “build websites”, then I need to change careers anyway.

                        Obviously, you can. The question is: can you out-compete him in a world where most of us work for people who have no ability to evaluate the quality of the work?

                        There’s a medical profession because most patients have no idea how the human body works. Doctors tend to get sued or not sued based on whether their patients like them, more than their expertise. Without a profession existing, the field would be full of quacks, because as a patient, most of us have no idea if our doctors know what they’re doing. Software is much the same. We do a job for people who are incapable of evaluating our work. Historically, that has worked against our advantage (politics, accrual of power to “scrum master” types who claim to be able to tame the beast) but we could change that.

                        This industry has salesmen with no qualifications inventing hare-brained methodologies (“Agile Scrum”) and making millions of dollars while ruining tech companies. This field is full of charlatans, and we need to find a way to drive them out.

                        1. 9

                          This field is full of charlatans, and we need to find a way to drive them out.

                          Fair enough. I’m not opposed to trying to get rid of outright charlatans; although we might differ in terms of who we consider to be charlatans. Having a real “profession” of software engineers would be fine, but, again, I won’t support anything that is government mandated. I’m also not a fan of arbitrary restrictions to entry to a field. Software development might not be the pure meritocracy that some claim, but I believe it is more meritocratic than many (most?) fields, and I’d hate to lose that. The poor kid growing up in rural, southeast NC, who taught himself to code from Herbert Schildt’s Teach Yourself C and who doesn’t have a college degree, should still be able to program if he has the chops to do it. Otherwise, we’re penalizing the poor.

                          1. 5

                            The poor kid growing up in rural, southeast NC, who taught himself to code from Herbert Schildt’s Teach Yourself C and who doesn’t have a college degree, should still be able to program if he has the chops to do it.

                            Absolutely. That’s why I want an exam system rather than mandatory educational degrees (which I’m adamantly against).

                            1. 5

                              An exam does not prove anything other than the fact that person who took it gained a particular mark.

                              Exam systems are part of the problem in my view of the current educational system. Where are the double blind trials to prove that an exam actually works?

                              1. 2

                                Excluding cheating, you can design an exam that verifies that a person has attained some body of knowledge. You can make false positives uncommon enough that unqualified people don’t progress in the career (unless they cheat).

                                Now, there’s the problem of false negatives: people who have the knowledge and deserve credit, but who don’t test well. That’s not common but it definitely exists. And this is something I take very seriously. (Although I’m great at tests, I’m sympathetic to people with disabilities because I have one myself.) I’d really want a project-based alternative to exist: if you can submit a software project that shows that you’ve mastered the field, you get full credit. It might be more expensive than the written exam, but I want it to be available.

                                1. 5

                                  Excluding cheating, you can design an exam that verifies that a person has attained some body of knowledge. You can make false positives uncommon enough that unqualified people don’t progress in the career (unless they cheat).

                                  Citation needed. Talk to e.g. the Stockfighter guy, or just anyone who has metrics for how effective people have been within a company. See if you can find any example of an exam that have a significant correlation with effectiveness in the position, in the software industry or even outside it.

                                  1. 1

                                    See if you can find any example of an exam that have a significant correlation with effectiveness in the position, in the software industry or even outside it.

                                    I agree that this is worth looking into, but this is a tall order, because the current configuration of the software industry is such that value and effectiveness don’t always correlate. I’ve been in companies where high-value people get to contribute a lot, and I’ve been in others where they’re sabotaged. Social factors (namely, the cultural and organizational failures that I’d like to put an end to) make it hard to get a clear read, if that makes any sense.

                                    1. 3

                                      If your definition of “value” does not translate into effectiveness, how can you possibly expect organizations to be willing to pay extra for it?

                                      1. 2

                                        If you’re willing to work with government, you can leave them without a choice.

                                        Of course, our industry is full of people who grew up after 1980, have only been exposed to aggressively pro-business politics even on the supposed left, and have accepted the “government is bad” ideology wholesale. (I consider myself moderately pro-business, but I reject the claim that government is usually bad.)

                                        More seriously, though, I think that there are lot of progressive businesspeople out there who understand that competent delivery is worth money. I mean, someone is getting those $300/hour consulting contracts that exist when getting the job done right is more important than getting it done cheaply. Those jobs might not be common, but they exist. The problem is that, right now, it’s done based on closed networks and reputations. An exam system could make that market fairer and more efficient.

                                        1. 3

                                          If you’re willing to work with government, you can leave them without a choice.

                                          Well sure, we could create a meaningless certification and then lobby the government to ensure that people with that certification get paid more. But that’s not something I would want to be part of. If I’m going to be arguing I should be paid more based on some qualification, I want that to be because the qualification demonstrates that I’m going to make more money for an employer.

                                          1. 1

                                            Isn’t his argument that the certification wouldn’t be meaningless? If you accept that premise, then what do you think?

                                            1. 3

                                              Well my original point was that I don’t think anyone’s ever come up with a meaningful exam for software development and I don’t think michaelochurch can just assert that it’s possible to do so.

                                          2. 3

                                            I don’t think that rent-seeking is the answer here.

                                      2. 1

                                        Being effective within a given company is not the same as having attained some body of knowledge.

                          2. 13

                            I believe, that as our society becomes more and more reliant on software, that this is not only desirable but necessary. Especially, when one considers the vast liability for security and private information leaks, steps must be taken to prevent the public from being harmed by naive and inexperienced programmers.

                            Indeed, data is a utility. Just as electricity, natural gas, and water. Folks without licenses are not permitted to just show up and wire a building, inexperienced developers should not be permitted to handle data such as PII or PHI.

                            While I wont address the process for such a license (nobody wants to invert a binary tree in a written test!), I am 100% behind the notion that our future needs to be protected from the nonsense currently going on in the development ecosystem.

                            1. 5

                              I believe, that as our society becomes more and more reliant on software, that this is not only desirable but necessary.

                              Absolutely. Our reputation is for shit (most of society thinks we’re entitled wankbaskets making $250k in San Francisco who hate women, when those people are a tiny minority and most are not even programers) and we’ve let our culture (and that reputation) be defined from above by people who loathe us, divide us at every turn, and see us as a resource to be exploited.

                              Folks without licenses are not permitted to just show up and wire a building, inexperienced developers should not be permitted to handle data such as PII or PHI.

                              Right. I would go further and say that we need a professional code that prevents engineers from working on, say, employee monitoring software. We aim for a state (which we’ll never reach perfectly, but we can do better) where the bad actors just can’t have any talent.

                              While I wont address the process for such a license (nobody wants to invert a binary tree in a written test!)

                              Sure. I agree. Exams are problematic. They’re a good starting point, but one thing I would insist on is to allow project-submission alternatives, especially because I’ve lived long enough to know that, even though I’m a really good test taker, “bad test taker” is a real thing. They’ll probably be more expensive (holistic evaluation takes more time than grading an exam) but they’re important and I don’t think we can call the job done without them.

                            2. 11

                              I really believe the field needs to be split:

                              • software engineers, which would be subject to what you’re saying above
                              • software developers, which would not

                              The engineering side would require more study and work with the payoff being higher status. The developer side would be as programming is today: basically Hacker News.

                              Establishing credibility will take some time. This will be a reflection of how well we treat members, and how members perform in the real world. Building up a strong community will amass credibility, which can lead to leverage. I don’t believe that any sort of enforcement will work; it will be very off-putting to everyone. Billing it as a ‘society’ or something more innocuous for the time being is absolutely necessary. I’d prefer a Trojan Horse approach here.

                              Please continue to elaborate on this.

                              1. 10

                                I think this idea is by far the most realistic and sane – and I think a “society” would be the EXACT right way to go about it. “Society Of Concerned Software Engineers” (SOCSE) or some much more clever name.

                                That said, I think the “professional society” would quickly become a a dirty word filled with ivory tower idealists and people trying to master the ‘correct engineering practices’ in writing APL. Which is valuable for sure, but not what companies look for…

                                The more nimble, faster moving and adaptable “software developers” would just have better survival characteristics. While SOCSE writes a really profound paper on how to do formal verification of COBOL. The “software developers” have learned React 0.15 and shipped 2 apps that are generating revenue.

                                The field is too mushy I think . Remember when goto was good idea? Remember when inheritance focused OO was a great idea? Remember the 17th time everyone rediscovered the power of Lisp. We don’t really know how to do this right – and when something is done really right, we copy it or leverage it – we don’t rebuild it. Physical engineers have to build things over and over again, and these things degrade naturally over time. If we build something great… we can copy it bit perfect an infinite number of times.

                                1. 7

                                  Guild of Accreditation-Tested Software Engineers :)

                                  more seriously, i think that the low entry barrier (“any fool can write code, and many do”, as the old joke goes) is one of the strengths of our profession, and i’d hate to see that go away. i’ve seen way too many instances of companies using a piece of paper as a proxy for hireability.

                                  in theory i’d love to have some sort of solid certification that would capture the skills and experience i’ve gained over the years, but in practice i can see it becoming a requirement for even entry-level jobs (the onus being on the candidate to acquire it, of course) and yet another nail in the coffin of on-the-job training.

                                  1. 3

                                    in practice i can see it becoming a requirement for even entry-level jobs (the onus being on the candidate to acquire it, of course) and yet another nail in the coffin of on-the-job training.

                                    On-the-job training is, unfortunately, dead in the world of disposable companies (startups) and fungible engineers (Scrum). You have to learn on your own: on the clock when you can get away with it, and off the clock continuously.

                                    An exam system like this, at least, streamlines the process and provides proof-of-work. Yes, you have to do some additional and possibly unpaid work to advance your career, but it’s laid out in a sane way how much there will be.

                                    1. 4

                                      i would rather see us as a group push back against the “you have to do additional unpaid work” mentality than streamline it.

                                      1. 2

                                        Most of the good actuarial firms allow and expect you to study for the exams on the clock. The typical all-in workload is 45-50 hours per week, from what I’ve heard, which doesn’t make it different from the other professions.

                                        I don’t mind working more than 40 hours per week, as long as it comes with autonomy and creative control and I’m investing at least half of that time in my career. That’s my stance and I realize that not everyone agrees. What I hate is when the long hours become mandatory or when above-normal efforts get taken for granted.

                                  2. 4

                                    That said, I think the “professional society” would quickly become a a dirty word filled with ivory tower idealists and people trying to master the ‘correct engineering practices’ in writing APL.

                                    I’m not sure that’s a very likely risk, though it’s certainly a possible failure case. Academics tend not to have much influence in other engineering professional organizations. And in CS we do sort of have a professional society, the ACM, tagline “advancing computing as a science & profession”. But I mostly see it as having gone the other direction, at least at the level of its management and organization. They publish some journals which have ivory-tower stuff in them, but the organization itself, especially on its lobbying and public sides, is obsessed with businessy type talk about the innovation economy, delivering value, etc., and has been ineffective at really serving as an organizing point for a profession or professional ethos.

                                    The ACM is never going to be a professional society of the kind @michaelochurch is talking about, but I wonder if it could at least be more usefully oriented towards profession-building than it is now. “A better ACM” is at least a plausible incremental thing that could happen. For example, you could imagine them coming up with, and advocating for, minimum standards for “best practice” employment contracts—no noncompete agreements, reasonable notice of layoffs, some kind of minimum recommendations around overtime and on-call time, that kind of thing. I’m not even talking about anything with teeth or union-like, just ACM saying: here is a recommendation for what kinds of minimum employment terms we think are acceptable in the profession. I don’t know what the likelihood of turning ACM into that kind of organization is.

                                    1. 4

                                      That said, I think the “professional society” would quickly become a a dirty word filled with ivory tower idealists and people trying to master the ‘correct engineering practices’ in writing APL. Which is valuable for sure, but not what companies look for…

                                      I’m not sure. Fellows in the actuarial societies can make $200k and up, and are considered eligible for direct-promote to executive roles (without having to do a stint in humiliating Scrum-master middle management).

                                      Personally, I’ve observed that the stereotype that engineers “don’t want to work with the business” isn’t true. We don’t want to work with the business as subordinates. We’re happy to work on business problems if we have equal status to the people we’re working with. The problem is that the VPs of biz-dev look at us and think we’re several levels below them, because companies have aligned ladders so poorly. (A 5-year-experience engineer should be Director-equivalent; at 10, VP; at 15, C-level. We’re smart and our jobs are harder.) Fix that, and you can get those top engineering minds aligned to all sorts of “not exactly programming” problems.

                                      The more nimble, faster moving and adaptable “software developers” would just have better survival characteristics.

                                      This is one thing that needs to be figured out. We can’t have a static exam/course set. We have to include a continuing education requirement, to verify that the Fellow-level people aren’t resting on their laurels. We also have to absorb the young, talented people, and quickly. If we exclude them for stupid/snobby reasons, then they may outcompete us and we’ll deserve it. Killing off the brogrammer quick-‘n’-shitty culture is desirable; eating the young is not.

                                      1. 2

                                        The ACM looked into professional certification via an official curriculum in the late 90s and wrote a great paper about their rationale for not moving forward - I’m struggling to find it now via Google Scholar, but I believe I saw it here on lobste.rs first - maybe someone can help me out.

                                    2. 2

                                      This kind of already happens in other countries. In Canada, you cannot call yourself an engineer of any kind unless you are licensed as one. MSFT got fined for using the word “engineer” for people who were not licensed.

                                      1. 2

                                        The developer side would be as programming is today: basically Hacker News.

                                        Although I don’t know what to do about it (as in, I don’t think we can easily ban unlicensed development) I am not sure that we can coexist with that peacefully. The open-plan Scrum/HN culture devalues us. However, so long as it exists, I’m afraid that the cheap/shitty alternative will dominate the market.

                                        Here’s why: the market for Scrum programmers exists because most corporate executives know that the consequences of shitty software come years later, and they expected to be promoted away from the messes before things start hurting the business. If shitty engineering started affecting executives' careers right away, there’d be no Scrum drones and no open-plan offices, but because it’s usually 5 years before it actually hurts the business in a macroscopic way, the sociopaths are willing to make the bet that they’ll be a promotion or two away from the mess by the time that this happens.

                                        The thing to keep in mind is that we’re going to be denying jobs to people until they pass a 10-year battery of exams. The first exam gets one in the door, and continued learning keeps one in. The people we’ll be excluding (by them choosing not to keep up with the continuing progress requirements) are the open-plan Scrum brogrammers who learn one set of tools at 22 and stop growing.

                                        Billing it as a ‘society’ or something more innocuous for the time being is absolutely necessary.

                                        I think that this is probably right, especially given the negative reputation that attaches itself, in the U.S., to anything that looks like “a union”. Even though unions are actually quite diverse in structure, the stereotype is that unions lead to mediocre compensation and protect the lazy… which isn’t necessarily true.

                                        Please continue to elaborate on this.

                                        Do you have specific questions? This idea is still forming in my mind, and I’ll admit that there are a lot of questions I have to figure out.

                                        1. 12

                                          This is a bad idea and you’re not going to end up on the side of this that you think you are.

                                          The ABA and AMA do not exist for the benefit of the public.

                                          1. 1

                                            This is a bad idea and you’re not going to end up on the side of this that you think you are.

                                            Why? Please explain.

                                            The ABA and AMA do not exist for the benefit of the public.

                                            They exist for the benefit of the professionals, but I have a hard time believing that this means they are bad for the public. Which would you rather have, an expensive doctor who cures you, or a cheap quack who causes you to die of sepsis?

                                            Sure, the AMA has done some fucked-up (and even, in that particular case, immoral) things in the past. That doesn’t mean that the world would be better without it existing at all.

                                            I won’t argue that there aren’t hard problems along the way to software professionalization. Designing a curriculum is one task I wouldn’t especially relish. However, compared to an open-plan Scrum culture that is going to inflict mediocrity and failure on us for generations, those problems seem more desirable, and also more solvale.

                                            Professionalizing is like lifting weights. There will be painful moments but it will make us stronger. Accepting the anti-intellectual open-plan Scrum culture is walking out in front of a moving freight train. Like weightlifting, it is painful and modifies the body; unlike lifting, the effects are generally considered undesirable.

                                            1. 3

                                              They exist for the benefit of the professionals, but I have a hard time believing that this means they are bad for the public. Which would you rather have, an expensive doctor who cures you, or a cheap quack who causes you to die of sepsis?

                                              That’s one view. The medical profession has been extraordinarily slow to take up evidence-based practices (and more generally does a lot of things because “that’s the way we’ve always done it”, including the routine sleep-deprivation you mention elsewhere), has an excessive respect for individual doctors' “clinical judgement”, an excessively hierarchical structure where input from from people lower down the totem pole is ignored (or especially from non-doctors, e.g. senior nurses), and generally tends to expect patients to adapt to them rather than doing the things that will result in the best outcomes (look at e.g. the handling of 23andme). Even simple things like e.g. hand-washing - many unnecessary deaths are caused by doctors not washing their hands, and the higher up the hierarchy a doctor is, the less likely they are to wash their hands. A less professionalised medicine could easily have resulted in a lot more lives being saved. Of course we can’t compare and contrast, because the AMA has ensured that alternative models don’t exist - you can’t choose to go to a hospital that puts less emphasis on qualifications and has sensible limits on working hours.

                                              1. 1

                                                The AMA is a morally complicated example.

                                                • They’ve definitely done well by doctors. They’ve created the only profession where a middle-class but very smart person can reliably get to the $500,000 per year level.
                                                • Their effect on society is probably a net positive, because they’ve kept out the worst of the quacks, but there’s definitely some negative stuff. For example, this bit of cuntery, brought to you by the AMA in the early ‘60s.
                                                • There still are quite a number of bad doctors, no question. There are also a lot of overworked doctors, and probably cases where good doctors make bad decisions based on a mix of unnecessary stress and their own arrogance. In part, the AMA’s limitation of the number of doctors is to blame for this.

                                                I think that the actuarial sciences are a better point of comparison.

                                                • They’ve done well for themselves. A middle-class person can get to the $150-250k level by mid-career through hard work alone. People who think programmers can reliably make that aren’t paying attention. We have extremely high job volatility due to our industry being run by sociopaths, and salaries will tank when the bubble ends.
                                                • The professional boards do a lot to keep up the integrity of the profession, as well as to create a culture of continued learning.
                                                • Anyone can take the exams. You don’t need to go to school and get a degree. It’s as close to a professional meritocracy as one can get. Sure, there are problems with exams, but I’d rather have those problems than ours, or the moral problems of the AMA.
                                                1. 5

                                                  My impression is that the actuarial profession has ended up very class-dominated - theoretically meritocratic it may be, but in practice it’s much more dominated by those who went to the right schools than the software industry. And the culture is not one of responsible professionalism or standing up to management - those I know make jokes about their ethical handbooks, and seem to have a very casual attitude to errors - much more so than programmers I know. (And I hear plenty of statements like “this is the model we’re required to use but it’s complete nonsense” - it seems like the smart ones know plenty of ways they could improve their work but feel constrained from doing so). I’m not at all convinced that they’re producing good output. I don’t think making the software industry more like the actuarial one would be a positive step.

                                              2. 4

                                                Which would you rather have, an expensive doctor who cures you, or a cheap quack who causes you to die of sepsis?

                                                This is how I know you’re not serious.

                                                1. 4

                                                  How is that not a valid question? If there weren’t a medical profession, the field would be full of quacks and people would die, on a daily basis, from their incompetence.

                                                  1. 1

                                                    as a matter of fact there are many anyway, and people believe whatever charlatan they want. think of anti-vaccine, omeopathy etc etc

                                                    1. 5

                                                      You’ll note that the vast, vast majority of those people are not doctors, the vast majority of doctors are not quacks, the various medical professional associations decry them constantly, and doctors who do engage in quackery are subject to having their license to practice revoked (cf. Andrew Wakefield of “vaccines cause autism” infamy for an extreme example).

                                                      1. 6

                                                        Dr Wakefield was found guilt of serious professional misconduct (see page 55 of the full verdict of GMC panel) and this probably only came about due to investigative journalist Brian Deer who published an expose in 2004.

                                                        Professional bodies are not the panacea that you would expect (ask Dr Harold Shipman’s 218 victims).

                                                        I’m not a fan of using exams to prove competence - as the only competency they prove is that you are good at exams…

                                                        1. 1

                                                          exactly what I meant. somehow I might have lost that in translation. apologies

                                                        2. 1

                                                          Actually, the biggest problem with medicine isn’t that it’s too easy to get in, but that it’s so hard to get in that, while doctor salaries are very high, most physicians are overworked, especially early in their careers.

                                                          A surprising number of people die due to physician fuck-ups but the problem isn’t the low barrier to entry. If anything, the barrier to entry is too high, so you end up with the 36-hour shifts. (Who isn’t a moron after being awake for 36 hours straight?) I went to a solid Midwestern liberal arts college (Carleton) and we had people with 3.6 GPAs who couldn’t get in to med school. Someone with a 3.6 from a top-25 undergrad is smart enough to be a doctor.

                                                          1. 2

                                                            It’s hard to become a doctor because of the professional organization. It is intensely un-meritocratic, or I wouldn’t be able to catch a cab in Toronto or New York driven by a surgeon board-certified overseas. I don’t think that’s the model that anybody should be agitating for, unless your livelihood depends on artificially constraining supply.

                                                            1. 1

                                                              I don’t think that the goal is to “artificially constrain supply”.

                                                              Right now, there’s genuine low supply (not due to artifice, but because the talent and drive are rare) of the real deal but there’s an inferior substitute that can outcompete “the real deal” on image. The industry has been flooded with open-plan Scrum brogrammers who think “heap” and “stack” pertain to group sex rather than memory layout, and they’re fucking things up for those of us who actually know what we’re doing.

                                                              I don’t want to keep out a single person who can do the job. I do want to drive out the charlatans who have killed our professional credibility.

                                                              1. 2

                                                                This is not an easy problem to solve, but I do think that guilds always end up constraining supply, as that’s a hell of a lot easier for everybody than making individual pricing decisions with imperfect information. Yes, the AMA stamp means there’s a (putative) floor for quality, but more important to the AMA, it allows doctors to control the supply of doctors.

                                                                I tend to think that the real solution to the deep badness of the software world will flow backwards from a change in liability regime. That’s an imprecise mechanism, admittedly.

                                                2. 5

                                                  This is a branding problem that will exist no matter what.

                                                  What I advocate for optimizes for survival characteristics. It’s a foot in the door. After all, demanding everyone take an exam to program will kill it really fast. (Can you imagine how many Medium articles would be written?)

                                                  Fact is, it’s a suboptimal strategy, but I think it’s good for the beginning. The society should be able show that it produces better, more reliable code at lower cost to businesses. We should be able to prove, without a doubt, that these are quality engineers. These are good incentives to have for a collective.

                                                  The ideal is to accrue enough influence and power to sway people into thinking that ‘real’ engineers must be members of the society. We’d hire some business-y people who make business-y press releases and business-y-sounding soundbites who talk up the virtues of the society vs the wild west of undisciplined developers.

                                                  1. 2

                                                    I definitely think we’d want to have a good dozen marketers and lawyers on staff at minimum. The leadership of such a group should be from within and perhaps elected democratically with regular intervals and scheduled end dates

                                                3. 1

                                                  The typical startup employee would almost never need to be a Software Engineer by this split. Most are trying to build prototypes that will be rewritten once they are acquired or thrown in the trash when they are not.

                                                  To the point of moving too slow, I think so much of what we do now is entirely fashion-based. We “move on” to this season’s newest hot lineup of Babel.js+right-pad+reacter often without any real benefit. The only ones that move so fast are those starting up throw away companies, with a new greenfield every six months. So much of the world’s code is still C++ and COBOL, but most people here would be embarrassed to admit working in such a stack, despite its relevance and importance.

                                                4. 10

                                                  I am positive that a certification as you describe will be bad for society and developers. One, it will make it all the more hard for those aspiring young developers to become actual developers. Professional certifications and tests would remove even more developers who come from disadvantaged classes.

                                                  Also, if you think that you are disrespected given the amount of effort you have put into your profession, talk to your average pharmacist. Developers have it pretty good compared to other professions.

                                                  1. 1

                                                    Professional certifications and tests would remove even more developers who come from disadvantaged classes.

                                                    There’ll be financial aid available, obviously.

                                                    1. 1

                                                      And maybe that is a problem. We need to be more rigorous.

                                                    2. 6

                                                      You’re conflating a lot of things here, many of which I agree with and many of which I don’t. Personally, I go home on time every day, unlike my actuarial friends - which I attribute largely to Scrum - and I enjoy my work environment, which I attribute largely to that “sexist, classist, and ageist exclusionary culture”. And I’m not at all convinced by “takes 10 years to get good at”. Take a long think and decide the minimal set of things that are dealbreakers that the union is committed to and the things that are your personal opinions, and make the latter not anything official - if you want to start the union of people who share exactly the same political positions as you, that’s going to be a union of one.

                                                      If you’re talking about exams the biggest problem is going to be keeping up with the pace of change in a young field. The worst job I had by far was that where someone who had been a programmer 10 years ago was making technical decisions, and making them correctly according to the best practices of 10 years ago. The worst programmers I’ve ever worked with were those with the most certificates on their desks. You would either need to have the exams at a sufficiently high and abstract level that many effective working programmers would fail them (I suspect that a lot of us have the skills to work effectively within whatever practices are current when we first learn, but not to adapt to new and improved practices. Frankly given the way you always talk about Scrum/Agile I suspect that you may be one of those people), or revise the exams frequently and have the certifications be correspondingly short-lived, or the certifications will end up being worse than useless. (Maybe you do want to cut 90% of programmers out of the business - but if so then you’ll have to show that a team of purely “10x programmers” really can be that much more effective to business than a cheap team).

                                                      The initial credibility part is hardest, and I suspect the only way to achieve it is through regulation and the like. If e.g. government contracts (or even one state to start with) required all programming to be done by people with qualification x, that looks like a path, then you could start lobbying large companies to require it, then smaller companies and so on.

                                                      I’m glad you’re moving from comments into action (assuming you are). I do think this stuff is important, but even as someone who is in favour of unionization I find it tedious to see the same screed from you every time a related story is posted. (And if you’re ever going to hit broad appeal, I think you’ll need to find someone else to express the position more concisely).

                                                      1. 5

                                                        There’s a core difference I’d like to keep considered - Doctors, attorneys and so on are one to many clients. We generally are many developers to one customer. In a way we are more like mercenaries or companies of workers( or theater) .

                                                        your start up should hire Developer Companies which would then be responsable and have to enforce the qualifications.

                                                        1. 2

                                                          I feel like these high quality Developer Companies are becoming more and more popular, I think of Thoughtworks, Cognitect, Promptworks, etc.

                                                          1. 2

                                                            Ow, I am intimately familiar with the hiring and training process for two such Developer Companies. Full of deep software heads, it ain’t. Full of the kind of mentioned Scrum and open-plan pain that makes a Google or Facebook look enlightened they are.

                                                            But, it’s undeniable that good work gets done. IMHO, in large part because they hire for potential and demonstrated capability to both work and learn from others.

                                                            1. 1

                                                              How does a person start one?

                                                              1. 1

                                                                Ask the founders of the already existing companies?

                                                          2. 5

                                                            I don’t like the word “professionalism”. It makes me think of zero sum games of respectability, ties and suits and enforced gendered garments, scripted interaction, conformity, authoritarianism.

                                                            We have managed to create an industry where most of us are allowed to wear much more than most other industries of similar pay allow, and allowed much more freedom in general. Let’s not undo that. If anything we should be pushing further in that direction.

                                                            1. 6

                                                              Sorry if my response is long. That just means that you brought up an interesting point. This topic of professionalism (good and bad) is really interesting.

                                                              I don’t like the word “professionalism”. It makes me think of zero sum games of respectability, ties and suits and enforced gendered garments, scripted interaction, conformity, authoritarianism.

                                                              I see where you’re coming from, but I disagree. I do think that authoritarians and bad actors tend to use “unprofessional” like “not a team player”. And sure, I hate that conformist definition of the word. However, to me professionalism means taking the ethical ramifications of one’s job seriously. Sure, keeping up the image of the profession (and not acting like a total asshole) is a part of that. Does it require wearing a tie? No, of course not.

                                                              I don’t like conformity (just read up on me) but now that I’m older I recognize that there’s value in a group being organized, especially when image is at stake. Nothing like, “Everyone’s in at 9:00, and if you fuck up once, you’re fired”. That’s shitty and abusive. More like, “Let’s all make sure that criticism stays within the group, and let’s never escalate small disagreements to management, because if we start undermining each other’s credibility, our managers will think of us as untrustworthy children.”

                                                              We have managed to create an industry where most of us are allowed to wear much more than most other industries of similar pay allow, and allowed much more freedom in general.

                                                              I strongly disagree. The post-college halfway house culture (open-plan offices, drinking at the desk) feels more natural and free at age 25 but by the time you’re my age (32) much less 50, it’s stifling. The only good thing about it is that you can get a decent amount of work done from 8 to 11 because the kids aren’t in the office yet, but I’d rather just have a real office and be able to get work done at any time of day.

                                                              I don’t think we have as much freedom as it seems we do. Real professionals don’t have to provide daily visibility into project status. For non-programming professionals, status/performance check-ins are quarterly at most and informal, and their managers are more like their friends than bosses so the performance appraisal is mostly a formality and criticism never goes on the record. (Non-tech boss: “I’m giving you Exceeds Expectations, but off the record, these are the things I want you to improve.” Programmer boss: “I’m giving you Slightly Below Expectations because you took 11 weeks for a project that should have taken 10.”) They’re treated like actual adults at work who can be trusted to do their jobs, and it’s really rare that they’re fired except at the C-level. Yet for us, we have people who are fucking 35 and have to do Scrum, and we have people getting fired all the time, sometimes just for having a bad month.

                                                              Sure, we have unimportant freedoms and perks: a 30-minute massage on your birthday, a foosball table, the right to dress like a college kid. We don’t have the freedoms that matter, though, because we don’t have any social status.

                                                              Also, the “rules” that other professionals face when it comes to, say, dress… those are just a harsh form of mentoring with regard to rules that actually apply to all of us. For example, in a bank when the MD sends the 22-year-old analyst home for his unprofessional appearance, it’s embarrassing as hell for that analyst when it happens… but it’s not going to hurt him in the long run. The MD’s not going to be a dick and bring it up on the analyst’s performance review. On the other hand, a 22-year-old programmer who dresses that way is not going to be taken seriously (if he has to work with the rest of the business) so even though he can “get away with it” for years, he’s actually destroyed his chances for promotion. The analyst gets told “these are the rules” early on, and it hurts, but then it’s over. The programmer is allowed to break the rules and lose his credibility, and eventually he gets fired “for performance” (even though his actual work performance was almost certainly adequate and may have been great) whenever the company needs to let people go, and he has no idea why.

                                                              I’m not saying that the above is good. I wish appearance didn’t matter. It’s annoying having to wear one set of clothes for work that is less comfortable than what I wear elsewhere, and to wear long pants when it’s 95 degrees. However, it’s reality. We only have the freedoms we think we do if we never want to be promoted or taken seriously. You can’t actually bee seen playing foosball at 3:00 pm on a Thursday more than about once a year.

                                                              Also, and I’m only relaying this dismal story because it’s relevant, when I worked at Google, I fell for the “this isn’t a normal company” line. I posted strong opinions on mailing lists and I criticized a product that was obviously about to fail. What I didn’t know is that every company says “We’re tolerant of internal criticism” and that’s usually a Hundred Flowers move. There was a profanity-laden mailing list (“eng-misc”) that served no purpose other than griping (and I made the mistake of posting on). When I was on the way out, an executive admitted that it was essentially tolerated simply because the management saw it as a way for the next crop of “problem employees” to identify itself (and, probably, because it can be entertaining to see people implode; I observed three eng-misc implosions in my 6 months, and was one).

                                                              Ultimately, the rules and protocols that you don’t like, even if they aren’t documented, probably exist. They certainly will if you want to move up into management, which you’ll pretty much have to do if you want to get respect past 40, unless you work in an AI lab.

                                                              Moreover, what I’m proposing won’t add to the rules. If anything, a union-like structure or a professional guild will give representation and counseling to people who fuck up. That way, if you end up in hot water because your manager didn’t like it when you criticized his decision (and, of course, he’ll never tell you that; he’ll make it look like a “performance” issue) you can work with a representative who can get you transferred to another team… instead of an HR person who’s looking out for the company only. A union rep will say, “You fucked up and your manager doesn’t like you, but we’ll twist his arm to make sure you get a good enough review to transfer to another team. Don’t do that again.” An HR person in a tech company is only thinking about one thing: how to fire you in a way that minimizes the chance of a lawsuit.

                                                              1. 3

                                                                Real professionals don’t have to provide daily visibility into project status.

                                                                Why does this bother you so much? I really don’t get it. Frankly if other professions don’t do this, they should (I saw something very similar happening in Shirobako, which suggests that at least some other industries have similar practices). It saves a lot of wasted effort.

                                                                we have people getting fired all the time, sometimes just for having a bad month.

                                                                Maybe different here in Europe, because I’ve never seen that happen.

                                                                Sure, we have unimportant freedoms and perks: a 30-minute massage on your birthday, a foosball table, the right to dress like a college kid. We don’t have the freedoms that matter, though, because we don’t have any social status.

                                                                What freedoms don’t we have that matter then? For me dress code is a pretty big deal; if you want me to sacrifice that you’d better be promising a hell of a lot in return.

                                                                On the other hand, a 22-year-old programmer who dresses that way is not going to be taken seriously (if he has to work with the rest of the business) so even though he can “get away with it” for years, he’s actually destroyed his chances for promotion.

                                                                If whoever’s deciding promotions is doing it based on dumb criteria, that’s their problem (and eventually their resulting underperformance will be noticed). We shouldn’t be enabling them.

                                                                We only have the freedoms we think we do if we never want to be promoted or taken seriously. You can’t actually bee seen playing foosball at 3:00 pm on a Thursday more than about once a year.

                                                                The solution to this is to all play foosball at 3:00pm on a Thursday more often. A lot of the time you have to fight for things that you’re entitled to, sure, and you shouldn’t, and a union could help with that. Abandoning the foosball table or the no dress code or whatever is the opposite of what the union should be doing.

                                                                A union rep will say, “You fucked up and your manager doesn’t like you, but we’ll twist his arm to make sure you get a good enough review to transfer to another team. Don’t do that again.”

                                                                Again, if you do that you’re enabling that nonsense. That’s the opposite of what a union should be doing.

                                                                1. 3

                                                                  The solution to this is to all play foosball at 3:00pm on a Thursday more often. A lot of the time you have to fight for things that you’re entitled to, sure, and you shouldn’t, and a union could help with that.

                                                                  Do you really think a table football is a right worth fighting for? I couldn’t care less about things like that. I come to work to work, and I’d rather work normal hours and then go home or spend time with my actual friends than stay long hours at the office playing table tennis with colleagues half of the time.

                                                                  If you want me productive and happy, give me a small quiet room (maybe with another person or three), less interruptions, less demeaning micromanagement and more trust and respect. And you can take away all the perks. Yes, even the espresso machine.

                                                                  1. 4

                                                                    Do you really think a table football is a right worth fighting for?

                                                                    Yes. They wouldn’t put it in their recruitment ads if they didn’t think it was worth something.

                                                                    I’d rather work normal hours and then go home or spend time with my actual friends than stay long hours at the office playing table tennis with colleagues half of the time.

                                                                    Agreed, but that’s a false dichotomy. I think normal hours are absolutely worth fighting for. I don’t think that makes perks not worth fighting for.

                                                                    If you want me productive and happy, give me a small quiet room (maybe with another person or three), less interruptions, less demeaning micromanagement and more trust and respect. And you can take away all the perks. Yes, even the espresso machine.

                                                                    If you want a union, you’re going to have to accept the union spending some of its resources fighting for things that you personally don’t care about.

                                                                    Personally I don’t understand this obsession with trust/respect/demeaning. /u/michaelochurch in particular is coming off as obsessed with “face” here. In my book, as long as you’re paying me enough, if you want to ignore my judgement then that’s your prerogative.

                                                                    1. 3

                                                                      Yes. They wouldn’t put it in their recruitment ads if they didn’t think it was worth something.

                                                                      They think potential employees value it. They’re ads, after all.

                                                                      Agreed, but that’s a false dichotomy.

                                                                      You’re probably right.

                                                                      I don’t think that makes perks not worth fighting for.

                                                                      Less worth fighting for. For me, a good work environment and reasonable demands (e.g., WRT working hours) are essential, table games are ornaments.

                                                                      I also don’t think that activities other than working and relaxing for 10 minutes should be encouraged at work.

                                                                      If you want a union […]

                                                                      Agreed.

                                                                      Personally I don’t understand this obsession with trust/respect/demeaning. […] In my book, as long as you’re paying me enough, if you want to ignore my judgement then that’s your prerogative.

                                                                      I wasn’t talking about scrum in particular, but work relationships in general. They matter. If I feel like I’m treated like shit 8 hours a day, 5 days a week, it will influence my general mood outside of work. If I sit in a noisy environment and am constantly interrupted, not only my performance will drop, but I’ll also have to decompress for hours after work every day.

                                                                      I know the feeling of looking forward to a day of work. I know what it’s like waking up and thinking, “oh no, another day at the office”. It’s not worth the same salary.

                                                                      1. 2

                                                                        Yes. They wouldn’t put it in their recruitment ads if they didn’t think it was worth something.

                                                                        Look, it’s worth something. All equal, I’d rather have the foosball table, as long as it’s not next to my working space. Here’s the thing, though. I’m 32. I’ve had time to think about my priorities. If I like foosball, I’ll buy a table for my apartment and invite my friends over. If I want a massage, I can buy one.

                                                                        I think normal hours are absolutely worth fighting for. I don’t think that makes perks not worth fighting for.

                                                                        I absolutely agree. Some perks are worth more than others. I’d rather have decent health insurance than a foosball table. Right now, the startup ecosystem is ramping up on the showpiece perks while dialing down on the more meaningful ones, like professional autonomy, career development, and health insurance and 401k matching.

                                                                        If you want a union, you’re going to have to accept the union spending some of its resources fighting for things that you personally don’t care about.

                                                                        Sure. That’s absolutely true. However, management invests a lot of its time in things that are actively harmful: stack ranking and aggressive performance review systems, for example. A union that can fight back against mismanagement will not only help us, as developers, but improve our companies as well. Union shops aren’t actually unprofitable in most cases; often, unions make the companies better for their owners. (It’s usually when unions refuse to compromise in a dying or contracting industry that they’re harmful, insofar as they hasten the process. Software isn’t a dying industry.)

                                                                        Personally I don’t understand this obsession with trust/respect/demeaning. /u/michaelochurch in particular is coming off as obsessed with “face” here. In my book, as long as you’re paying me enough, if you want to ignore my judgement then that’s your prerogative.

                                                                        That’s a reasonable stance for, say, a $400/hour consulting gig. If someone’s willing to pay a premium for my time and then ignore my judgment, fine. I’m collecting either way. For salaried work, it’s different. We work at an 80+ percent discount (relative to what we’d be worth as consultants) because we expect a certain stability and career coherence.

                                                                        Demeaning micromanagement not only threatens your job stability, but it also influences the quality of your work and what you work on. You can’t put a trash-pile of “user stories” on your CV. It won’t do anything for your career. Your career is advanced by macroscopic accomplishments that actually matter, not “completed 832 story points worth of work on time”.

                                                                        Inexperienced programmers don’t have a problem with micromanagement because they haven’t seen anything else, and they also don’t know what happens to the careers (and, moreover, to the minds) of those who work in demeaning conditions for years on end. I can deal with a shitty project. I can’t stand to live in a world where aggressive micromanagement (called “Agile”, while being anything but) is held up as the ideal.

                                                                        However, I’m 32 and remember pre-Scrum programming and it was pretty great. You had time to actually learn things. You could do things well and it was appreciated. Software actually worked.

                                                                        1. 3

                                                                          You seem to have some personal obsession with things you see as “demeaning”. I don’t share it, and I don’t find your arguments at all convincing, least of all your appeal to your age.

                                                                          However, I’m 32 and remember pre-Scrum programming and it was pretty great. You had time to actually learn things. You could do things well and it was appreciated. Software actually worked.

                                                                          Haha. No it didn’t. I remember those days too, I’ve worked in those conditions. It was bloody awful.

                                                                          1. 2

                                                                            Well, I worked in a company that went from “normal” to Scrum, and it became bloody awful.

                                                                            That software didn’t work, this I agree with.

                                                                            1. 2

                                                                              I remember those days too, I’ve worked in those conditions. It was bloody awful.

                                                                              There have always been bad software shops, but when software is done right, it’s an applied R&D job, where people can actually go after excellence without having to justify themselves to bean counters at every turn. Scrum flies in the face of that.

                                                                              1. 3

                                                                                Maybe for you it is. Me I came to software to get away from research, and I find it a lot more fulfilling when there are customers and short feedback loops.

                                                                      2. 2

                                                                        Why does this bother you so much? I really don’t get it. Frankly if other professions don’t do this, they should

                                                                        Having to justify work is a drain and it actually makes the work that is done of lower quality. It’s been shown that if you force creative people to explain themselves at every turn, they create a worse product. Moreover, Agile/Scrum and it’s (again, insulting) insistence on justification and estimation at the micro-detail level has the effect of biasing work toward what can be easily estimated and measured, which is usually rote grunt work of low value.

                                                                        Frankly, I’m too old to do the same stupid thing over and over. I want real projects, not fucking “user stories”.

                                                                        Maybe different here in Europe, because I’ve never seen that happen.

                                                                        Very, very different. It’s easy to fire someone in the US, and hard as hell in the EU.

                                                                        If whoever’s deciding promotions is doing it based on dumb criteria, that’s their problem (and eventually their resulting underperformance will be noticed).

                                                                        I’m not convinced. Managers and executives can be bad at their jobs and keep them for a long time. Sure, over the 20-year time frame, a non-producing executive will be asked to resign (and promptly get another executive level job) but even the best programmers don’t have that kind of job security in the US.

                                                                        Abandoning the foosball table or the no dress code or whatever is the opposite of what the union should be doing.

                                                                        I’m not against foosball tables or lax dress code. I just don’t think that they’re as important as professional autonomy and fair compensation. I’d be willing to give them up in order to be treated like a trusted professional instead of as a child who needs to do Scrum.

                                                                        Again, if you do that you’re enabling that nonsense. That’s the opposite of what a union should be doing.

                                                                        In the US, if your manager doesn’t like you, not only are you on a quick path to being fired due to at-will employment, but transfer within your company is impossible. A union could improve the situation to a point where the manager can’t block your transfer. We could realistically get an arrangement where performance reviews aren’t part of the transfer packet (they shouldn’t be). I don’t think we can realistically get to a point where you can stick around on a team for 3+ years even if your manager hates your guts… and many people would consider that undesirable, because if a manager hates someone, that person’s probably not going to be productive.

                                                                        1. 3

                                                                          I’m not against foosball tables or lax dress code. I just don’t think that they’re as important as professional autonomy and fair compensation. I’d be willing to give them up in order to be treated like a trusted professional instead of as a child who needs to do Scrum.

                                                                          I’m indifferent to this “professional autonomy” or “trust”, at least as you’ve presented it. If this union is going to try to stop Scrum then I will have no part of it (and indeed will oppose it as much as I can), because for me Scrum has provided a lot of value and made my working life a lot better.

                                                                    2. 2

                                                                      We have managed to create an industry where most of us are allowed to wear much more than most other industries of similar pay allow, and allowed much more freedom in general.

                                                                      Eh, I think this depends a lot on whether your personal clothing preferences are in line with the cultural norms. The Bay Area tech industry has different clothing norms, but still has pretty strong ones. For example, traditional business attire has gone all the way from previously required, to now strongly frowned on, to the point where it will be considered a negative “culture fit” at many places if you wear a suit and tie to the interview (I’ve even heard Google interviewers openly saying that). So if you personally feel most comfortable wearing a suit and tie for work clothing, you’re kind of out of luck, time to awkwardly buy new clothes that look more “Bay Area tech” in style if you want a job.

                                                                    3. 5

                                                                      Over my dead body. One of the best qualities of my chosen industry is that I get to compete with

                                                                      17-year-olds who read half a book on how to build websites and who’ll work for $15 per hour. 
                                                                      

                                                                      That is exactly how I broke into this career and I have no desire to put barriers in front of other people now that I’m here. It would be grossly unfair. This is one of a very small number of professions that you can learn on your own while on the job. Anything that jeopardizes this is both logistically hard to enforce and probably morally wrong (at least to my own particular moral compass).

                                                                      I do not wish to be constrained in my negotiations with an employer by anything remotely like a union. I’ve put in the time to gain a pedigree that gives me a lot of negotiating power for prospective employers. I’ve gained this pedigree without a single certification or any college degree. A union will just put up more arbitrary barriers in those negotiations. I like the freedom not being a part of a union gives me.

                                                                      Any attempt to go down the road you suggest is either doomed to be ineffective or deny me and others the ability to advance in the way I have.

                                                                      It will be ineffective if there isn’t governmental enforcement of the form that Labor Unions, Medical professionals, or Lawyers have. Any company or person can easily just bypass it. After all why pay money for that premium if you can hire that 17-year old and get something that works good enough.

                                                                      As soon as governmental enforcement happens though then the barriers will inevitable become too onerous for someone like me to gain entry later down the road. That sort of social mobility is incredibly important especially for one of the few jobs with a future still. Making it harder to gain entry isn’t a solution I could ever support.

                                                                      1. 1

                                                                        Exactly, same experience here. If you can’t compete with a 17 year old, it’s because you need to improve your own skills. Bone up.

                                                                      2. 4

                                                                        I’d love to take such an exam, and I’d pay dues to be in such an organization.

                                                                        I recently started considering studying for the PE software exam, it looks interesting: http://ncees.org/about-ncees/news/ncees-introduces-pe-exam-for-software-engineering/

                                                                        1. 2

                                                                          This is the closest to the right way of looking at this. I disagree heavily with a lot of the original post, but we do need professional certs for folks writing software that could kill, maim, or destroy things.

                                                                        2. 9

                                                                          No. I will resist unionization and certification with every fiber of my being. I consider your ideas to be deeply poisonous, and your writing consistently appeals to your own experience as if it were Truth. You leave no room for people to disagree with you without them becoming the enemy or dismissing their own experience with a condescension that few can match. On top of that, your writing fosters a very strong Us vs. Them philosophy that I personally find grotesque. Your post here makes it even worse, because now it’s Us vs. Them vs. Those Who Are Not Worthy.

                                                                          But, you think we’re at war, and through war, one can justify anything, so I don’t expect this comment to achieve anything. It’s purely to vent. I’m hoping you don’t respond.

                                                                          1. 2

                                                                            I consider your ideas to be deeply poisonous

                                                                            This is an industry where open-plan offices and Scrum and sexual harassment are considered normal. The bar for “deeply poisonous” is extremely high.

                                                                            You leave no room for people to disagree with you without them becoming the enemy or dismissing their own experience with a condescension that few can match

                                                                            That’s not fair. Irene disagreed with me, and while we still may disagree, she raised a lot of great points. It’s obvious, too, that we’re on the same team (i.e. we both want to make this industry better). Loyal opposition is a good thing. It’s often good for ideas for them to be tempered through disagreement, especially when we’re talking about big ideas that (if implemented) could affect a large number of people.

                                                                            But, you think we’re at war, and through war, one can justify anything

                                                                            Well, when people you’ve never met try to ruin your life and your career because they think you might be a union activist, it changes your perspective on things. You start to realize that everyone needs protection.

                                                                            1. 4

                                                                              You’ve managed to reply with a comment that contains absolutely nothing that I disagree with or is at odds with what I said. “Hey, I’m less bad that those guys over there” isn’t exactly something that gets me excited. And yet, I stand by what I said in the GP. You’re clearly an expert at misdirection, I’ll give you that.

                                                                              1. 3

                                                                                Your comment basically said, “your ideas are bad and you’re adversarial”. Given that you haven’t justified why you thought the ideas were bad, a reply of “how can you call me super-evil when that stuff is going on?” sounds reasonable to me. And he explained why he doesn’t view himself as overly adversarial.

                                                                                1. 2

                                                                                  It’s a consistent pattern in his writing over a period of years.

                                                                                  I don’t need to justify why I think his ideas are a bad. A number of other people in this thread have done it for me. I’m specifically calling into question his methods.

                                                                          2. 8

                                                                            Stop speaking for me. You don’t represent me.

                                                                            Just leave me alone. I don’t want you involved in my employment at all, in any form or manner.

                                                                            If a petty tyrant such as this manages to get some power, we will all see very quickly a new kind of software portability.

                                                                            1. 3

                                                                              Briefly, my opinion:

                                                                              • there needs to be a strong differentiation between some bro who started slapping crap down and someone who understands the fundamentals of the field.

                                                                              • there needs to be a professionally independent body

                                                                              • technical interviews need to be subsumed by the credential from the body. If it can’t do at least that, then it’s really pointless.

                                                                              • credentialism is less of an evil than barbarians

                                                                              • certifications of specialization are probably almost required past the general technical certificate

                                                                              It’s absolutely clear that the loudly stated intent from the major employers is to flood the market with coders, who then compete with the highly skilled professionals. The professionals need a way to clearly demarcate their capability in a well respected fashion; and allow competent entry into the professional society from qualified individuals.

                                                                              This kind of topic is incredibly inflammatory; I’d be happy to engage over email and would actually prefer it for serious long-form engagement ( lobster username @ alumni.uidaho.edu ).

                                                                              1. 1

                                                                                This is the best, most concise, statement of the problem that I’ve seen to date. Thank you.

                                                                              2. 2

                                                                                Certification

                                                                                I think the CCNA is a good example.

                                                                                Anyone can administer a network, but I’d want really good proof of expertise from a network admin without a CCNA.

                                                                                No enforcement is needed if your certification is actually valuable.

                                                                                Granularity

                                                                                A few commenters have suggested splitting ‘software engineer’ from everything else. I think this is a poor fit because each job requires a very different subset of skills.

                                                                                I think that e.g. ‘security certified engineer’ is a reasonable granularity of certification - someone who understands security policy for the major protocols, secure disposal of drives that have held PII, etc.

                                                                                Such a person does not need to know how a compiler works, AI, or theory of computation; they could benefit from knowing a bit of distributed systems, snippets of web & db knowledge.

                                                                                It’s tremendously wasteful to require unnecessary education (e.g. in medicine, a doctor is expected to know enough to call for a specialist).

                                                                                1. 3

                                                                                  I really fail to see how anyone could consider themselves a software engineer without at least understanding the concepts of compilers, even if they never wrote one. This would be especially true for a ‘security certified engineer’, security depends on compilers and can often be ruined by misused compilers.

                                                                                  1. 1

                                                                                    To plan the security for a software system, it’s critical to understand that a compiler can be backdoored. I don’t think understanding how such a backdoor would be implemented is particularly relevant, beyond a hand-wavy explanation.

                                                                                    More relevant topics to a working security engineer:

                                                                                    • Estimating the value of the data you hold (on the black market, as a political statement, as a profiling tool for TLAs, etc)
                                                                                    • Estimating the likely cost(s) to the company of a breach (loss of data, reputational damage etc)
                                                                                    • Clearly articulating a threat model so it can be read further up the chain
                                                                                    • Understanding how language and framework-level features can eliminate classes of bugs (e.g. everything in the OWASP top 10)
                                                                                    • Stakeholder management when adding new restrictions to product teams
                                                                                    1. 1

                                                                                      Unfortunately, the only way I believe someone understands the concepts of a compiler is by writing several.

                                                                                      The “compilers course” offered as a part of most CS curriculums is dogshit.

                                                                                      1. 1

                                                                                        I don’t get it. Compilers are cool and I love poking around and understanding how things work, but when do you get to use those concepts at work?

                                                                                  2. [Comment removed by author]

                                                                                    1. 2

                                                                                      Ultimately, I don’t agree that any of these things should be controlled by some higher institution.

                                                                                      I struggle with the centralization aspect, too. To which, I argue that the success of one credible (and not outright commercial) verification agency or professional organization doesn’t preclude others. Actuaries have two societies (SOA and CAS) with different exam tracks. Likewise, if someone manages to create a genuine professional track for software, that’s great. If they become complacent, then I hope that someone else will compete against them.

                                                                                      We, as conscious technical people, should make an anti-tyrrany service, where actively rate companies that need our services (skills).

                                                                                      Glassdoor theoretically serves this purpose, but there are some problems. First, I’ve seen terrible companies get 4.3+, because they push “true believers” to dominate the channel, and sometimes HR itself writes the reviews.

                                                                                      Second, any company that has a large non-technical operation is likely to get low ratings. I worked at a company that had 200 people in Corporate and 600 people in Operations (call center). Our health benefits in Corporate got fucked, in order to improve morale in Ops because Ops was killing the company’s Glassdoor ratings. (The right thing to do would have been to give everyone good health benefits, but our executives were cheap assholes, so they equalized by bringing us down.) Also, it didn’t even work. It just made Corporate and Ops dislike each other more, because Corporate now had to deal with higher employee contributions.

                                                                                      Vetting anonymous contributions is very hard. The most effective anti-tyranny service happens offline. People talk to others whom they trust. But how do we meet enough trustworthy individuals that we can drive our careers based on knowledge rather than image? We need to get together, offline. A professional society serves that purpose.

                                                                                    2. 2

                                                                                      I share your concern for the necessity of a labor union, but never the less I feel it follows from the wrong metaphor. There are so many wrong metaphors applied Software.

                                                                                      I recently read Mythical Man Month and was surprised at how Fred Brooks suggested that Software Engineering was more akin to Chemical Engineering. I find sometimes the right metaphors re-factors my perception quite a bit.

                                                                                      The current dominant metaphor of Software Engineering is clearly Civil Engineering. This is both in terms of how Software Development is treated as and how Programmers are paid.

                                                                                      If we are to follow the Chemical Engineering metaphor we end up with these notions

                                                                                      • A chemical plant has significant maintenance costs
                                                                                      • The moving parts corrode more rapidly
                                                                                      • Downtime of a Chemical Plant is more often and more erratic
                                                                                      • As the risk of slow poisoning is higher, regular health checkups are needed
                                                                                      • The plant designer is both high level and grungy low level down the gutter person sometimes
                                                                                      • Safety of chemicals is crucial
                                                                                      • Toxicity build up more rapidly
                                                                                      • As a chemical plant is more alive than a building, it requires a lot of prototyping and simulation
                                                                                      • Developing new types of chemical reactions is more error prone and complex so it requires a lab and working in isolation and a controlled environment
                                                                                      • Training for low level can be done onsite. Training for high level requires a lot of more
                                                                                      • Oil is profitable
                                                                                      • Environmental leaks

                                                                                      s/Chemical/Data/ to get an idea.

                                                                                      Seen this way even more than a labor union is absolutely required for software engineering, especially for low level operators. Think Data Entry operators and the like.

                                                                                      How about high level programmers ? I believe that is question of status fundamentally. We are essentially surgeons but are treated as workers. I suppose this can be dealt in a few ways, I am still figuring out how.

                                                                                      1. 1

                                                                                        I think that a big part of what separates us from surgeons and chemical engineers is that, while what we do is critically important, it’s not visceral. (A surgeon’s job can be literally visceral, har har.) It’s abstract.

                                                                                        Chemical engineers sometimes work with materials that can kill a person in seconds. We can incinerate a billion dollars or ruin a company’s reputation or breach someone’s privacy in seconds, but it doesn’t have the same feel.

                                                                                        What we are, right now, is high-value gamblers. This applies to the small (every tweet is a gamble with your reputation as a professional and possibly as a programmer) and the large (depending on definitions, 30-85 percent of software projects fail). It’s semi-respectable because society actually needs what we produce, quite a lot. However, the closer a look the world gets on our culture and our leadership, the more it sees us as a bunch of depraved sociopaths. The open-plan brogrammers don’t represent us, but they’ve taken the stage and made us look like a bunch of arrogant, uncouth, sexist, privileged wankers.

                                                                                        1. 3

                                                                                          I think we should treat the way we program and engineer software as critical as anything else. If everyone did this, not only would there be less problems in the world, we would all be much more respected and paid like any other engineer. We have to show there are hard, dedicated people who know what they’re doing, and not just some 17 year old kid who read half a book (like one lobster said). I think all developers should strive to be engineers eventually. An engineer can step down temporarily to do hands-on developer work, which has several benefits: 1. you know the architecture and design of the system and 2. you’re paid the same salary as when you do the design work. Companies are paying for this all encompassing knowledge and experience, just like an electrical engineer or mechanical engineer.

                                                                                          1. 1

                                                                                            Diddling with pointers is visceral. Dealing with a memory leak is visceral.

                                                                                            I agree with the high-value gambling part, but that’s because we are in a “oil rush” of sorts, Data Mining and yada yada yada …

                                                                                        2. 2

                                                                                          First off, my disclaimer: I’m a software business owner/CEO. I happen, however, to not try to actually be evil. (Gosh, where have I heard that before?)

                                                                                          While I’m fairly confident, given the situation, that I wouldn’t try to prevent a union, I don’t think it’s necessary for our profession (not to speak to nearly any other profession, mind you). I believe this because a) there are decent companies out there amongst the bad ones, and b) the ability to work remotely (and the general acceptance of remote work by employers[1]) allows employees to switch jobs relatively freely without uprooting their lives.

                                                                                          This results in the employees pretty much always being in control of the means of production. Not happy at your job? There is an entire industry dedicated to helping you find a new programming job.

                                                                                          As far as certifications and exams go, I don’t think that would solve our problems. c.f. http://confreaks.tv/videos/madisonruby2012-teaching-rails-panel (one more disclaimer: my business partner is on this panel)

                                                                                          1. 2

                                                                                            It feels like having an exam or project based professional organisation would be a good idea. Though would a tier based approach be better? That way you can a distinction between junior and senior level employees.

                                                                                            1. 4

                                                                                              So, in the actuarial sciences, you get the Associate designation after 4 exams, and Fellow after completing all 10. I’d have something similar in place.

                                                                                              You can get a job after passing Exam #1 (in fact, the business model is not driven by exam fees, but by selling the list of people who’ve passed it) but you’re expected to continue along to Fellow.

                                                                                              1. 2

                                                                                                Not sure if this is a useful comparison, but it reminds me of the advancement model that engineering organizations used to have, topping out with titles like Fellow or Senior Fellow at Sun or IBM. But since the model of a full career at one company is dying, for a system like that to be useful today, it has to be independent of any specific company.

                                                                                                1. 4

                                                                                                  But since the model of a full career at one company is dying, for a system like that to be useful today, it has to be independent of any specific company.

                                                                                                  Yes. This exactly. Employer-independence is absolutely necessary. History has proven that employers will use their power over programmers' reputations for extortive purposes. That’s a dragon that I’d like to slay.

                                                                                                  The crux of a profession is that there are ethical obligations that supersede managerial authority. That can only exist if the professionals have a baseline credibility that means they can get fired and still be OK. If you’re a doctor and your manager fires you for political reasons, you can start a practice anywhere in the country and make a 6-figure income. This safety net gives doctors the moral agency that enables them to refuse unethical or illegal orders. Programmers don’t have any moral autonomy because we live on our reputations as defined by employers (job titles, references, length of tenure).

                                                                                                  Also, a company-specific labor union wouldn’t do any good, because Silicon Valley can bust that type of union quite easily (investors will kill the company and start another one, because even if they lose money, the VCs hate unions that much). We’d do better to look at the Hollywood model. (Those unions are very lightweight and more like professional guilds. They certainly don’t regulate or mediocritize compensation.) We need to create an Employee Bill of Rights (no stack ranking, no back-channel references, open allocation when possible) and simply deny all talent to companies that don’t agree to it.

                                                                                            2. 2

                                                                                              One other thought on this matter: I believe that we all we would have been brogrammers if we had the luck of being 16 yo today. The point I’m trying to make is that we should train and be an example to today’s younger selves rather than enforcing regulations.
                                                                                              Education should come first, on both sides, so it’s not reasonable imho to blame the kids for taking 100k$Year to play. So I do agree with the ones here advocating that the companies should be legally responsible for their products. I also find that a good middle ground will be that the only way to hire a programmer will be trough his consulting firm. In the sense that you hire a team, not a dude.

                                                                                              1. 1

                                                                                                I have never been anything like a brogrammer in my life, and I am kind of proud of that. I have always, knowing or unknowing, been a bookish nerd.

                                                                                              2. [Comment removed by author]

                                                                                                1. 2

                                                                                                  I think we should avoid forcing external groups to do something by creating government laws. Forcing other groups by passing government laws will attract aggressions we don’t need. Protecting credibility of developers through third parties independent of employers is good, and doing so doesn’t actively upset employers, so employers won’t actively try to tear down the profession. We should also avoid prohibiting companies from hiring non-members. Doing so would create a lot of unneccesary direct conflicts with employers. We should avoid unneccesary conflicts in general.

                                                                                                  Here’s where I disagree. Conflicts with employers, for an individual, are catastrophic. For a collective, they can be net positive. In fact, sometimes the organization is made better by it. The losers when unions happen aren’t shareholders but executives. It’s not unusual for a company to become more profitable after unionization because (a) the workers, being better treated, are more engaged and do better work, and (b) because shareholders recognize that the union’s structure has made some management redundant and cut some big-ticket executive salaries. Owners generally end up OK; it’s the careerist social climbers called “executives” who get hurt. I’m fine with that.

                                                                                                  There may not need to be a loss to offset the wage gain to labor (the world isn’t zero sum). If there is, it’ll come out of the needless executive markup/rent before it’s allowed to affect profits.

                                                                                                  I’m actually fine with allowing a certain proportion of non-members (say, 15 percent) in a shop. The free-rider problem is more of an annoyance than an existential threat. What I do think is that we should deny talent to all employers who don’t accept certain terms. In particular, I’d like to establish that (a) performance reviews are not part of the packet for internal transfer, (b) company-wide stack ranking is disallowed, (c ) members have the right (if requested) to an independent advocate/advisor who is present during all interactions with management, (d) employers disallow negative references and back-channeling and punish it with termination, (e) no member can be fired without a documented and fair reason, and (f) employer pays all legal costs in a wrongful termination suit, regardless of its outcome. Those terms are non-negotiable. Allowing them to hire some small number of non-members/free riders, I am okay with.

                                                                                                  Also, I’d like the organization to acquire global credibility. You’re in USA, and I’m in a very distant region. If it goes live in USA and I have to wait for many years, it wouldn’t be ideal. The professional organization had better allow everyone on this planet to join so that no region is left behind.

                                                                                                  Yes. I absolutely agree.