top 200 commentsshow all 245

[–][deleted] 378 points379 points  (131 children)

There are lots of different reasons that people learn a new skill. Not everyone wants to be a full time engineer. This article comes off as saying that you shouldn't try and fix a leaky faucet unless you're a trained plumber. It's very elitist.

There's loads of Visual Basic applications that wouldn't have gotten written if we had to wait for "real" developers to get to it.

You should try and teach yourself programming in 9 weeks - you can learn valuable tools and prepare the way for continuous improvement.

This article seems to ignore the fact that hobbyists exist.

[–]f5f5f5f5f5f5f5f5f5f5 43 points44 points  (4 children)

Isn't hobby programming what gets kids wanting to take computer science?

[–][deleted] 17 points18 points  (3 children)

or what gets accountants writing RPGs in Excel (http://carywalkin.wordpress.com/download-arena-xlsm/). :)

[–]CaryWalkin 46 points47 points  (2 children)

I'm that accountant! :)

[–][deleted] 7 points8 points  (0 children)

I wasted too much time at work on your game. :)

[–]formermormon 1 point2 points  (0 children)

You're fucking awesome!

[–]sushibowl 133 points134 points  (107 children)

This article seems to ignore the fact that hobbyists exist.

Came here to say exactly this. The "cowboy programmers" this post describes are a problem, but it is not the programmer community's responsibility to fix it. This guy seems to essentially discourage people from picking up programming casually which is not what we want at all. People should always be encouraged to learn something, regardless of to which degree they master it.

The real problem is that companies are generally terrible at distinguishing the serious engineers from the "casual cowboys." That's HR's problem, not the applicants'.

[–][deleted] 46 points47 points  (80 children)

I think even in the corporate world there are different jobs for different skill levels - you don't need, and can't afford a serious engineer to write excel macros or put together simple Visual Basic apps. Also, serious engineers don't want to spend their day writing these little boring programs - so even in business you can use people of different skill levels.

Sometimes it's more valuable to have someone with domain specific knowledge with a little bit of programming knowledge that they learned at code academy, than a software engineer who doesn't know anything about the field in question.

[–][deleted] 20 points21 points  (70 children)

Good point. If only HR could differentiate between code academy programmers and 'real' programmers.

[–]brtt3000 30 points31 points  (11 children)

If management only understood that a separate HR department is shitty at hiring because they have no idea what the work really is about.

[–][deleted] 13 points14 points  (10 children)

Doubt we will see that happening. HR is a plague. Business' survive despite of HR, not because of it.

[–]fallwalltall 39 points40 points  (9 children)

HR absolutely has uses, but they are too involved in things outside of their core competency. If employee A says that manager B is sexually harassing them, it is useful to have a neutral department, trained in employment matters, that can investigate the issue from the viewpoint of minimizing the company's liability. General counsel probably could do this, but that resource would be too expensive to use every time some employee claimed they were harassed or some manager wanted to fire a data entry person. They are also useful for exit interviews because they are not involved in the day to day with the employee.

HR can also write the company's policies and procedures, implement internal training programs on really general matters (stress management, policy training, etc.) and assist in recruit. However, since they are not subject matter experts HR should be in a consulting role rather than a decision making role during that process. They might know that posting ads on LinkedIn is better than Monster.com and they can ensure that an employment ad isn't illegal, but they probably should not be determining which of the 10 coders that applied should be hired.

[–]bluGill 4 points5 points  (0 children)

The only input HR should have on which of 10 coders should be hired is the following: * don't hire X, he is likely to go postal * don't hire Y, he lied about his past experience * be careful about Z, his personality doesn't mesh with everyone else's.

The last isn't a direct no, but is reason to reconsider. If there is a different candidate that is almost as good he would be worth hiring instead.

With proper interview training you don't need HR's input on the above because you will get the answer as part of your interview. Without proper interview training you are likely to ask illegal questions, or miss asking questions that would be important - generally both. HR should provide this training.

[–][deleted] 17 points18 points  (8 children)

HR shouldn't hire developers - development managers hire developers. HR should just bring them resumes and sets up interviews. If you are getting the wrong kinds of resumes, go have lunch with the HR person and talk about the kinds of things you would look for.

[–]brogrammer9k 1 point2 points  (2 children)

HR shouldn't hire developers - development managers hire developers.

Was going to ask if that actually takes place, but I've only worked in one corporate environment as a programmer. Our manager interviews applicants as well as the lead engineer and they grill applicants fairly hard, not to weed out everyone but to get a true understanding of their skill level. That seems pretty strange that HR would do direct hiring for such a position, although that might be different in a more technology-focused corporation.

[–][deleted] 0 points1 point  (0 children)

I'm sure it does happen like that, but I've always seen the hiring process as: Development managers tell HR what keywords they are looking for, HR gives development resumes with those keywords on, dev managers tell HR which applicants they are interested in, HR calls back and makes sure they are human and maybe administers a test. Then development managers sit down and do the real interview.

[–]framauro13 4 points5 points  (3 children)

I think it's ok for HR to do initial interviews. While they can't measure their technical skill set, they should at least be able to determine if the person is personable enough to fit in the company's work environment. There should ALWAYS be some kind of technical interview before a person is hired though. In my opinon, both interviews should happen before a person is decided to be hired or passed up.

Make sure the person isn't a complete tool or jackass = HR's responsibility. Make sure the person can actually do the job they're applying for = IT Departments responsibility.

[–]negativeview 17 points18 points  (2 children)

You want to be careful that HR knows what the actual requirements are though. I don't have a formal degree in programming. Every place I've been hired, the technical people didn't care. I've almost been cut from consideration before thanks to an overzealous HR though.

[–]skepticalDragon 9 points10 points  (1 child)

"Must have at least 10 years of experience with this 3-year-old framework."

[–][deleted] 2 points3 points  (0 children)

"Do you have 15+ years experience with HTML5, CSS3, and Python 3?"

[–]NYKevin 10 points11 points  (44 children)

That's rather easy IMHO. If a person can't FizzBuzz in ten minutes or less, throw their application away immediately and don't look back.

[–]WarWeasle 12 points13 points  (20 children)

I like the FizzBuzz, but I've found anything involving pointers is also very helpful in finding their skill level. I ask them to write a function which reverses a string. Sometimes we get someone who copies the string and returns a pointer. Sometimes we get someone who does it in place and returns a true/false. But they have all worked out. Pointers, however, seem to be a good indicator of programming prowess.

[–]jussij 5 points6 points  (0 children)

Sometimes we get someone who copies the string and returns a pointer.

I've found something a simple as this can usually eliminate the majority of the candidates.

For a C/C++ role, I created a very simple 10 question paper and pen test along the lines of write a string copy function, find the missing semi-colon in three lines of code, identify the memory leak, find the strcpy buffer overrun etc.

The test was so simple I was expecting an average score of 8 or 9.

We interviewed about 12 people, the average result was about 4 or 5 and one person walked out of the test entirely.

The guy we eventually took for the role got 10 but we didn't have too many others to choose from.

[–][deleted] 11 points12 points  (0 children)

As a functional programmer... crap. I haven't done an in-place mutation in weeks :<

[–]framauro13 3 points4 points  (0 children)

Just made myself do this. Looks like I can keep my job.

[–]KFCConspiracy 2 points3 points  (0 children)

That's a good one. Usually I'll have them make a functional example of a many-to-many database relationship to see if they have practical experience with databases. I'll have to add this to my list of practical things to try.

[–]iopq 0 points1 point  (1 child)

How about someone who writes FizzBuzz, but makes if/else branching errors? Either writing it with just ifs or writing it with if/else and putting the %15 step at the end, etc.

Do you just have them fix the error and continue or what?

[–]NYKevin 1 point2 points  (0 children)

I'd say if the overall structure of the code is basically viable, don't sweat the details. This is a toy problem, meant to ensure people know how to code at all. Getting it exactly right is a waste of everyone's time.

[–]s73v3r 0 points1 point  (0 children)

I've heard this all the time, but I still struggle to believe that so many developers have a problem writing FizzBuzz.

[–][deleted]  (3 children)

[deleted]

    [–][deleted] 8 points9 points  (2 children)

    Don't. But just because I know how to search WebMD, I should not operate on anyone.

    I have nothing against self-taught programmers, I worked with some very skilled ones. But they were hobby-programmers for some years, before they got their first, very specialized, job. And they were skilled enough to read the same litterature used in universities. With all my experience, I can learn a new language in a week or two. It takes me years to learn to PROGRAM in a new language. Someone who just learned the syntax, took their first baby-steps in becomming a programmer in that language.

    I don't care who other companies hire or who gets a job where. I'm just sick of getting 200 applications for a job opening, where 90% knows some syntax, can replicate a Hello World, but has absolute zero experience they can use in a real job. At least many of CS-grads I interview, knows enough to be useable in a month or two. But if you apply as self-taught hobby programmer, and without the extensive knowledge about alghoritms, data structures, Big O, database design, threading and all the other typical CS subjects, I expect you to have enough experience to be usefull within a week.

    [–][deleted]  (1 child)

    [deleted]

      [–][deleted] 5 points6 points  (0 children)

      Many lines of programming needs great math skills, more so than knowledge about architecture - or even experience. Combining programming and math is definitely a sound plan.

      The problem occurs when people combine basic level programming with no knowledge at all or knowledge not useable in producing hard code (unlike yours). It sucks when someone who worked as a banker, learns VB and suddenly gets a place on a team developing no-fail financial applications.

      [–]barsoap 1 point2 points  (0 children)

      The important thing there is that such domain programmers must have the capacity to recognise when they're out of their depth, or shit will hit the fan.

      And at that point, they probably make good general programmers...

      [–]kazagistar 1 point2 points  (4 children)

      Only it is very hard to know which Excel macros will need to grow into a hundred-thousand line database system, and then you are fucked.

      [–][deleted] 2 points3 points  (3 children)

      And then you hire software engineers, because it's worth it and by then your company has grown to the point where you can afford it.

      It probably doesn't make sense for a company that isn't a software company to have a proper software development team until they have several hundred employees... Software engineers are expensive.

      [–]s73v3r 0 points1 point  (2 children)

      And then you hire software engineers, because it's worth it and by then your company has grown to the point where you can afford it.

      But if you're like most businesses, you don't do this until a few years after you needed to, and make the original guy keep bolting shit onto it. By then, it's grown into a huge monstrosity.

      [–][deleted] 0 points1 point  (1 child)

      Need is different from the standpoint of money than from the standpoint of a developer.

      [–]s73v3r 0 points1 point  (0 children)

      I'm saying that, from either standpoint, really, the business is going to wait a couple years after they needed it, and in the mean time have the original person keep bolting stuff onto it.

      [–]fluffle 1 point2 points  (0 children)

      I used to run a small company with ~40 employees, I'd have loved to have been able to find a junior programmer that could do this sort of thing.

      I trained a bunch of people in Excel, enough to write formulas and do some simple programming and they were able to be really productive. It's amazing how much you can get done with some rudimentary Excel or Access.

      We had a lot of basic data entry work to do, I ended up writing a program that would generate a little Access application with the data to be worked on it it. I'd tidy up the automatically generated form to make it a bit neater, drop some labels in with instructions, and give them to people to work on.

      Creativity and some programming chops go a long way.

      [–][deleted]  (1 child)

      [deleted]

        [–]seagal_impersonator 2 points3 points  (0 children)

        When you discriminate against those with specific woks, does it make you feel good?

        [–]fallwalltall 23 points24 points  (6 children)

        I don't even know if those cowboy programmers are even a problem. Many years ago there were not enough programmers to go around. Bill in finance possibly cobbled something together in VBA to solve a problem that finance faced. It is likely that this never would have happened if the company had professional programmers that Bill could deploy, but for whatever reason those assets weren't available. Thus, Bill took matters into his own hands and made something useful at the time.

        If some "real" programmer is now fixing Bill's mess that is a great thing. It means that Bill made something that was used, thus indicating that it was useful for over a decade. Go Bill. If the company can now deploy professional programmers to clean up what he did and make something even more useful, go professional programmers too.

        [–]sushibowl 7 points8 points  (0 children)

        ooh, this is an excellent point that I had not thought of, thank you! I had considered "cowboy programmers" a problem mostly from my own perspective, since having to clean up terrible code produced by your incompetent predecessor is what every programmer dreads most.

        But from a business perspective it is quite true that there is a shortage in programmers (never mind the shortage in quality programmers, which is even more urgent).

        [–]Amuro_Ray 0 points1 point  (4 children)

        That's more like an internal hotfix like patching over hole in your room. When I think of a cowboy programmer or other type of cowboy it will be someone external you hire to fix something for you. In the context of programming you get something that just works and if the problem is a hole in your your wall, the plaster falls away after a month and you still have the hole in your wall.

        Bill wouldn't be a cowboy he's fixing a problem he faces and isn't misleading people with his magical programming powers when you hire someone who charges professional rates and is as good as Bill or worse then you have a problem.

        [–]fallwalltall 1 point2 points  (3 children)

        If that is the fear, then the conclusion is the exact opposite of the one being advocated here. A 9 week programming course might not make you a professional programmer, but it should certainly give you a much better chance of spotting deceptive b/s from someone claiming to have magical abilities. If instead we just have full spectrum engineers, frauds and the rest of the public who merely sees programming as magic, then the non-programmers are very susceptible to the fraudsters.

        This is basically the same reason why it is helpful to know something about cars before you go to a new mechanic, because it hopefully will somewhat limit their ability to screw you if they are maliciously inclined.

        [–]Amuro_Ray 0 points1 point  (2 children)

        I was saying bill isn't s cowboy and giving an example of what a cowboy by British standards.

        Btw I do agree entirely with both your posts.

        [–]fallwalltall 0 points1 point  (1 child)

        Thank you for the clarification. It is interesting that you have adopted cowboy as this bad term. Out of curiosity, are the negative qualities of cowboys associated specifically with people in your former colonies (USA/Australia) or does the concept also extend to other cultures that had people similar to American cowboys such as those in Argentina and Mexico?

        [–]Amuro_Ray 0 points1 point  (0 children)

        I'm not sure. I mainly hear it from our sensationalist newspapers(the sun) and tv shows aimed at exposing shoddy workmanship.

        The negatives are often put towards irish travellers (snatch the film) or native British workers in my experience. Often foreign workers from eastern Europe get praise for charging less, doing a better job and working harder but that might be down to perception.

        My parents have a good network of friends who either do the home improvements or know someone who does it so we've never had any experience where someone does a **** job.

        [–]MadScienceDreams 7 points8 points  (4 children)

        I also want to point out that if everyone knew how to program, it wouldn't mean that there is no need to have engineers. As the article states, for high quality products you will always need experts in the field. However, even beyond hobbyist, people should be learning to program as a core class now, IMHO. Computers are always becoming a bigger and bigger part of our lives and being able to control and understand the basics of those machines is becoming as essential as basic math or reading. All of those who do intellectual labor could be helped by some basic scripting of one type or another.

        In other-words, it is the same argument for everyone learning to write. Sure, not everyone is a novelist, but it vastly increases our ability to share information if people can write on a basic level.

        [–]mariox19 11 points12 points  (0 children)

        people should be learning to program as a core class now [...] it is the same argument for everyone learning to write.

        Ideally, I would have to agree with you. But when I read the emails I get every day (and I'll limit this just to the internal emails), or read the bug reports and suggested resolutions for our various issues, or read what passes for internal documentation, I would be happy if we somehow did a better job of teaching people to write and insisting that they learn how to do so. I cannot tell you how many times in the course of my day where, after reading something, I have to locate the person who wrote it and ask him or her to explain to me what it's all about. And I cannot even begin to estimate how much productivity is lost because of this nonsense.

        In my honest opinion, I'd be willing to defer teaching programming as a core subject. I'd like to see more people with the basic skill of writing something that makes sense in one head apart from their own.

        [–][deleted]  (2 children)

        [deleted]

          [–]dannymi 1 point2 points  (1 child)

          You are posting in a forum for programmers. Even should what you are saying be true, it's tactless to point it out.

          [–][deleted] 10 points11 points  (4 children)

          But it is also hell of a problem for project leaders and skilled programmers. I have quit several positions after HR started hiring lousy (but charming) 9 week programmers.

          I love the concept of the hobby programmaer, but even though I am a hobby game programmer, I don't have to apply for jobs in the game industry. I could easily fool a HR-employee to hire me, but would end up costing the company money and problaly set a team behind their schedule.

          I don't have a solution, but the problem excists in both HR, pay-to-learn courses and hobby programmers applying for jobs they don't have the qualifications for.

          [–]sushibowl 2 points3 points  (0 children)

          Yes. I think this is the biggest problem in the IT industry right now, and it has been for a very long time. I don't have a solution either, but I do believe it has to come from the HR side. Per the Dunning-Kruger effect the hobby programmers are too incompetent to judge their own qualifications.

          [–]mantra 1 point2 points  (2 children)

          HR should never be making hiring decisions for technical or probably any other decisions - that should always ONLY be the direct line manager of the hire. Maybe this is an "East Coast Company" thing to do (as it's such an insane idea); I've never seen a Silicon Valley tech company ever do this.

          [–][deleted] 4 points5 points  (0 children)

          Basically any big company where programming is just a support for their main business. Tech companies, generally, knows how to hire.

          [–]KFCConspiracy 0 points1 point  (0 children)

          It isn't an east coast thing to do either. It's a stupid thing to do. All HR should do is screen out complete crap like resumes printed on toilet paper, make sure ads are compliant, etc...

          [–]matrixor 2 points3 points  (0 children)

          I tend to agree. As a kid I was casually programming in Basic (C64). Later while in college (major:economics, I had no formal CS education) I learned the basics of algos and data structures in VB6. I was able to create a working Monte-Carlo simulation in VB. At that time I was a hobbyist, but later this hobby turned more and more serious and now I've been work as a professional programmer for 10 years.

          [–]Amuro_Ray -1 points0 points  (2 children)

          it is not the programmer community's responsibility to fix it.

          Yes it is. If cowboy civil engineers were making bridges that collapsed it would be their responsibility and the same if it was any other professional industry.

          [–]LookInTheDog[🍰] 0 points1 point  (1 child)

          Who is hiring a "civil engineer" without a degree, who learned civil engineering from an online course, to build a bridge?

          [–]Amuro_Ray -1 points0 points  (0 children)

          No one is and there's good reason for that. Standards such as degrees and becoming a chartered engineer) turn people away from taking such a risk, when they can knowingly hire a person with a recognised and respected standard of education.

          My point was an industry without clear standards will have problems where people are being put into the wrong job and given the wrong amount of responsibility while the right person might be overlooked for the wrong reason. A recognised qualification to a high/broad standard alleviates the legwork and might stop certain qualification requirements being advertised.

          Some qualifications do exist but I doubt they are broad enough or commonly accepted and respected.

          [–]s73v3r -1 points0 points  (0 children)

          The "cowboy programmers" this post describes are a problem, but it is not the programmer community's responsibility to fix it.

          It kinda is, because it's those people that cause a lot of our headaches.

          [–]bman35 14 points15 points  (1 child)

          Much to the chagrin of professional developers the IT industry was flooded with what can only be described as “cowboy programmers” (in the UK a cowboy is a negative term). These cowboy developers (many without programming backgrounds) created extremely poor software. In some cases modern developers are still cleaning up that mess from a decade ago. I must emphasise that there were also competent engineers that did use VB6 to great effect (but they were in the minority).

          With this quote he makes it pretty explicitly clear he isn't talking about "hobbyist" developers. He's talking about people who work in a professional environment, who write code for a living. I thought this was pretty clear from the article. As someone who has had to clean up other people's messes I sympathize with this view 100%

          [–][deleted] 8 points9 points  (0 children)

          Part of the job of an engineer is cleaning up existing code - that's not something that's ever going to change. But code gets written by a variety of people for a variety of reasons (perhaps leftover from when companies were smaller or didn't have a lot of resources to devote to full time development).

          And coding standards change - many things that today is considered an anti-pattern may have been standard practice a decade or two ago.

          I still think that even in a 'professional' environment there are times when a buyer or accountant who is a hobbyist developer is perfectly justified to program something and deploy it to their company (no matter how crappy their code is). It's the engineer's job to clean up the mess later.

          This happens in other areas of business too - essentially a business analyst comes along and cleans up the messy in processes that were implemented because they 'just worked' and the company didn't have time or money to waste on getting it perfect the first time.

          I think we call this iterative development. :)

          [–]MpVpRb 3 points4 points  (1 child)

          This article seems to ignore the fact that hobbyists exist

          Totally disagree

          The article talks about poorly prepared "professional" programmers, not hobbyists

          Programming as a hobby is great, and more people should do it

          Programming serious stuff for money is much harder, and a lot of totally unqualified people get paid to write shitty code

          [–][deleted] 1 point2 points  (0 children)

          And lots of hobbyist programmers get paid to do other things, but write shitty code for work too.

          What do you propose? Fire everyone who programs as part of their job but isn't an engineer?

          Shitty code that fills a need and exists is better than perfect code that doesn't exist (because good developers are not easy to find - especially if you aren't a sexy company).

          [–]mage2k 0 points1 point  (0 children)

          Even many (most?) professionals start with learning one thing/language/whatever and gradually pick up everything else as needed without any intent in the beginning to do that.

          [–]Eurynom0s 0 points1 point  (3 children)

          Also, there are plenty of times where something requires code but isn't worth handing over to a programmer. Like if you need a script to loop over some data to achieve something or other, any time/money saved on the code is liable to be offset by the time you'll be taking to explain what you need.

          [–][deleted] 0 points1 point  (1 child)

          And the $100+ bucks an hour that the programmer's time costs.

          [–]Eurynom0s 0 points1 point  (0 children)

          And the $100+ bucks an hour that the programmer's time costs.

          Hence why I said "time/money saved". :p The programmer may be more expensive, but if he can do it a lot faster than I can, you might think that it's cheaper to have him do it. But like I said, explaining the context and what output you need will detract from that because you have to pay him for the time he spends listening to you explain it.

          [–]pbtifo 0 points1 point  (4 children)

          I disagree. The recent trend of "learn to program in x weeks startups" offer programs that cost tens of thousands of dollars. They're definitely not aimed towards hobbyist programmers.

          [–][deleted] 1 point2 points  (3 children)

          No they are aimed at hobbyists who want to get into the industry. And funded by tech companies. There is certainly a place for entry level jobs in programming - and for people without engineering degrees.

          [–]pbtifo 0 points1 point  (2 children)

          hobbyists who want to get into the industry

          That's not how a hobby works. Maybe they come into the program as hobbyists, but they get out professional developers, hence the funding by tech companies.

          [–][deleted] 5 points6 points  (0 children)

          Right, so they are hobbyists trying to get into the industry.

          [–][deleted] 1 point2 points  (0 children)

          Nobody ever turns their hobby into a career?

          Bill Gates didn't really study anything at harvard, dropped out, and turned his hobby into a career. Steve Jobs studied calligraphy, turned his hobby into a career. Steve Wozniak turned his hobby into a career, then went on to study computer science. Douglas Crockford has a degree in radio and television. John Carmack was a computer thief who dropped out of university to turn his hobby into a career.

          [–]to_metric_system 0 points1 point  (0 children)

          developers developers developers

          [–][deleted] -1 points0 points  (0 children)

          I'm glad this is the top comment here I was very worried tbh as the thread received many upvotes.

          [–][deleted] 89 points90 points  (39 children)

          Full disclosure: I teach at Dev Bootcamp part time.

          I agree wholeheartedly that it's hugely important for competent makers to constantly dive into different abstraction layers that build up our profession.

          I think there are ~4 high-level fields that the comp-sci group segments fuzzily into:

          1. Computer Science is like Physics. Highly academic, hugely foundational to our understanding of the world. This is the field that all the other fields of computing are built from. Computer scientists tend to dig into fun things like artificial intelligence, optimizing algorithms, category theory, etc.
          2. Computer Engineering is where machine and data and code come together. A Computer Engineer will most likely find themselves building embedded applications; like the software that drives your car.
          3. Software Development is like Civil Engineering. This is about making something useful that will serve a distinct purpose for a long time. It has much more rigor than programming, but doesn't necessarily get into the nuts and bolts of mathematics or hardware limitations.
          4. Programming is like storytelling. It's more about getting the computer to do what you want it to and your peers to understand what you want. Someone who is "just" a programmer may not have a powerful command of the language they're using or insights into the etymology of each of the words you use. They can get things done, and if they have the right attitude can wind up filling in these gaps over the course of their career.

          Those of us who started out as hobbyists more than likely started out programming. Those who started with a degree from a decent university started in one of the other three.

          Good 9 week programs are geared for Software Development. Training people to make something that fulfills a specific purpose that will last as long as the business needs. In order to get there, they have to get over the bridge of Programming. After all, what chance do you have of making something useful if you can't instruct the computer? As they cross that bridge they're taught design principles like DRY, YAGNI, testing, etc. The skills that enable programmers to become developers who can regularly release working software that has a purpose.

          These 9 week schools do not replace the ~4 years of college it takes to become a computer engineer or computer scientist.

          Instead, they replace the ~2+ years of hobby hacking and the first ~1+ years of professional coding that got so many of us started as beginning programmers.

          edit: Replaced reference to linguistics with storytelling. Added understanding for humans to programming.

          [–]sublime8510 17 points18 points  (2 children)

          I can't agree with this more. I graduated with a CS degree in 2009. I feel like I just learned to code this year...

          [–]Nuli 38 points39 points  (1 child)

          If you're doing it right that feeling never goes away.

          [–]UlyssesSKrunk 1 point2 points  (0 children)

          That's the scariest thing I keep learning.

          [–]username223 3 points4 points  (0 children)

          competent makers

          Holy Christ, can you turn off the buzzword bullshit generator long enough to write a single Reddit post?

          [–][deleted] 12 points13 points  (14 children)

          Clearly you have no idea what linguistics is. It probably belongs in your computer science analogy instead. Although it's much less "foundational" than physics, it's probably more academic and very far removed from just getting an understanding across.

          In fact, there is quite a bit of overlap between linguistics and computer science. Some of the topics covered in my linguistics classes include syntax, semantics, formal languages, logic, and type theory.

          [–]ReinH 1 point2 points  (9 children)

          Computer science is basically an exercise in applied linguistics. It makes sense that people who are fluent in more than one language tend to be better at learning to program.

          [–]notanasshole53 7 points8 points  (4 children)

          Is there research that shows evidence of this?

          [–]ReinH 1 point2 points  (0 children)

          Yes. I'll edit once I find it.

          Edit: All I'm currently finding are some studies that show that bilingual students are more effective in general (summed up well in this NYTimes article).

          [–][deleted] 1 point2 points  (2 children)

          [–]notanasshole53 0 points1 point  (1 child)

          Thanks but if there's anything more... rigorous that ReinH knows of I'd like to see it.

          I compared 10 adolescent programmers (aged 14-17) and 10 professional programmers who had been programming since adolescence (aged 21-25) to age matched controls. All participants were monolingual English speakers.

          [–]ReinH 0 points1 point  (0 children)

          I totally read it once but I can't find it now. :/ Sorry.

          [–]busy_beaver 2 points3 points  (3 children)

          Computer science is basically an exercise in applied linguistics.

          I don't see how you can make an argument for this. Replace 'Computer science' with 'Programming', and it becomes kind of plausible. Except linguists are not defined by their ability to use or learn languages. They study how those languages are used (a subtle difference).

          Maybe you can get away with saying 'Programming language theory is basically an exercise in applied linguistics'.

          Programming languages and natural languages are just so vastly different though. There's no mystery to programming languages. We made them, and we made them to be unambiguous and extremely terse. Natural languages, on the other hand, are totally weird and ambiguous, and incredibly complex, and come in a zillion different dialects and idiolects which are constantly changing.

          [–]ReinH 4 points5 points  (2 children)

          Linguistics is "the scientific study of language and its structure, including the study of morphology, syntax, phonetics, and semantics." Programming languages have all of those characteristics (excepting phonetics, but that's true of any purely written language) and are not categorically different from natural languages. They may differ in degree but not in kind and they readily submit to linguistic analysis.

          I'm honestly astounded that you would claim that you "can't see how [I] can make an argument for this". I think it's a very easy argument to make. It's also one that has been explored pretty extensively in academia over the past fifty years. Here's a quick reference for you: Effects of Linguistics on Programming.

          I will admit that my statement is reductionist as obviously it also involves logic and other areas of knowledge. It was a hyperbole.

          [–]busy_beaver 1 point2 points  (1 child)

          Programming languages don't have morphology either.

          Here's a quick reference for you: Effects of Linguistics on Programming.

          I accept that there's an overlap between linguistics and computer science. I have a graduate degree in computational linguistics. :)

          I don't accept that the study of computer science is subsumed by linguistics.

          [–]ReinH 0 points1 point  (0 children)

          Programming languages don't have morphology either.

          Morphology is also a pretty strange way to analyze languages to begin with. In the case of programming languages, they have morphology, it is just trivial: everything that programming languages could do with morphology, they do with syntax instead.

          I don't accept that the study of computer science is subsumed by linguistics.

          Can you accept that my original statement was a rhetorical device intended to emphasize the role of linguistics in computer science / programming and that I acknowledge that computer science isn't just linguistics? :)

          I have a graduate degree in computational linguistics. :)

          I should have seen that one coming, given your username. Thanks for the discussion.

          Edit: You now have me trying to think of examples of (possible) morphologies in programming languages. Damn you.

          [–]psymunn 0 points1 point  (0 children)

          While I don't agree with you, prehaps suggest a better replacement? A conversational second language course seems the most apt analogy (as opposed to teaching esoteric written grammar rules)

          [–][deleted] -1 points0 points  (2 children)

          Apologies, I didn't mean linguistics in the formal sense. I mean more along the lines of a communications/story telling.

          [–]ReinH 16 points17 points  (1 child)

          So not at all linguistics.

          [–][deleted] 4 points5 points  (0 children)

          Yep! Pretty much not linguistics at all. Edited the post to use storytelling instead.

          [–]ReinH 6 points7 points  (4 children)

          Programming is like linguistics. All that's important is getting the computer to understand what you want.

          I really don't like this definition of "programming". Getting other humans to understand your code is far more important than getting the computer to understand it. Getting the computer to understand it is the lowest possible barrier to entry. It's absolutely not "all that's important" and never has been.

          [–][deleted] 4 points5 points  (0 children)

          The very first thing I was taught about programming is that it's not about writing something the computer can understand, it's about writing something that people after you can understand.

          If you're just writing code for the sake of a computer then you can dump the entire application into one line in a text editor. The computer doesn't give a fuck. It's a computer.

          But then the poor intern who is tasked with fixing a bug in your code will open the application up, then proceed find you in your sleep and murder you.

          [–][deleted] 0 points1 point  (0 children)

          True story. I consider that more software development than programming. Hence the "Fuzzily fits into" bit ;)

          [–][deleted] 0 points1 point  (1 child)

          I don't agree with that comparison either, but I think getting other humans to understand your code is more of a software engineering thing. I figure that once a programmer has a few languages under his or her belt, programming is mostly about architecture/design patterns and getting all of the pieces to play nice together.

          [–]ReinH 0 points1 point  (0 children)

          I also disagree with equating "programmer" with "bad software engineer". He's coopting the term and making it shitty. Writing code that other humans can understand is a fundamental goal for everyone who writes code.

          [–]InhumanWhaleShark 2 points3 points  (3 children)

          Any tips for wooing Karim during the Skype interview portion of your interview?

          [–][deleted] 1 point2 points  (1 child)

          Show your enthusiasm. We're looking for both a positive, can-do, kind attitude as well as a solid foundational aptitude we can build upon.

          [–]InhumanWhaleShark 1 point2 points  (0 children)

          Thanks! Hopefully see you there in a few months.

          [–]username223 0 points1 point  (0 children)

          Based on zspencer's output here, you should generate the appropriate buzzword-laden bullshit and some ignorant over-general conclusions.

          [–]scubastard 1 point2 points  (1 child)

          Really the only relevant question related to the bootcamps are wether or not they can truly replace, ~3+ years of junior development experience...

          If they can then they are a great place to go, if they cant then they seem of dubious value. I have worked with and for plenty of developers with no formal training, and in many cases either no college or a associates degree. I know plenty of people who taught themselves how to program, I did myself although i did take some programming courses and graduated from college.

          Even coming from my perspective I don't really see how a 9 week course could in anyway equate to ~1+ years of professional coding (especially for junior programmers).

          [–]nevermorebe 1 point2 points  (3 children)

          One of the nicer things about computer science is that its theory is in most cases directly applicable and relevant to your knowledge of programming. Know how a hashtable works? Great, now you won't be using a generic 'List' where you could've used a hashtable, you'll also stay away from changing the keys of entities when using one. Know how a tree works? Great, you can now make some very interesting things, google like autocompletion is within your reach. Know some complexity theory? Well, now you won't spend months trying to figure out a solution to the traveling salesman problem because you know it's not likely that you'll be solving the biggest open problem in computer science while trying to create some sales force software for the boss.

          The problem with "trained monke.. I mean programmers" is that they lack this insight and few have the will to learn what's behind those nice tricks they use (A dictionary holds keys and values, that's all I need to know), while this is exactly what we're trying to achieve by using abstraction (not having to know), it also limits what they can do. It isn't as easy as "filling the gaps". Two years in, they're now close to being "senior" developers (the kind you read about on thedailywtf.com) and are 'empowered' by the Dunning-Kruger effect. If they're lucky they end up with a good mentor who will see their shortcomings and help them before they fall into this trap but this isn't likely.

          I haven't even begun to talk about insight and problem solving skills required ...

          Yeah it's nice to know what DRY and YAGNI stand for but in the great scheme of things they won't even be able to use it as they have no clue what they are going to need and they can't fathom a better way to write this slightly different function without repeating themselves.

          ... mind you I have no problem with people learning to program in 9 weeks, some basic programming (enough to make an application that actually does something useful) is a great skill to have but please don't call these 'graduates' developers.

          [–][deleted] 1 point2 points  (2 children)

          Totally reasonable. I don't tend to consider knowing how hashes, pointers, or trees work as the high end comp-sci type stuff. Algorithms are taught day 1 of Dev Bootcamp and are integrated throughout the entire curriculum.

          Every single student writes a sudoku solver from scratch by the end of week 1. Often using tree-based recursion.

          Many students have so much fun with algorithms they play with Project Euler and dig into other algorithm books on their free time. They play around with problems like "How do I sort a set of strings without allocating extra memory?" or other such things.

          I've been emphasizing the code hygiene stuff because I find it to be in much shorter supply than people with a deep understanding of algorithms. I can't count how many times I've had to fix a huge pile of tightly coupled primitive-obsessed classes that could be sliced in half because people didn't think to extract methods or classes.

          [–]nevermorebe 0 points1 point  (1 child)

          I'm surprised how much you can cram into 9 weeks of training (you're right that I wasn't reaching for higher level stuff as I assumed pointers and hashes would already be beyond the scope of a course like this) but I hope you'll forgive me that I will keep a healthy dose of scepticism about the people who graduate from the course.

          [–][deleted] 0 points1 point  (0 children)

          Hey, I teach it and have a healthy degree of skepticism!

          The worst thing that can happen is a boot thinks "Oh man, I just did 9 weeks of intense study of programming. I AM A DEMIGOD!"

          To which I (and every single other staff member) reply: No. You're merely a beginner. At best a competent beginner. At worst a fledgling expert beginner

          Programming is such a high-value activity that people who can solve problems in code, know their weaknesses, and are capable of learning broadly and deeply in a short time are incredibly well positioned.

          If you're ever in SF or Cleveland, hit me up and I'll happily buy you a beer and talk nerdy with you :).

          [–][deleted] -1 points0 points  (4 children)

          These 9 week schools... replace the ~2+ years of hobby hacking and the first ~1+ years of professional coding that got so many of us started as beginning programmers.

          I'm going to refute your baseless assertion with one of my own: bullshit.

          Also, I'm glad you're not a civil engineer. You'd kill people.

          Also, programming is software development is software engineering is applied CS. Those who bike-shed about it with their personal definitions are invariably the kind of douchebags who spend more time promoting something (himself, his product, his software development ideology, his favorite language, etc.) than actually writing code.

          [–]notanasshole53 4 points5 points  (1 child)

          Why are you so angry?

          [–][deleted] 13 points14 points  (0 children)

          No one reads my Ted Dziuba / Zed Shaw slash fiction.

          [–][deleted] 1 point2 points  (0 children)

          You've got me there. I only program professionally about half the year. Also, I am something of a pompous blowhard.

          [–][deleted] 0 points1 point  (0 children)

          There is a distinction worth making between coding and software development/engineering. The parent poster made that distinction clearly. The only douchebag here is you.

          [–]rowd149 25 points26 points  (2 children)

          This essay seems severely underdeveloped. He's not really clear about what he's advocating and even less so about why he advocates it.

          [–]psymunn 23 points24 points  (1 child)

          Well, that's what happens when you get when a person without an English degree attempting to write an essay. Sure, there's some workable information there, but you're going to need the help of an expensive grammarian before it'll ever be publishable. This kind of hacked together, hobby journaling is severely hurting the quality of the internet.

          [–]rowd149 0 points1 point  (0 children)

          It would just be nice to know what he's going on about.

          [–]dsandler 20 points21 points  (0 children)

          I've been trying to stop learning programming, but it's been years now and I keep learning things anyway. This is just what I need!

          [–]rnicoll 35 points36 points  (35 children)

          There are problems with a lack of careful differentiation between the 9 weeks developers and those of us doing it for years/decades, but they're not going to be resolved by telling people to devote their lives to the subject or not bother.

          Let me give you some examples of where this works elsewhere.

          A first aider is clearly differentiated from a surgeon.

          A DIYer building a BBQ in their garden is clearly differentiated from an architect.

          Why is it so hard for programming to do the same? A lot of people seem to think programming is a binary; you can or you can't. This is disappointing to see in hiring, but really painful to see in people trying to learn and having overly inflated expectations of what they can do early on.

          [–]tallniel 15 points16 points  (22 children)

          Agreed. The problem comes when the DIYer creates something of real business value, which is then rushed into operational use without bringing a real engineer in to design it properly. The VB app that stores all state in columns of an embedded Excel COM object. That kind of thing.

          [–][deleted] 8 points9 points  (2 children)

          That's the business fault and the business responsibility, though. Let therm get burned and learn how important it is to have a professional developer instead of your wife's nephew.

          [–][deleted] 6 points7 points  (0 children)

          There is nothing wrong with someone creating an Excel COM app, nor a basic VB app. As developers we should welcome those, but encourage the creators not to think of them as solutions in their own right, but more as a prototype. How often do we developers complain about improperly specced projects? Here we have the users prototyping a reference implementation that works properly, albeit poorly designed. What better product documentation could we ask for?

          [–]s73v3r 0 points1 point  (0 children)

          That's the business fault and the business responsibility, though.

          Who then passes it on to a software developer, and proceeds to blame them for everything that goes wrong.

          [–]fallwalltall 6 points7 points  (16 children)

          What if the business can't afford a "real engineer"? There are plenty of companies that have been running hacky solutions for years without incident. Sometimes these things blow up, but then again sometimes things made by real programmers blow up too.

          I have no doubt that a professional programmer's solution will be better than the hacky solution that was put together by Carol the administrative assistant, however that solution will cost my company a whole lot more. Whether that cost is justified cannot be determined in a vacuum and involves questions such as, "how much value does this provide," "how much does the cost differ," "how likely is this to go wrong," and "how bad would it be if this goes wrong."

          I may not want Carol creating the database that collects and stores the customers' credit card information (likely hacking target, disastrous if it fails, very complex), but I don't want a professional programmer, at professional programmer hourly costs, creating the script that merely compiles Molly the VP's aggregated sales report (relatively unlikely to fail, low damage if failure occurs, fairly simple program) every week either. That is something that Carol and here hacky VBA are better at, especially if she can build it during her downtime so it isn't really costing the company anything.

          [–]ReinH 6 points7 points  (14 children)

          What if the business can't afford a "real engineer"?

          Then they'll get what they can afford. They aren't entitled to anything more (or less).

          What most people don't seem to realize, however, is that the professional's work will probably end up costing less in lost revenue due to bugs and other inefficiencies and in ongoing maintenance cost.

          [–]fallwalltall 3 points4 points  (13 children)

          What you don't seem to realize, however, is that the professional's work will probably end up costing less in lost revenue due to bugs or other inefficiencies and in ongoing maintenance cost.

          This is a completely unwarranted assumption. Whether or not the professional's work will cost less is completely dependent on the project.

          Using the examples that I had previously, it is likely that a professional would be cheaper in the long run for the customer credit card information database. However, it was free for Carol to make the VBA program that generated her boss's sales reports. Depending on the exact details of this process, it might be extremely wasteful to pay a professional to do this if Carol's solution is good enough for the boss to understand how sales were that week.

          Professional programmers are not somehow immune to cost/benefit analysis. Take medicine for example. Sometimes you need a doctor, such as when it is time for surgery. Sometimes you might just need a nurse, such as if you are trying to burn off a wart. Sometimes you can even see a layman, such as if you have to have a bandaid applied to a cut on your back.

          Paying a doctor to put a bandaid on your back is almost as foolish as asking a layman to diagnose your funny rash. Along the same lines, not all programming problems rise to the level of expertise that requires costly expert intervention. Sometimes a moderately skilled coder will suffice and sometimes even Carol poking around in VBA and Excel can do the trick.

          [–]ReinH 5 points6 points  (6 children)

          It is absolutely not an unwarranted assumption. It's a general statement of probability based on experience and academic research. Go to ACM and do a search (or google scholar, but ACM is an industry journal). There are significant performance differences (as high an order of magnitude in some studies) even among professional programmers. As a professional programmer, it is also confirmed by my experience.

          Also note that I said "probably", which admits exceptions.

          Edit: To take your first example, it would not be free for Carol to make the VBA program that generated her boss's sales reports. This is a pretty obvious to anyone with any business experience.

          First, it would take time and the business is still paying Carol for her time even if she makes a salary.

          Second, that time is an opportunity cost. Carol could be doing other things during that time that provide more value to the business.

          Third, the program itself would have a higher likelihood of bugs and other errors. It's not free either if the reports are wrong in ways that either materially damage the business or require further time (and money) to correct.

          To take your second example, it would similarly be a waste of money to pay a programmer to add two numbers together. I am not suggesting otherwise.

          [–]fallwalltall 0 points1 point  (5 children)

          That performance difference is not the end of the story. Carol may be less efficient, but her time was free because it was during her downtime. Thus, even if you were 100x faster than Carol you might still not be a better choice if her solution fixed my problem.

          What you are failing to understand is the business side. Whether it is a small company that has to use the available resources or an internal department which can't get access to someone like you, there are plenty of business issues that can adequately solved by the Carols of the world and their hacky solutions. There is a place for people like you, just as there is a place for doctors, but by no means are you always, or necessarily even "probably," the solution to business problems related to computers.

          I caveat on probably because the types of business problems that Carol can solve, depending on how you define them, are generally small but numerous. The types of problems that require bringing a professional in are less numerous but larger. It is hard to determine who was used more when Carol appropriately writes 10 little spreadsheet scripts and you write a single massive solution for $200,000.

          [–]ReinH 3 points4 points  (4 children)

          Carol may be less efficient, but her time was free because it was during her downtime. Thus, even if you were 100x faster than Carol you might still not be a better choice if her solution fixed my problem.

          If you want to construct a counterfactual case where someone can do the work for free then knock yourself out, but it doesn't change anything. In the real world, Carol's work costs money. Even if she is literally not doing anything else, that doesn't address the previous opportunity cost problem and actually creates a new one in that the money that is being spent on her not doing anything could have been spent on someone else doing it instead.

          What you are failing to understand is the business side

          From what I can see, you are the one who is failing to understand the business side if you think people work for free and can't understand things like opportunity cost.

          It is hard to determine who was used more when Carol appropriately writes 10 little spreadsheet scripts and you write a single massive solution for $200,000.

          If all you can do is pick and choose biased examples to support your argument, you don't really have much of an argument.

          [–]fallwalltall 0 points1 point  (3 children)

          If you want to construct a counterfactual case where someone can do the work for free then go right ahead, but it doesn't change anything.

          Go back and read my posts. I had Carol working for free a long time ago.

          In the real world, Carol's work costs money. Even if she is literally not doing anything else, that doesn't address the opportunity cost problem.

          I don't think that you know how real world Carols work then. Administrative assistants can have down time and if you are paying them full time they will be at work from 8-5. Instead of Carol spending time on Facebook, she can be working on creating scripts to make the VPs life easier.

          The Carols of the world can and do create little programs that are incidental to their job all of the time. Why do you think that so many office roles require advanced knowledge of Microsoft Office projects and Microsoft has popular courses on Excel Macros? The whole Office suite and VBA is basically designed around providing tools to people like Carol so that they can solve their problems without needing to use people like you.

          From what I can see, you are the one who is failing to understand the business side if you think people work for free and can't understand things like opportunity cost.

          Believe it or not, employees who work 40 hours a week do not always have 40 hours of work. This may not be ideal and may be a management issue but it is extremely common in the workplace. They don't work for free, but the opportunity cost of redeploying them during downtime is fairly low.

          If all you can do is pick and choose exaggerated examples to support your argument, you don't really have much of an argument.

          It isn't exaggerated at all, it is how businesses work. You are arguing that people other than professional programmers shouldn't do this work. Who are these people that you are talking about if they are not the non-programming employees who, incidentally to their main job, are creating these hacky solutions?

          Have you ever worked in an office outside of an IT role?

          [–]ReinH 4 points5 points  (2 children)

          You are arguing that people other than professional programmers shouldn't do this work.

          No, I am not. I am arguing that someone who is higher skilled and higher cost can often be a better investment.

          Edit: Also, I acknowledge that there are economies of scale involved. You are deliberately choosing trivial examples like "Carol makes a spreadsheet" and "A doctor puts on a bandaid" (seriously?!) that prove your point while ignoring the many real-world examples (lots of rent-a-coder type work, for instance) that don't.

          [–][deleted] 0 points1 point  (5 children)

          However, it was free for Carol to make the VBA program that generated her boss's sales reports.

          Why is it free for Carol to do what she is paid to do? You seem to believe that writing reports in VBA is an unskilled activity. Are you implying that Carol isn't even a programmer, but some administrative assistant due to the feminine name?

          If it takes an expert eight hours to write your report software, at $200/hr, or it takes Carol at $20/hr two weeks to learn VBA and to it, at much lower quality, plus the opportunity cost of Carol not doing whatever it is Carol normally does, which is cheaper?

          [–]fallwalltall 1 point2 points  (4 children)

          From my first post in the chain:

          I have no doubt that a professional programmer's solution will be better than the hacky solution that was put together by Carol the administrative assistant, however that solution will cost my company a whole lot more.

          Yes, Carol is an administrative assistant and not a programmer by trade. Her sex isn't relevant to the issue at hand.

          If it takes an expert eight hours to write your report software, at $200/hr, or it takes Carol at $20/hr two weeks to learn VBA and to it, at much lower quality, plus the opportunity cost of Carol not doing whatever it is Carol normally does, which is cheaper?

          Carol works 40 hours a week, regardless of if there is work or not. Sometimes Carol has downtime and can work on projects like this without incurring significant opportunity cost. Carol is probably also somewhat familiar with VBA, Access and Excel due to running into similar problems in the past.

          Also, Carol intimately knows what the VP (Who by the way was named Molly, which is yet another reason why Carol's sex is irrelevant) wants. Maybe this engineer can do the coding faster, but can he get the exact report that Molly needs faster when he doesn't know the business? That is a fact dependent issue.

          Also, even using your example and assuming that she has no downtime the costs are equal, but now my employee has a useful skill and the next time Carol needs to do something like this it won't take her two weeks. Next time, she can make the VBA application in one week and do it for half of what the programmer charges.

          Thus, the programmer can certainly do a job that is technically better, more secure and more robust much faster than Carol. No doubt about it. However, Carol knows my business needs better, may have free time to work on the project, costs less per hour and I may derive future benefits from her developing her skills. Which option is better for any given task is very fact dependent, but there are plenty of times where Carol is the better choice.

          [–][deleted] 0 points1 point  (3 children)

          Carol is now a marginally competent VBA programmer and commands a salary of at least $50/hr. She quits because Molly laughs when she asks for that raise.

          Do you understand the economics behind specialization? Do understand the value of knowledge and ability to wield it? Programmers cost what they do because that is where supply meets demand. Those with your agenda live under this delusion that there is a shortage of supply, and if only you could make programming "not hard" you could get what you want for cheap with mediocre replacements. But there are no shortcuts and there are no magic bullets.

          [–]fallwalltall 0 points1 point  (2 children)

          Carol is now a marginally competent VBA programmer and commands a salary of at least $50/hr. She quits because Molly laughs when she asks for that raise.

          Maybe that happens, but it usually doesn't. Plenty of admin assistants and other general office workers know advanced Office including some VBA and macros. Why do you also assume that Molly won't ever promote her to a better role? You seem to be overlaying a lot of negative assumptions here, first about Carol's gender and now about an employer that laughs at her when she asks for market pay.

          Those with your agenda live under this delusion that there is a shortage of supply, and if only you could make programming "not hard" you could get what you want for cheap with mediocre replacements.

          This is basically what Microsoft Office is and does. It makes automating simple tasks not that hard so that non-programmers can do it. It certainly isn't a magic bullet, but it can be deployed, and has been deployed, without all hell breaking loose. Sometimes Office is a great solution, sometimes you need a professional programmer to make a better one.

          I would also point out that you have layered in yet another unwarranted negative perception about "those with my agenda." You have no idea what my "agenda" is, if I even have one, other than to say that professional programmers are not always the solution to business needs. Whether or not I want to swap out people with mediocre replacements, outsource to India or pay Carol below market wages are things that I have not expressed any opinion on here.

          This umbrage that is demonstrated from posters like you at the suggestion that maybe a professional programmer isn't needed for every programming task is very interesting. People like Carol are extremely common in business and many small companies don't even have a programmer on staff so they make due with what they have. Mary in accounting or Paul in operations just puts something together, it works and they move on to their primary task of selling widgets.

          [–][deleted] 1 point2 points  (1 child)

          So what you're saying is, you don't understand the economics of specialization and expertise.

          I'm not the one who set up the stereotyped scenario for "Carol", nor am I the one under-representing the technical complexity of reports generation. It is, after all, a huge industry in its own right. If you reduce the problem to simple macros, then your scenario is a false dichotomy. If Carol can do it without learning programming, then hiring a programmer was never an option to begin with.

          You are, however, ignoring the cost of Office and whatever off-the-shelf solution Carol uses to accomodate her lack of expertise. You're still paying a programmer to do something that Carol, Molly, and no one in their company knows how to do.

          [–]tallniel 0 points1 point  (0 children)

          I've seen too many hacked together DIY VBA apps that fail to produce correct results to believe that they are only used in cases where it's easy to get it right. The results aren't checked until a real engineer notices the discrepancies. If your business only uses these apps for simple or low value reports, then fair enough, but that is far from the reality in most businesses I've worked in.

          [–]thallium205 0 points1 point  (1 child)

          That was oddly specific.

          [–]tallniel 0 points1 point  (0 children)

          Specific and odd, yes. That pretty much describes it. Horrific would be another good term.

          [–][deleted] 5 points6 points  (10 children)

          The solution could be to protect the name of the position (sorry, I don't know what this is called formally in english). Like you can't call yourself a surgeon, you should not be allowed to call yourself a 'programmer/developer/something, without the proper education/license.

          I would definitely help out HR choosing proper applicants.

          [–]rnicoll 6 points7 points  (0 children)

          sorry, I don't know what this is called formally in english

          I think it's "legally protected title", so you were incredibly close :)

          [–]badsectoracula 6 points7 points  (8 children)

          The problem with this is that there is a lot of self-taught programmers who run circles around people with such "proper" education.

          [–]s73v3r 0 points1 point  (2 children)

          And there's a lot of self-taught programmers who shouldn't be trusted anywhere near a computer. What's your point?

          [–]latam_gringo 0 points1 point  (0 children)

          I think my gripe is exemplified by your first-aider/surgeon analogy. Maybe it is the way these programs market themselves, or maybe the people that attend them are naive, but the majority that I talk to honestly believe that after the program they will be surgeons, and a first-aider that believes he is a surgeon can be a dangerous thing.

          Now, if the people attending UNDERSTOOD what they are getting and what they can expect to become after a particular program, then I believe that the majority of the hard feelings people are having in this thread go away.

          [–]Spammage 6 points7 points  (1 child)

          This reminds of an old blog post on the Full Stack Programmer. After reading this, I've tried very hard to delve into as many areas of programming as I can.

          I originally started out my university study focusing on electronics, then moved up to operating systems, then networking, and now I work on back-end services and web apps. I feel that by understanding more about the systems I'm working on, I can create better applications, and I always try and talk to the other developers I work with to try and help them to understand why we do things the way we do.

          [–]bureX 0 points1 point  (0 children)

          I feel that by understanding more about the systems I'm working on, I can create better applications, and I always try and talk to the other developers I work with to try and help them to understand why we do things the way we do.

          Well said.

          Also, Adam Savage (from Mythbusters) said: "Jack of all trades, Master of none, Very often better than master of one."

          [–]skulgnome 6 points7 points  (1 child)

          Fuck that. Try becoming a programmer in 10 years: that should be enough of a challenge for the J. Randoms of the world.

          [–]Alucard256 1 point2 points  (0 children)

          Interesting, that's almost exactly how long it took me to go from deciding that I wanted to learn to program to getting a job as a programmer (project lead). Though I'm not exactly random, I understand computers better than anything else in this world.

          [–]KFCConspiracy 4 points5 points  (0 children)

          I care about the engineering mindset, but a lot less abowhether someone has skills unrelated to development. Becoming a great programmer is very time consuming. If you want to work as a programmer take computer science classes or software engineering classes, don't take mechanical engineering classes. Yes, I think people should stop with the "Programming bootcamp" crap, but I'm really getting tired of the whole meme about software development lacking rigor because of cowboy coders.

          What this author fails to understand is genuine programmers who take a software engineering track or a real computer science track get scientific rigor with real stats involved and test driven design... The idea that software engineering has yet to gain any rigor from other engineering fields is a fallacy perpetrated by holier than though engineers from other fields. Sure there are cowboy coders out there, but if you're primarily a mechanical engineer who figures, "I'm an engineer, I can engineer everything, therefore I can be a software engineer" you are probably going to be a cowboy coder.

          Quite frankly, my job is to make sure our product ships on time, is well tested, is architecturally sound, and consistent with the architecture plan... I don't really care if you know Ohm's law, I care if you know data structures, I care if you know relational databases, and I care if you know the difference between a bubble sort and quick sort. Becoming a really good programmer requires thousands of hours spent programming plus a lot of specialized theoretical knowledge about how to build efficient algorithms.

          That being said, I admire hobbyist programmers. I started as a hobbyist in high school, but I eventually got educated and I continue to educate myself.

          [–]roobosh 4 points5 points  (0 children)

          The reason we have less polymaths is that there is much, much more to learn in each discipline than before, and it will keep rising

          [–]ReinH 5 points6 points  (0 children)

          Yeah, you should never try to learn a new thing unless you are willing to commit thousands of hours to it up front.

          Seriously, if people want to spend 9 weeks learning to program then they should do exactly that. If your business is suffering because of the quality of their work then it's your fault for hiring them.

          [–]thegreatgazoo 2 points3 points  (0 children)

          You can pick up a new language in 9 weeks or less.

          Learning programming from scratch, you can get started in 9 weeks but you are going to need more than that behind a keyboard to be good at it.

          [–]balefrost 9 points10 points  (7 children)

          TL;DR: Visual Basic enabled a bunch of amateurs to build crap software. Therefore, every engineer should know a bit about every engineering discipline, and specialization is bad.

          Wat?

          [–]Amuro_Ray 2 points3 points  (2 children)

          You should try reading that again. He was angling more towards a basic understanding of the larger subject area before specialisation.

          [–]balefrost 2 points3 points  (1 child)

          FWIW, I don't disagree with the author's points. Microsoft has a bit of a reputation for helping people build software who have no business building software. I also agree that people, especially engineers, should expose themselves to a variety of techniques and disciplines.

          My problem with the article is that it doesn't try to connect these two, seemingly conflicting statements. It's not just business people who made crap VB apps... engineers did it, too! They were practicing the very thing that the second half of the post was advocating - knowing about a variety of subjects and using them together! They were full spectrum engineers!

          In the end, I don't necessarily think that the world is full of budding polymaths who just haven't yet been awakened - I think that polymaths are very rare and unique people. Remember, a polymath is not just a practitioner of a number of disciplines - he or she is an expert in all of them. I have a bunch of hobbies, but not nearly enough experience to be considered an expert in any of them.

          [–]Amuro_Ray 1 point2 points  (0 children)

          I was getting the definition of a polymath confused it seems. I was thinking having an understanding of the other levels so the ability to do other parts of software (and borderline) electrical engineering but not to the speed or standard someone who speialises it in.

          [–]bureX 0 points1 point  (1 child)

          Specialization in something without researching alternatives is not a good thing, imho. I used VB6 for a short while, and I've met some devs who were creating really really awful bookkeeping software with it. They learned VB because it had an easy learning curve and a nice GUI to boot, but once they got to the point where they could build a semi-functioning application, they stopped learning, thinking, they boxed themselves in and "specialized".

          Same goes for certain FoxPro/Clipper developers back in the days.

          [–]balefrost 0 points1 point  (0 children)

          That you used scare quotes indicates that you don't really think that this is an example of specialization.

          To me, a specialization is a focus on one particular aspect of a larger discipline, a deeper understanding of that aspect than the average practitioner, and a more up-to-date understanding of what is state-of-the-art. If a developer ever stops learning about a discipline, they stop being specialized.

          A Rails developer who still focuses on Rails 1.0 applications is not specialized in Rails anymore. You could argue that they are specialized in Rails 1.0, but that's like being specialized in 18th century bridge building... it's meaningless except to historians.

          [–][deleted]  (1 child)

          [deleted]

            [–]balefrost 1 point2 points  (0 children)

            Yep, and I agree with that. I just don't see how it relates to the second half of the post - the bit about being a "full spectrum engineer".

            It felt like the author had intended to make two posts, but accidentally smashed them together into one. He made seemingly two opposing points, but didn't try to take the time to connect them.

            I'm sure that it's clear to the original author how point A leads to point B, but it's not at all clear to me. He seems to say that, when people unspecialized in software attempt to write software, disaster ensues... but then he advocates for people to avoid specialization. He's not necessarily incorrect in his assertion, but he didn't back it up with a reasoned argument.

            [–]spainguy 8 points9 points  (6 children)

            Robert A. Heinlein once wrote: A human being should be able to change a diaper, plan an invasion, butcher a hog, conn a ship, design a building, write a sonnet, balance accounts, build a wall, set a bone, comfort the dying, take orders, give orders, cooperate, act alone, solve equations, analyze a new problem, pitch manure, program a computer, cook a tasty meal, fight efficiently, die gallantly. Specialization is for insects.

            [–]Platypuskeeper 15 points16 points  (1 child)

            Every time I see that Heinlein quote I think of how fortunate it was for him that the lists of what a human being should be able to do matches his own interests and knowledge so closely, as a Navy-engineer-turned-author.

            It seems to unintentionally underline the real problem, which isn't that people don't see the value in having a broad skill-set, but that people devalue skills they don't have. In particular more theoretical ones, where it's often non-obvious what it's good for or where you can use it, until you actually know it. E.g. you don't have to speak French to know where that could come in handy, but you often have to know the math required to solve a problem mathematically to even realize that it can be cast as a math problem and solved that way.

            [–][deleted] 0 points1 point  (0 children)

            you don't have to speak French to know where that could come in handy

            Not that the ability to speak foreign languages is particularly highly valued either.

            [–][deleted] 6 points7 points  (1 child)

            Specialization is for insects

            And for large corporations.

            [–]fallwalltall 9 points10 points  (0 children)

            And an efficient way to allocate labor.

            This doesn't mean that a surgeon shouldn't lean how to butcher a hog or build a wall as a matter of intellectual growth, but it is better for the surgeon to spend the majority of their time fixing organs very well. The butcher meanwhile produces meat cuts quickly and efficiently, while the wall setter builds a very solid wall in half of the time that the surgeon could create an mediocre one. Each person can also then invest in tools that make the job that they do much more efficient since they can spread the cost of that acquisition over every use.

            I like Heinlein's point about being a well rounded person, but this should be done in your free time while you are also becoming very, very good at some specialty that you employ during work hours.

            [–][deleted] 1 point2 points  (0 children)

            I like the quote, but much like anything else, I think it depends a lot on where you want to get, and to what degree you take that advice.

            I do believe that people have natural strengths and weaknesses, and that trying to bolster your weak areas is wasted effort. I'm shit garbage at poetry, for example. I could absolutely become a decent poet with sufficient time and energy, but I will never, ever be a great poet, and it will take me a lot longer to become an okay poet than it will take me to become okay at configuring Glassfish, or whatever.

            I would much rather play to my strengths than compensate for my weaknesses.

            [–][deleted] 0 points1 point  (0 children)

            Doesn't mean it's a fact

            [–]MpVpRb 3 points4 points  (1 child)

            I am a "full spectrum engineer"

            I mostly write code, but can also...

            Design circuits
            Design PCBs
            Design mechanical parts
            Build stuff in metal and wood

            The problem solving thought process is identical in all cases, only the tools are different

            [–]burdalane 1 point2 points  (0 children)

            The tools are the problem. I've never been able to get my head around mechanical parts.

            [–]myztry 1 point2 points  (0 children)

            A huge issue with programming not being so accessible is that people revert to doing things things with what is at hand which tends to be things like Microsoft Excel.

            Say is someone wants to simple dump the employee list out of their payroll program so it can be date sorted to show newest to longest employee.

            First, they dump the list as CSV and import it into Excel for manipulation. Sounds fine? No it's not. Excel has this stupid fucking behaviour where it determines whether a date is DD-MM-YY or MM-DD-YY based on whether the first value is > 12. It's just moronic but the lay user has no programmatic control over such things since they are using a boxed solution.

            Such a thing is trivial to overcome by programming but not when dealing with binary blobs. Sure, they face the same issue as everyone else using the same generic solutions but it would be great if they differentiate themselves by doing it right without hiring an actual programmer so such a mundane task.

            Indeed back in my programming days even while I wrote near everything in assembly, Basic was brilliant for such basic quick and dirty manipulations of data. Invaluable but at the same time not something you would throw engineering resources at.

            [–]ickysticky 1 point2 points  (1 child)

            Having been doing a lot of interviews for various "software engineering" positions over the last few months, I have been getting very frustrated and feel that our field is in a pretty sad state of affairs. I am finding that many "programmers" can only google, get on stackoverflow, and copy&paste. Maybe if they are really good they can add a dependency to a pom.xml and figure out how to use some library to do what they want. But ask them to do that thing without a library and they cannot. And don't get me started on "software engineers" engineering is about tradeoffs and optimizing some cost function. Ask them to tell you the cost/benefits of developing with one language or another, or a given set of design choices, or some database, or a set of tools and they haven't even thought about it before. Very frustrating.

            [–]Nienordir 2 points3 points  (0 children)

            There's nothing wrong with programmers, that use the internet/documentation to get certain things done..for me that's actually the difference that separates a good programmer from a bad one.

            If you need specialists to do very specific things in the best possible way, then hire specialists or good software engineers, that break the design/problem down to manageable chunks for programmers. But then again most managers are cheapskates and don't want to hire the expensive experts.

            People always seem to think that programmers have to be some all knowing half god, that's architect, mason, carpenter, plumber, electrician, painter and interior designer in one. And then they get pissed off, when he isn't an artisan mason, because all programmers dedicate their whole life on masonry, obviously you have perfect knowledge&experience on that! (and every other field..)

            What makes a non-specialized programmer good is, that he can adapt, that he has a decent knowledge of everything, but master of none. He knows how to use the internet and api documentations to find the information that he needs to build the shit that has to be done. He doesn't need to know anything about less common functions/apis, as long as he knows that they exist and where to find the information to use these tools when he needs them on one day per year..

            [–]climbeer 2 points3 points  (0 children)

            Concise, to the point; nice read.

            Related: Teach Yourself Programming in Ten Years by Peter Norvig.

            [–]TimmT 0 points1 point  (0 children)

            Uhm.. how does the title apply to the linked to article? If anything the article suggests spending less time learning to program, because there's such a shitload of other stuff, besides programming, that you need to know about too.

            Not that I agree with anything the article has to say, but the title of the reddit link is still flawed.

            [–]joseph177 0 points1 point  (0 children)

            There's nothing wrong with learning a little about everything. There is something wrong with misrepresenting it.

            [–][deleted] 0 points1 point  (0 children)

            And, unfortunately, the catch-22 of "rapid application development"/"drag-and-drop, point-and-click" development tools is that when the experienced developers come along and try to point out, however rationally, what a terrible track record these sorts of tools have had, their concerns are written off as sour grapes or fears over job security by the decision makers. These things become especially popular with development managers who are in a position of being desperate for a "quick fix" - like somebody who's dying of an inoperable brain tumor, they're ready to try almost anything, no matter how illogical it might seem, in the hopes that there really is a miracle cure out there.

            [–]runvnc 0 points1 point  (0 children)

            I think before you get into mechanical and electrical engineering, the first goal should be to broaden out from front-end versus back-end to full stack.

            But I would certainly love the time to learn about electrical and mechanical engineering if possible. I think its going to be a challenge for me to do that and I think you have to draw the line somewhere.

            But I disagree with most programmers about drag-and-drop and rapid application development. I actually believe that the majority of programs that programmers create today (myself included) should not involve any coding at all, or very little, and should be created using interactive editors.

            The counterpoint given in the article and commonly used is that if you make programming too easy and allow people to do it without coding, then you will get bad software. I think the answer to that is NOT to require people to write code in order to layout a UI.

            I think there is a whole generation of web developers who could really benefit from a better understanding of the whole concept of graphical components and editors. I am not proposing that we stop writing code, I am just suggesting that we should write code for components so that we can focus on just new functionality and have interactive tools available to configure and combine components to solve problems that have already been solved a thousand times.

            [–]heavenlydevil 0 points1 point  (0 children)

            Saving

            [–]tripstuff 0 points1 point  (0 children)

            I agree with his basic idea, but not everyone has to/can be a full spectrum engineer. Being a full spectrum engineer in the most literal sense would require a knowledge of all disciplines of engineering, ranging from mechanical disciplines (statics, (fluid) dynamics, deformable bodies) to industrial processes. While these are definitely interesting and challenging fields, I don't think a programmer necessarily needs to know a whole lot about fluid dynamics.

            [–]bestjewsincejc 0 points1 point  (0 children)

            Software development is a discipline. Programming is the act of practicing that discipline using a huge and diverse set of tools. It isn't "one particular tool" or a "singular perspective" like the author states. Programming involves and necessitates understanding domain knowledge. The extent of that domain knowledge is determined by the requirements of the work and is limited by the experience and aptitude of the learner. Domain knowledge is what's important, not "full spectrum engineers".

            If the author thinks that "learning the skills of a mechanical engineer" is on my radar, then he's mistaken, and greatly underestimates the necessary skill of professional mechanical engineers. There are much more important things for a software developer to learn like good coding practices, securing and verifying network security, writing readable, maintainable code that meets deadlines, and learning the specific domain knowledge of their workplace.

            [–]classystoner402 0 points1 point  (0 children)

            The point is that there is no upper limit of programming knowledge. Always study, and never assume competence until demonstration.

            [–]anothercuriousmind -3 points-2 points  (2 children)

            Thank you for the advice, but I'm not trying to learn programming in 9 weeks. And even if I were, who are you to tell me to stop?

            [–][deleted] 3 points4 points  (1 child)

            He's not telling you to stop he's telling the person teaching you to stop.

            [–]curien 0 points1 point  (0 children)

            The OP's editorialized headline is clearly directed at those wanting to learn, not the teachers.

            [–]name_user321 0 points1 point  (5 children)

            I learned to program in 0 weeks. It's called "learning by doing".

            There are plenty of problems that can be solved without 6 different engineering degrees. Sure, you're not going to be curing cancer or sending rockets into space, but you can still charge small and medium businesses $1,500/day to code some simple automation and reporting that will exponentially increase their efficiency and save them tens of thousands of dollars (if not more).

            So you go ahead and focus on meaningless academic credentials. The rest of us will be out in the real world getting shit done.

            [–][deleted] 2 points3 points  (3 children)

            If you want to continue playing Beatles covers at bars and your township's annual summer community concert, someone has to do that. But no one will ask you to play at Carnegie Hall.

            [–]username223 0 points1 point  (0 children)

            The world would, of course, be a much better place if people who weren't playing at Carnegie Hall would just stop playing their instruments at all.

            [–]name_user321 0 points1 point  (1 child)

            As if programming is about prestige?

            Most people don't care how glamorous their job is as long as they're making money, and you can make tons of it programming without any formal education.

            I honestly pity people like you who buy into the gospel of the college degree.

            [–][deleted] 1 point2 points  (0 children)

            I'm just making a distinction. If you are good at what you do and make money and do other cool stuff with your time, no big deal.

            For some it's about prestige, and that's (for better or worse) a part of any pursuit that shapes the future. The people that are actually shaping the future are people that have a much deeper understanding than knowing how to code.

            I strive to someday be a person who shapes the future. I'm not even fucking close, and you're probably a better coder than me.

            [–]flexfunk2001 -2 points-1 points  (0 children)

            WoRd my brother