Slashdot Mirror


The Case For the Blue Collar Coder

theodp writes "U.S. tech talent shortage discussions tend to focus on getting more young people to go to college to become CS grads. Nothing wrong with that, writes Anil Dash, but let's not forget about education which teaches mid-level programming as a skilled trade, suitable for apprenticeship and advancement in a way that parallels traditional trade skills like HVAC or welding. Dash encourages less of a focus on 'the next Zuckerberg' in favor of encouraging solid middle-class tech jobs that are primarily focused on creating and maintaining tech infrastructure in non-tech companies. Dash also suggests 'changing the conversation about recruiting technologists from the existing narrow priesthood of highly-skilled experts constantly chasing new technologies to productive workers getting the most out of widely-deployed platforms and frameworks.'"

233 comments

  1. Coding is a skill, not a profession by concealment · · Score: 5, Insightful

    This makes sense to me. Most of the best programmers I've known are guys who otherwise would be installing air conditioners, fixing big trucks or re-wiring buildings.

    Coding is not a profession. It's a skill, which is a part of a series of job descriptions and career paths, but in itself it's a form of knowledge more like what an electrician has than what professionals like architects, doctors, lawyers and assassins must know.

    Apprenticeship is an excellent idea since most of the "best practices" can't be taught at a school, and apprenticeship allows people with applied skills to shine, instead of schools where those with excellent detail memorization shine. Most of the best programmers I know either never went to school for it, or didn't do all that well at school.

    Bring back the hacker aesthetic. Professions are for those who want to super-specialize and master specific high-level skills. Hacking is something anyone with the gumption and dedication can do. As the world expands into mobile devices, ordinary people are writing code every day.

    That being said, CS needs to find a new career type that might belong to professions. I suggest "product architect" (like Steve Jobs) and "total systems integrators" (like what the Google guys do, interoperability) for those who will need college degrees or equivalent and a professional mindset.

    1. Re:Coding is a skill, not a profession by Anonymous Coward · · Score: 2, Interesting

      That's all well and good until you find out they've been using floating point for currency calculations, and they can't figure out why their bubble sorts are so slow.

      I've worked with programmers with associates degrees. Some bad; some good. I'm not entirely against them, but I would not want an entire team made up of them. They have huge blind spots that CS grads don't have.

    2. Re:Coding is a skill, not a profession by mikael_j · · Score: 5, Insightful

      And I've seen guys with Master's degrees in CS and systems science using floats for currency calculations. I've even been the one to clean up after them, despite the fact that I dropped out of college and by the standards of some people should be the one using hash tables where I should be using lists, floats where I should be using decimals, shouldn't know what a modulo operator is, shouldn't have a clue when it comes to how the quicksort algorithm works, should never even have heard of big O notation...

      Just as you shouldn't assume that everyone without a degree is completely lacking in skills you also shouldn't assume that a degree somehow makes someone competent, there are hordes of developers out there who took CS in college in the late 90's because they thought "computers = big money" and somehow managed to graduate. Hell, looking at a lot of the guys I went to HS with who went on to major in CS in college I suspect most of those just thought "I like computer games so why not study something with computer in its name?", I even had a few people like that as classmates in college (gotta love being the only one in a four man team actually writing code, the others all volunteered to write the documentation)...

      And no, I don't think I'm a "rock star coder", I'd consider my skills as a developer to be pretty average. A decent enough CRUD and business coder who writes some slightly more interesting code in his free time.

      --
      Greylisting is to SMTP as NAT is to IPv4
    3. Re:Coding is a skill, not a profession by Dasuraga · · Score: 1

      I agree. Despite what we want to believe, it's not as if the act of coding is in itself a skill that requires 5 years to learn. Especially considering that a large majority of code is not necessarily going into Google, but into some enterprise software where bubble sort is fine, and they're running on such fast machines anyways that it doesn't need to be using bit twiddling tricks to win a handful of cycles per second.

      I think what we need to move more towards is getting CS people out of coding and into becoming software architects. Most software can be easily divided into (relatively) simple chunks, and if you have enough skills put into actually building software, instead of writing code (which is probably the least important part of the process), then the divisions become trivial.

      We'll always need the super-skilled programmer to work on the single blocking function that eats up 90% of CPU time, and requries intricate knowledge of all the subsystems involved. But most of the time the code itself is just a translation of pretty simple ideas. Anyone with enough time and motivation can absorb the knowledge necessary to work on them. Think of all the Excel spreadsheets in the world, and how many people who would never say they are programmers actually build complex systems in them, because programming in itself isn't hard. What's hard is building something that is clear and maintanable.

      CS grads, who do have (if superficial) knowledge of many different systems, have the knowledge to do the very sort of big picture design that is necessary to building maintanable software. We need to get these guys out of the workshop and into the design bureaus, because they are the ones with the knowledge necessary to become the architects of software. Much like how architects don't build houses, software architects shouldn't be relegated to writing code.

      A well-designed system might have many small parts that can be hard to maintain, since it might've been written badly. But if the system is well-designed, the intent of the code will have been set on the outset, so you could rewrite it. And if it's small, a person with enough courage and time could decipher it. But the inverse situation is a true nightmare. A single "genius" programmer might by himself write the most amazing subroutines the world has ever seen, but if the general structure is incomprehensible, then the program will be maintanable.

      Let's get CS grads out of coding, and into places where they're really needed.

    4. Re:Coding is a skill, not a profession by Dcnjoe60 · · Score: 4, Insightful

      Another thing lacking in the traditional CS route is understanding of the business one is coding for. I managed projects for a large taxing authority. We found it much more productive to take existing employees who understood the various tax procedures and workflows in the department and train them to program versus hiring CS graduates and train them in tax policy and procedures. People from the "floor" have a totally different insight than management and CS graduates and their insight leads to much more efficient ways of doing things. Of course, the people we pulled from the floor did have an aptitude for programming and desingFor the record, we also hired some CS graduates, depending on specific skill sets needed.

      Business IT shops would do much better to consider apprenticeship programs. What is taught in most CS programs did not transfer well into what we needed most. My recommendation to students wanting to pursue a career in IT would be to get a business administration degree with various CS classes as electives (or even minor in CS). That is, unless, you want to work for the big tech companies, in which case, I would flip that and go CS with a minor in business.

      At least that is how it works in the Midwest of the US.

    5. Re:Coding is a skill, not a profession by Anonymous Coward · · Score: 1

      CS-dudes using floats is not limited to currency calculations and the problem has nothing to do with what is being calculated on.
      The thing is that there are a lot of guys in CS who doesn't understand what a float is and what happens to it when you use it in iterations. You can easily end up with physics simulations where the number of significant bits are less than one just because of the automatic scaling and rounding that occurs when you use floating point calculation.

      I guess fixpoint is a lost art.

    6. Re:Coding is a skill, not a profession by Anonymous Coward · · Score: 0

      I always assumed that no-one used floating point except for games, and even then it's risky unless you normalise sufficiently frequently.

    7. Re:Coding is a skill, not a profession by decairn · · Score: 1

      GEC Marconi in the UK ran Software Engineering Apprenticeship programs 25 years ago; they were sick of getting COBOL programmers from schools and universities so made a more technically oriented program that taught fun stuff like C, Pascal, LISP, Ada alongside computer operations, QA, project management, hardware design and electronics.

    8. Re:Coding is a skill, not a profession by Anonymous Coward · · Score: 0

      Games and finance and, uh, grocery store scales? Is a CGI script the most complex program you've ever seen?

    9. Re:Coding is a skill, not a profession by olau · · Score: 1

      Huh? Floats is the standard representation of numbers almost everywhere.

      It's true you can have pathological cases, but any efficient number representation you pick will necessarily be a trade off. There's a reason floats are implemented in hardware.

    10. Re:Coding is a skill, not a profession by RabidReindeer · · Score: 1

      I always assumed that no-one used floating point except for games, and even then it's risky unless you normalise sufficiently frequently.

      Unfortunately, you assumed very, very wrong.

      Very few programming languages come with native fixed-decimal capabilities as a first-class operation the way COBOL does. Most (such as Java) have to do financial calculations using cumbersome support packages and some don't even have that much. Everyone else just fakes it using floating-point, and even a lot of Java and C financial code is done in floating-point because the pressure is on to "Git 'er Dun" and that means using something where you can type "balance += transactionAmount;" instead of a lot of clumsy dancing around with method calls.

    11. Re:Coding is a skill, not a profession by h4rr4r · · Score: 1

      Why would you need fixed decimal at all?

      Can't you keep track of pennies instead of dollars and just avoid that whole issue?

    12. Re:Coding is a skill, not a profession by Anonymous Coward · · Score: 0

      I've never seen someone without a degree code anything that wasn't a giant turd. Horrible architecture and inappropriate collection use. Don't comprehend basics as to why using a Vector is bad form in a single threaded operation. Does my anecdote negate yours?

      I've also seen some real shit slung by people with degrees Bachelors and Masters level.

    13. Re:Coding is a skill, not a profession by h4rr4r · · Score: 1

      Actually scratch that, I guess parts of pennies can somehow exist. Never mind that they can't be paid.

    14. Re:Coding is a skill, not a profession by Anonymous Coward · · Score: 0

      Right, anecdotal evidence is great! But what do you think is more statistically likely? An associates degree guy knowing that or a master's degree guy knowing that?

      That's a pretty low hanging fruit I would think.

      I think the real issue here is that finding a person worth their salt is still ridiculously hard, and a decent coder that can get shit done is worth their weight in gold.

    15. Re:Coding is a skill, not a profession by BVis · · Score: 3, Insightful

      Training existing employees in needed skills represents a conscious desire to improve the skill set of your existing employees, so you gain ability without the expense and hassle of finding someone new to hire. It treats your employees like assets to be improved, not liabilities to be minimized.

      Unfortunately, ISTM that most employers would rather rip off an arm than provide training for their employees. Their logic is that helping employees to expand their skill sets only leads to freshly trained employees that quickly leave because they can make more money/improve their working conditions/get away from a horrible manager by going to another employer. The problem is, while it's short-sighted, they're right. Keeping employees happy is expensive, complicated and time-consuming. Lots of times, it requires a change in the corporate culture. It's hard to go from treating your employees like liabilities and cost centers to treating them like assets. It's *very* hard to convince employees that the culture has genuinely changed; they'll assume it's just another case of management saying all the right things while not actually changing anything of substance, which they have more than likely done before.

      In an ideal world, companies that treated their people like shit would quickly find themselves without employees, having had said employees leave to go to another employer that treats them like human beings. (The free market in action, no?) The trouble is that, in practice, the employee is at a severe disadvantage when it comes to how their employer treats them. Their employer basically controls their entire lives (literally, in the case of employer-provided health insurance). Wage slavery is a real thing, and the norm. Most companies treat their employees just well enough to keep them from leaving immediately, which results in employees doing just enough work to not get fired. Management does not want to provide the employee with more ammunition in the battle by making them more marketable as employees; they like them right where they are. Yeahh, I'm going to need you to go ahead and come in on Saturday, mmkay?

      --
      Never underestimate the power of stupid people in large groups.
    16. Re:Coding is a skill, not a profession by RabidReindeer · · Score: 1

      Coding is not a profession. It's a skill, which is a part of a series of job descriptions and career paths, but in itself it's a form of knowledge more like what an electrician has than what professionals like architects, doctors, lawyers and assassins must know.

      W

      T

      F

      ????

      A "skill" isn't a "knowledge", it's an application of knowledge. Not everyone who knows how to operate dangerous equipment should be allowed to do so. Not everyone who knows how to cut gemstones can cut them reliably.

      Furthermore, there's at least a myth that mid-level coders will someday be senior coders and in an era where even the entry-level people are expected to know and do everything, the whole idea of a static "mid-level, semi-skilled blue collar coder" is just plain absurd. Unlike, say, apprentice plumbers, even the least of coders is not only expected to make decisions, he/she cannot even function without making decisions all day long. If it weren't, we'd be machine-generating the code.

      I do favor a guild-like track, where formal academic training and apprenticeship are components. Neither one is, I think sufficient unto themselves.

      Most people in the field consider programming to be a craft - a combination of art and science, just like the traditional (non-software) profession of architect. Although the traditional dividing line between blue- and white-collar trades was how sweaty you got (literally, since blue shirts are easier to launder), the ultimate difference is in how much autonomous decision-making you do. That's while programmers tend to be so anti-union. They identify with the decision-makers (management). Unfortunately for them, the reverse isn't true.

    17. Re:Coding is a skill, not a profession by serviscope_minor · · Score: 1

      Actually scratch that, I guess parts of pennies can somehow exist. Never mind that they can't be paid.

      But by that stage, you may as well use floating point or fixed point binary. Fixed point decimal is no better at representing fractions than fixed point binary. Nothing wil help if you need 1/3 of a penny.

      --
      SJW n. One who posts facts.
    18. Re:Coding is a skill, not a profession by 0xdeadbeef · · Score: 1

      into some enterprise software where bubble sort is fine

      For fuck's sake, a business dataset is never going to be so small that "bubble sort is fine".

      You see, people? Do you see? This is why we fucking need college.

    19. Re:Coding is a skill, not a profession by dunkelfalke · · Score: 1

      Except that for most businesses you don't write your own sorting algorithm implementation but take the dataset sorting method instead. Reinventing the wheel - or worse, reimplementing the wheel - is often a bad idea.

      --
      "It's such a fine line between stupid and clever" -- David St. Hubbins, Spinal Tap
    20. Re:Coding is a skill, not a profession by TheMathemagician · · Score: 1

      Uhhh ... OK I'll bite. What is wrong with using a vector in a single-threaded operation? And what would you use instead? I can only think you must be talking about a very specific language or domain because it's a very bizarre statement to make.

    21. Re:Coding is a skill, not a profession by The+Snowman · · Score: 3, Insightful

      into some enterprise software where bubble sort is fine

      For fuck's sake, a business dataset is never going to be so small that "bubble sort is fine".

      You see, people? Do you see? This is why we fucking need college.

      The real issue here is talking about the sorting method to begin with. Coding is like playing with Legos. You plug in the "sorting brick" and forget about it. Whatever library you are using should have a properly optimized sorting algorithm with any necessary speed hacks or whatever else is required. Such a library should be well-tested and proven.

      Unless you're a Ph.D. candidate looking into sorting highly specialized data sets such as Google's search index, you have no business implementing a search algorithm. You need to be using whatever standard implementation is defined by the language or framework libraries.

      At this point in the evolution of Computer Science, "sorting" is a problem that is solved. People smarter than either of us have proven that O(n log n) is the fastest it gets, and we have multiple algorithms to do it. Other smart people have plugged these algorithms into standard libraries and frameworks. People dumber than us decide to reinvent the wheel. /facepalm.

      --
      24 beers in a case, 24 hours in a day. Coincidence? I think not!
    22. Re:Coding is a skill, not a profession by 0xdeadbeef · · Score: 1

      That is completely irrelevant, though it explains how someone who is completely ignorant of why some sorting algorithms are classified as better than others could be gainfully employed.

    23. Re:Coding is a skill, not a profession by 0100010001010011 · · Score: 5, Insightful

      Fixed point is very much a lost art. There should be an entire class dedicated to it and anyone in ME or EE that wants to do robotics should be forced to take it. We have to train every single CS, ME and EE that comes in how to do it in Simulink (We use auto code generation and fixed point everything before production).

      I do embedded controls and floating points are 'expensive' with most of the chips we use. They're still not that common. But people don't understand how much faster they can be than floats when your stuff doesn't have an FPU.

      I picked up an Arduino and ran some floating point vs fixed point benchmarks:

      Each of these calculations was run 500,000 times.
      d=a+b; e=c+b-a;
      f=a+b+c; g=a*b*c;

      Floating point:
      a=1.1298373 b=2.3249869 c=3.8923873
      d=3.4548244 e=5.0875368 f=7.3472118 g=10.22
      Execution Time: **14528 ms**

      Int:
      Integer Representations:
      a=36 b=74 c=124
      d=110 e=162 f=234 g=2656
      Floating Numbers:
      a=1.1250000 b=2.3125000 c=3.8750000
      d=3.4375000 e=5.0625000 f=7.3125000 g=0.0625000
      Execution Time: **348 ms**

      Long Int:
      Long Representations:
      a=36 b=74 c=124
      d=110 e=162 f=234 g=330336
      Floating Numbers:
      a=1.1250 b=2.3125 c=3.8750
      d=3.4375 e=5.0625 f=7.3125 g=10.0625000
      Execution Time: **1951 ms**

      Now when you're using a 16 Mhz controller to make das blinken lights it doesn't matter. But when you start getting into autonomous control and trying to do real time processing of a few dozen sensors to make sure your flying robot doesn't smash into the wall it does matter.

    24. Re:Coding is a skill, not a profession by Anonymous Coward · · Score: 0

      "Bring back the hacker aesthetic. Professions are for those who want to super-specialize and master specific high-level skills. Hacking is something anyone with the gumption and dedication can do. As the world expands into mobile devices, ordinary people are writing code every day."

      Complete bullshit. Ordinary people ARE NOT coding every day. The average person barely knows how to

      Coding might be an applied skill, but it's about as applied as a mathmaticians use of algebra. It's a tool in a professional software developer's toolkit. You CANNOT build software without software developers - we are highly specialized professionals who not only can code, but can think and solve specific problems that other people cannot.

      I'm really getting sick of people talking down my profession and claiming that it's 1) just coding and/or 2) something anyone can and should do.

    25. Re:Coding is a skill, not a profession by Chrisq · · Score: 1

      Fixed point decimal is no better at representing fractions than fixed point binary. Nothing will help if you need 1/3 of a penny.

      To be pedantic it is better - a bases ability to express numbers without fractions is dependent on the number of prime factors they have. Decimal has 2 and 5 so fractions depending on multiples of 5 can be expresses without recurring.

    26. Re:Coding is a skill, not a profession by The+Snowman · · Score: 1

      We found it much more productive to take existing employees who understood the various tax procedures and workflows in the department and train them to program versus hiring CS graduates and train them in tax policy and procedures.

      I write software in the retail industry. Aside from having worked in retail in my younger years, I know how to write quality software. What I have learned is that to get the best software, I need to sit and talk to an expert in the problem domain. If I were writing tax software I would spend a day or two talking over how tax procedures work, not even talking about the software. Then look at the existing software (if any). All of that background ensures that when I design a system I understand what it is trying to achieve. I would rather "lose" the 12-16 hours of coding up front but spend far less time fixing bugs or redesigning features at the tail end of the project.

      We do have non-developers writing code, typically our customers. While they understand their business and we have enough guardrails up in the code to prevent completely assinine code from working, it often ends poorly. We are still better off spending the time to discuss in-depth what they are trying to do. Even if it means getting on an airplane and paying for a hotel, it still ends up cheaper than the complete clusterfuck that occurs at the end of a project where you have either developers not understanding the problem, or non-developers not understanding software development.

      --
      24 beers in a case, 24 hours in a day. Coincidence? I think not!
    27. Re:Coding is a skill, not a profession by LordNimon · · Score: 1

      We already have apprenticeships, but we call them internships. If you have a demonstrable natural talent for coding, companies will claw over each other to hire you as an intern. I know, because not even half of the interns we hire were even remotely productive, but the others could write their own tickets.

      --
      And the men who hold high places must be the ones who start
      To mold a new reality... closer to the heart
    28. Re:Coding is a skill, not a profession by Dasuraga · · Score: 0

      It would be nicer if, in these situations, people would gravitate more towards a std::sort or equivalent but consider the following: - People are used to sorting taking a while. All you need to do is display a spinning wheel gif that appears after you click "sort" and people won't really care in many situations - Businesses aren't all Google/Facebook/whoever. If you are working on giant databases, then obviously you should be trained for it. If you have a text file with 100 phone numbers in it, who cares how long it takes to sort, it'll be negligeable compared to the initial file read. - Computers have so much disposable time anyways, that a lot of "inefficient" ways of doing things are probably the better choice anyways , in respect to maintanability. I do think that it's a good idea for smart people to be available to write some code, but even if v1 is badly written by beginners, a well designed systems will have ample tests that would allow you to see "oh look, this guy is using bubble sort instead of timsort" , and allow you to iterate on it. Easier to optimized working code than make optimized code work.

    29. Re:Coding is a skill, not a profession by jedidiah · · Score: 1

      You are a sterling example of why programming should not be considered a "blue collar apprenticeship". Although your remarks may still be the end result of a University education and that's a scary thought.

      No one should get any kind of CIS degree or certificate without passing a Numerical Analysis course.

      --
      A Pirate and a Puritan look the same on a balance sheet.
    30. Re:Coding is a skill, not a profession by queazocotal · · Score: 1

      And then there is proper representation of datatypes.
      If you can fit the values into 8 bits, and those adds and subtracts and maybe even multiplies can be done in hardware, you get a massive boost in performance.

    31. Re:Coding is a skill, not a profession by Anonymous Coward · · Score: 0

      Utter bullshit. I've worked with teams full of CS grads (I'm actually an apprentice thought programmer) and they have "blind spots" that are flabbergasting. By default, assume that anybody with a CS grad is useless the first 3-4 years on the job. Anybody with a Phd is usless for about 10 years. It takes a long, long time to climb down the instinctual learned ivory tower and learn how to get things done (tm).

    32. Re:Coding is a skill, not a profession by Anonymous Coward · · Score: 0

      Admit it, you've got a CS degree.

    33. Re:Coding is a skill, not a profession by dunkelfalke · · Score: 1

      And there is nothing wrong with that. You don't need high skills for work that can be done by a code monkey and it is better than to outsource the same kind of menial work to India.

      --
      "It's such a fine line between stupid and clever" -- David St. Hubbins, Spinal Tap
    34. Re:Coding is a skill, not a profession by 0xdeadbeef · · Score: 2

      There are two egregiously flawed assumptions in what I quoted, and neither of them have anything to do with the prevalence of standard libraries.

      One is that it is acceptable for enterprise software to be slow, presumably because it always is. That is the broken window theory in action. People with that mentality will never be anything but the mediocre programmers and will never seek to undersand anything beyond what it takes to not get fired.

      The other is that the difference between sorting algorithms is simply a choice on speed, as if you're comparing a Camry to a Ferrari, where one is better than the other but they'll both get you were you want to go. That is the kind of ignorance that leads to cargo cult programming, doing something in some situation because you know you're supposed to without ever understanding why. It is well and good to tell them to use what is already available, but how they fuck will they ever know which one to use in what situation?

      Tolerating this because we need cogs who crank it out for cheap is why shitty software is so common. It debases the profession.

    35. Re:Coding is a skill, not a profession by tibman · · Score: 2

      How many hours did you sit in class learning how to sort? It was probably an hour. Why spend years in college for something you could research online in less time than your college registration would take. I'm simplifying but meh.

      --
      http://soylentnews.org/~tibman
    36. Re:Coding is a skill, not a profession by HaZardman27 · · Score: 1

      They have huge blind spots that CS grads don't have.

      I'm sorry, but in the internet age this is not necessarily true. There are very good coders (and software engineers) out there with little or no formal college education who still have enough interest in computer science to study on their own. For a motivated individual, the only benefit education-wise of getting a 4-year degree at a university is the opportunity to surround yourself with people of similar interests.

      --
      Apparently wizard is not a legitimate career path, so I chose programmer instead.
    37. Re:Coding is a skill, not a profession by RKBA · · Score: 2

      Personally I yearn for good ole' BCD arithmetic.

    38. Re:Coding is a skill, not a profession by Anonymous Coward · · Score: 0

      Probably the most idiotic statement I've heard today.

    39. Re:Coding is a skill, not a profession by Anonymous Coward · · Score: 0

      Except that that is exactly what you should do for some currency calculations. If you want to be a pedant, do it properly.

      You are talking about accounting transactions involving real, settled amounts. Fine, use FP for that,

      For financial mathematics this actually makes perfect sense - hypothetical, probabilistic calculations.

    40. Re:Coding is a skill, not a profession by Anonymous Coward · · Score: 0

      To be honest, if you are going to compare coding as a profession to any other profession out there, it would probably be best to compare it to writing, since they both work with syntax and language. Just about anyone out there can learn a new language (other than the one they speak, that is). Only a handful of individuals, though, will learn the complexities of that language enough to turn out great works of literature. And often it has to do with exposure through one's lifetime as to whether or not their work becomes great literature or a dime-store novel.

      Some people learn how to build sentences naturally, as it makes sense from any perspective. Others, though, need to have defined structure or they are lost. Still others build their programs like Mad Libs (does anyone remember those?) and then wonder why they aren't getting The Great Gatsby after they are done compiling.

      Great writers take time to build outlines and define character and plot summaries before they even write one line of a novel. Other will just dive right in and let the story build itself as they go along, and often end up having to go through several painful rewrites after their editor has taken note of all the inconsistencies in the plot lines and character development. Does this sound familiar guys?

      No one in their right mind would have called Hemingway, Salinger or Shakespeare anything less than an artist. But not every writer out there is in this category, and there is still a huge need for people who write technical documentation, professional journals or historical analysis that would put most of us to sleep. And while most of these writers need to have an inkling of an idea as to how to build a sentence, it is more important that they thoroughly understand the subject matter that they are writing about and how to communicate that information in a clear and concise manner. Again, does this sound familiar?

    41. Re:Coding is a skill, not a profession by Phreakiture · · Score: 1

      Many LISP implementations will, actually, allow you to represent 1/3 easily and will store it as a rational. They will also enable you to use an arbitrary number of bits, and therefore an arbitrary number of digits, in an integer. What stops most people from adopting the language is the odd syntax.

      --
      www.wavefront-av.com
    42. Re:Coding is a skill, not a profession by sjames · · Score: 1

      It's no different than a poor craftsman in any trade. If the guys with degrees actually understand that IEEE floats are not sufficient for all computation that involves a decimal, why do so few languages natively support arbitrary precision?

    43. Re:Coding is a skill, not a profession by Anonymous Coward · · Score: 0

      Coding is like playing with Legos. You plug in the "sorting brick" and forget about it. Whatever library you are using should have a properly optimized sorting algorithm with any necessary speed hacks or whatever else is required. Such a library should be well-tested and proven.

      And this is when you get a programmer who places locks around everything to make it "thread safe" and wonders why his code doesn't scale or why he still has race-conditions.

      You can probably "get by" with not knowing how stuff actually works, but you'll almost never have good code.

      Show me a lego-building programmer who blindly uses libraries and can create a high performance multi-threaded async system.

      The biggest issue to well performing service these days has almost everything to do with throughput vs latency vs scalability. One needs to know the throughput, latency, and scalability characteristics of different designs and algorithms in order to make any decent decision about how to create their application.

      80/20 rule, 80% of the time your service should not crash "under-load" as IO should be the bottleneck. Most modern servers should have enough processing power to saturate most network connections, yet I see slowly responding web sites all the time, even though they have good pings. Poor web programmers tossing crap code up on the web and telling business to purchase more servers even though their current ones are mostly idle but somehow can't handle any more connections.

    44. Re:Coding is a skill, not a profession by jkflying · · Score: 1

      People smarter than either of us have proven that O(n log n) is the fastest it gets

      For comparison-based sorts, sure. But the moment you have a finite spacing between elements (eg. Strings, Integers), a tuned Radix sort can do a much better job, particularly for eliminating your pipeline-destroying decisions.

      --
      Help I am stuck in a signature factory!
    45. Re:Coding is a skill, not a profession by jkflying · · Score: 1

      I think GP is referring to Java, where a Vector is a lot slower than an ArrayList, but is guaranteed to be threadsafe.

      --
      Help I am stuck in a signature factory!
    46. Re:Coding is a skill, not a profession by Lando · · Score: 1

      One point of contention with your comment. Although a lot of schools may be like that and a large portion of classes may be as well, memorization isn't going to get you through a lot of the upper level classes in computer science. In other degrees possibly, but with computer science there is a large degree of applied skills and thinking outside the box that you just don't get elsewhere.

      In addition to that, being about to do a search on any piece of code that strikes the instructor as hokey, means that copy and paste coding should be caught fairly easily. Now, I know that there are a lot of lazy professors out there and teaching associates, but it only takes one in the four years someone is attending school for their practices to be caught and computer science departments are small enough that everyone knows everyone at the professor level, perhaps even at the graduate level.

      For myself, I have the opposite problem, I have a terrible memory, can't memorize a thing. Applied CS is where I shine, it's other courses like musical appreciation and even calculus where I have my problems. In computer science the memorization is at the lower levels, once you reach the upper level courses most of them are not about memorization, most, but about applied skills.

      Keep in mind, we are also talking about CS not CIS. CIS is programming, CS is all about the algorithms though I suspect most CS majors go into programming, I really think that's about colleges making money turning out CS majors. I'm there for a "real" CS degree so that I can work on the science not be a programmer.

      --
      /* TODO: Spawn child process, interest child in technology, have child write a new sig */
    47. Re:Coding is a skill, not a profession by tnk1 · · Score: 1

      Why do you need a college education to know when to use quicksort or any other sort algorithm? I mean, that's like CS 101 stuff there. You could probably teach that in high school.

      Your problem is with people who don't know certain useful things, but you don't need college to learn those things. You just need a vocational program that teaches them. If you can teach a vocational school technician when it is useful to use a certain part, as opposed to another variety of part in their motor, you can teach them when and if they need to use a particular sorting algorithm.

      You need college for the types of people who can construct the tools you need. You need a specialized library for doing calculations for your 3D engines? By all means, get someone who got a BS/MS/Ph.D. in Computer Science and/or Mathematics to write one. You need to push out a lot of 3D code to do a number of routine operations? You make sure the 3D library has good documentation and an excellent programming interface and hand it to a team of grunt coders, perhaps with a senior level overseer. They may have no idea how to do linear algebra or work with quaternions or whatever, but they don't need to know how the calculations are made, they just need to know what the parameters are and what the function calculates. To them, it doesn't matter why it works, it just works.

      There are a lot of artists out there who create works of art, but couldn't tell you how their paints or tools are made. Many of them, over time, learn more about their tools, and certainly, there is a path from technician to engineer to scientist for those who become very knowledgeable about their craft and want to learn more about what goes into it.

      Point is, I know people out there who are quite qualified for the jobs with the college degree requirement on it, even though they do not have that degree, or any at all. Yes, they are limited, but if that job never requires them to reach or exceed those limits, then they're just as good at that job as someone with a degree would be. We use the same criteria for mathematical functions as well, if it is useful within the necessary limits, it's still useful for that purpose even if it is not correct for all possible values of 'n'.
       

    48. Re:Coding is a skill, not a profession by fm6 · · Score: 1

      And I've seen guys with Master's degrees in CS and systems science using floats for currency calculations.

      Ha! You know the kind of technophobe who lacks any kind of curiousity about the technology they work with, and refuses to advance their IT skills beyond the bare miminum they need to do their job? The worst one I ever worked with a Ph fucking D in Computer Science!

      I've often regretted that I didn't finish college and that I didn't make more of college when I was there. But when I work with people who've gone to Ivy League schools (and presumably studied under the kind of teachers I'd kill to spend a few hours with) and yet show considerable ignorance and lack of curiousity not just of technology but about every other subject, and whose thinking skills barely extend beyond rote regurgitation, I want to scream.

    49. Re:Coding is a skill, not a profession by fm6 · · Score: 1

      Oh lord. Are you unaware that there is no binary floating point representation for 0.01? Guess so. Given your issues with written English, I guess I'm not suprised.

      Tagental topic: this kind of ignorance would matter a lot less if programming languages still had currency data types. PL/1 even had a pre-decimal (20 shillings to the pound, 12 pennies to the shilling) British Pound data type. It's often bothered me that common languages don't even have arbitrary precision arithmetic, which is overkill for currency representation, but a lot easier to work with than primitive integers. Java, irritatingly, has a robust big decimal class, but refuses to implement operator overloading, so that price + price * salesTaxRate becomes price.add(price.multiply(salesTaxRate)).

    50. Re:Coding is a skill, not a profession by fm6 · · Score: 1

      It's true you can have pathological cases,

      Like when you get a rounding error after adding 0.01 to a value. Were you aware that primitive data types are almost always stored as binary numbers, not decimal? Guess not.

      Once upon a time, processors were hard-wired to support binary-coded decimal. Even the ultra-primitive 6502 had this feature. Pity it went away.

    51. Re:Coding is a skill, not a profession by fm6 · · Score: 1

      I agree with you, only more broadly. I'm a college dropout who started working as a tech writer (I can read code, but suck at actual programming; this is actually a positive combination) back when tech companies looked at skills and track record, not degrees. Nowadays, I can still find work, but I've learned to not bother submitting for jobs at most big companies, because their HR gatekeepers filter out resumes like mine.

      This is a minor aspect of a much bigger problem: hiring has become so bureaucratized and automated that most people are excluded from the process out of hand. Fascination with academic credentials is part of it (don't apply for any kind of CS-releated job at Google unless you have a Masters; a PhD is better) but the big problem is that filters for background and buzzword compliance and other such trivia exclude so many people that some jobs actually go unfilled for lack of "qualified" candidates. This is the sort of nonsense that has destroyed the American lead in technology.

    52. Re:Coding is a skill, not a profession by pspahn · · Score: 1

      I'm wondering if everyone is on the same page with with TFA is suggesting. There is a difference between "coding" and "programming".

      Of course you still need programmers who got CS degrees and studies all sorts of math and number theory. These are not the people being replaced by the blue-collar coder.

      The blue-collar coder exists already, and plenty of development shops employ them. They work within given frameworks where a majority of the programming has already been done and you are left to simply code with the classes and functions provided.

      You have a certain group of people that take concepts and form tools around those concepts. You have another group of people who use those tools to implement real-world entities. Programmers are architects, coders are contractors.

      --
      Someone flopped a steamer in the gene pool.
    53. Re:Coding is a skill, not a profession by Alex+Belits · · Score: 1

      There is a difference between "coding" and "programming".

      No, there isn't. "Coders" and "analysts" existed as separate professions at some point, but they merged into a modern programmer approximately at the point when punchcards were replaced with terminals. Now everyone who writes code has to make design decisions, and everyone who makes design decisions has to write code implementing them. Anyone who does not do both parts, is a worthless charlatan.

      --
      Contrary to the popular belief, there indeed is no God.
    54. Re:Coding is a skill, not a profession by doohan · · Score: 1

      That is a bit of a pain, but if you're willing to take a small hit on performance you could always try groovy on the jvm: Operator Overloading

    55. Re:Coding is a skill, not a profession by AwesomeMcgee · · Score: 1

      Hah, Irony. Undegreed folks are constantly smeered for only knowing the trivalities of their one language or technology stack, and here's a fellow wining about them for not knowing the trivalities of his one language. I'm pretty sure this little detail isn't what people get a CS for, and if it is then I guess the CS degree is already just a trade degree..

    56. Re:Coding is a skill, not a profession by El+Rey · · Score: 1

      Right, but you have to know that other sorts exist / are available! I used to work with someone who was a programmer in the Army. She always used the sort that they taught her in Army programming school, bubble sort. The records her app was processing as a batch took all night to process. I spent 15 minutes teaching her the quick sort function that was built into the C library that came with the compiler and her reworked app was at least 4x faster.

    57. Re:Coding is a skill, not a profession by fm6 · · Score: 1

      I don't code for a living, but if I wanted a better language for the JVM, I'd go with something that has more mindshare, like Scala. Groovy has appealing features, but I get the impression that it's failed to develop a serious ecosystem.

    58. Re:Coding is a skill, not a profession by shutdown+-p+now · · Score: 1

      C# and VB.NET have had decimal floating-point since the very first version. This is trivially usable as fixed point if you need it.

      Before that, VB had Currency type which was basically also decimal floating-point. And Delphi had a different type - also named Currency - which was fixed-point (4 digits) decimal.

    59. Re:Coding is a skill, not a profession by mrprogrammerman · · Score: 0

      I agree too many coders have the urge to reinvent the wheel every time. The best way to do programming is to use best known methods (BKM). The BKM determine what sorting algorithms you should use and other requirements. Most programming is about how to choose and integrate the best pieces.

    60. Re:Coding is a skill, not a profession by NJRoadfan · · Score: 1

      I bet your college/university had quite a few CS grads that didn't know how to code too. *facepalm* I know mine did. It's all too common.

    61. Re:Coding is a skill, not a profession by Gorobei · · Score: 1

      Nothing wil help if you need 1/3 of a penny.

      Let me google "USDJPY"...

      1 US dollar = 78.3400 Japanese yen.

      Ugh. Looks like I need 4 sig figures. And if I want to price a vanilla option on this, I probably need eight sig figures. For a binary payout, I'm at close to 16 sig figures or 48 bits. Inversely, for USD against WTI, AUD, BRK, I'm dealing with numbers where $1 is a tiny amount. Floating point is (doubles or double-doubles) is about the only thing to use here.

      Of course, when I actually book a deal (and enter the accounting realm,) then I what to convert to decimal numbers with rather arbitrary market conventions.

      Finance covers a lot of ground, and a 14.2 decimal representation doesn't solve every problem.

    62. Re:Coding is a skill, not a profession by The+Snowman · · Score: 1

      Show me a lego-building programmer who blindly uses libraries and can create a high performance multi-threaded async system.

      For the 99% of the application development that is neither multi-threaded nor special-case, the Lego approach of plugging in existing modules works fine. Your typical web app or DB app (think Oracle Forms or Access) doesn't have to deal with threading on a level that concerns the (wannabe) developer.

      Developing thread-safe software is really fucking hard. And I don't mean inserting critical sections in code so your data structure is thread-safe: that's easy. I mean, and I think you meant as well, designing systems with multiple actors that pass data back and forth. Using well-known structures such as blocking queues, semaphores, etc. is a good start but that's seeing the trees, not the forest.

      I have developed multi-threaded applications, applications that run on multiple systems let alone threads, and require synchronization. I would not want a "blue collar coder" designing such a system. This is a perfect case for having an experienced developers who is educated on these topics design the software, then working with code monkeys to make it work. This is the type of software that would require a more hands-on approach with more strict code reviews, testing, etc.

      --
      24 beers in a case, 24 hours in a day. Coincidence? I think not!
    63. Re:Coding is a skill, not a profession by The+Snowman · · Score: 1

      For comparison-based sorts, sure. But the moment you have a finite spacing between elements (eg. Strings, Integers), a tuned Radix sort can do a much better job, particularly for eliminating your pipeline-destroying decisions.

      Radix sort is one of those "special case" that tends to come up. It is a specific case of the bucket sort which has its place. Honestly though, I rarely need to use it. Data normally either lends itself to a traditional comparison-based sort, is small enough not to matter (10 or fewer elements? Who cares?), the implementation is completely hidden (SQL's ORDER BY clause), or is already sorted (e.g. SQL sorted the data and returned it to your application).

      There is always an argument for a better way to do something, but there are two important points to consider here:

      1. Most C.S. problems encountered on a daily basis are already solved and have good solutions, even if not perfect. Use the good enough solutions and spend time profiling later if need be, but this is already beyond the realm of a "blue collar coder."
      2. The fact that we're even discussing the special case of a problem means this is already beyond your typical "blue collar coder" or developer who doesn't know development (think Access).
      --
      24 beers in a case, 24 hours in a day. Coincidence? I think not!
    64. Re:Coding is a skill, not a profession by gweihir · · Score: 1

      I actually found a selection sort in an expensive piece of software intended as replacement for a critical component in a large organization. It was used to remove duplicate answers from a database query result that could be arbitrarily large. That was in Java, which has hash-tables in the base libraries. I found it accidentally while doing a security review of the interfaces on the finished, tested and reviewed code module.

      Now, there are so many things wrong here, it is staggering. Yes, the code works, it was documented and looks clean. It is still completely and utterly the wrong thing to do and nobody even noticed the very visible double loop or understood its significance, while to me it was glaringly obvious while slowly scrolling past it. This level of incompetence is what you get when you have "programmers" that are weak in algorithms. Basically all without CS education are and even quite a few with CS education are as well.

      Unless we ensure that professional programming is a job for _engineers_ only and pay these people accordingly, software will continue to suck and be a huge, huge risk.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    65. Re:Coding is a skill, not a profession by Gorobei · · Score: 1

      It's no different than a poor craftsman in any trade.

      Gotta agree with that.

      If the guys with degrees actually understand that IEEE floats are not sufficient for all computation that involves a decimal, why do so few languages natively support arbitrary precision?

      This is a complex conditional, and only asks about the state in which an understanding of IEEE floats exist amongst the educated. Perhaps:

      1) languages are designed by the educated, but if the uneducated do not understand floats, why give them another opportunity to go wrong with float/AP number choices?
      2) languages are mostly designed by the uneducated?
      3) the uneducated do understand that IEEE floats are not a universal solution, but don't care
      4) no one, degree or not, understands IEEE floats. The statement is trivially true
      5) something else

      I actually don't believe 4 - you were kind enough to reply to a post of mine some years ago, giving a sane analysis of a strcmp of "Apple" versus "Apples," so at least one person probably understands IEEE floats.

    66. Re:Coding is a skill, not a profession by incongruency · · Score: 1

      Knowing you're and AC and not entirely likely to see this response, I want to thank you for headed me down a better path and making me finally properly research fixed point maths. I'm no rockstar, but it's times like these where I get to find something I knew little of and expand my knowledge that make it worth it. Thank you.

    67. Re:Coding is a skill, not a profession by sjames · · Score: 1

      IEEE certainly can be understood, but I see plenty of code, including Fortran code from physics and engineering graduates where they didn't understand them. I don't think it's because they couldn't understand them, it's more that the shortcomings are unexpected, they didn't know there was anything special to understand. It's just not expected that a computer would do arithmetic 'wrong'. They seem to fail the principle of least astonishment.

      I understand their value. They are much faster, particularly for mainstream CPUs with a floating point unit. However, since they are not always correct, that should be the experts only optional implementation with the more correct and intuitive but not so fast arbitrary precision floats as the default.

      To make things worse, the exact behavior of floats changes depending on the optimization flags passed to the compiler and recently, even the convention that -On where n

      My survey of the landscape is far from rigorous, but it seems that the major languages were designed by people with relevant degrees.

      It seems to me that having a degree certainly does not mean free of blind spots. Neither does not having a degree.

    68. Re:Coding is a skill, not a profession by Anonymous Coward · · Score: 0

      because arbitrary precision usually sucks time. Before university (BSc CS), I went to college (AS) in Computer Systems, and before that college (AS) Electronic Engineering. In the middle of the second one, I learned a programming language called REXX (IBM restructured extended executer language) which was a system scripting language for small IBM mainframes, but also supported arbitrary precision, but on its own only did addition, subtraction, multiplication and division. Since I had taken way too much calculus studying electronics, I took to writing little programs that did little extras, like using Maclaurin Series and Power Series wrote functions for SIN(x), COS(x), TAN(x), ASIN(x), ACOS(x), ATN(x), ln(x), log(x), e^(x) and a^b. I even wrote efficiencies for them, eg: for the a^b, instead of doing
      123456789.123456789^123456789.123456789 as a piece, first I would split the exponent into two parts, and calculate 123456789^0.123456789 and then multiply it by 123456789.123456789^123456789. Of course, (and I figured this out before I took it in an algorithms class) instead of going for(exponent=1;exponent123456789;exponent++)out=out*value (which is just painful), you use x=x*x (the first time it runs its x^2, the second time is x^4, then x^8 and so on. So if the non-decimal part of the exponent is 123456789, then you multiply in succession x^67108864 (it takes 26 multiplies to get there), leaving 56347925, and then calculate x^33554432 (it takes 25 multiplies to get there), leaving 22793493. You then calculate x^6016277 (it takes 24 multiplies to get there), leaving 6016277. You then calculate x^4194304(22 multiplies) leaving 1821973. You then calculate x^1048576 (20 multiplies) leaving 773397. You then calculate x^524288 (19 multiplies) leaving 249109. You then calculate x^131072 (17 multiplies) leaving 118037. You then calculate x^65535 (16 multiplies) leaving 52502. You then calculate x^32768 (15 multiplies) leaving 19734. You then calculate x^16384 (14 multiplies) leaving 3350. You then calculate x^2048 (11 multiplies) leaving 1302. You then calculate x^1024 (10 multiplies) leaving 278. You then calculate x^256 (8 multiplies) leaving 22. You then calculate x^16 (4 multiplies) leaving 6. You then calculate x^4 (2 multiplies) leaving 2. You then calculate x^1, and follow that by just multiplying by x. Altogether (without any other efficiencies) you have 26+25+24+22+20+19+17+16+15+14+11+10+8+4+2+1+1=235 multiplies, each being 'x=x*x'. Multiplying 9 digit numbers 235 times sure beats multiplying 9 digit numbers 123456789 times. No matter how you slice it though, having to use megabytes of ram to store numbers instead of 64 bits in an arithmetic logic unit means each calculation takes hundreds (or depending on how many digits you ask for thousands) of times longer than using regular floats.

    69. Re:Coding is a skill, not a profession by jkflying · · Score: 1

      Yeah, I'm just pointing out that there are cases where the standard method is far from the best, even for something trivial like sorting, and strings and integers are something which pop up all the time. Sure, for general business "keep track of these 200 customers" kind of jobs blue-collar IT is fine, but the moment you want to sequence somebody's genome and look for specific patterns to see if they have a disease, do programming in any sort of limited embedded environment or communicate between different types of systems somebody who doesn't understand the foundations of the techniques they are using is useless. Most of the 'grunt work' could actually be done by improving our IDEs instead of hiring blue collar IT workers.

      --
      Help I am stuck in a signature factory!
    70. Re:Coding is a skill, not a profession by dkf · · Score: 1

      I think GP is referring to Java, where a Vector is a lot slower than an ArrayList, but is guaranteed to be threadsafe.

      Except it isn't. It's guaranteed that the individual method calls are thread-safe, but not that any composite operation is. It's far better to manage that sort of thing yourself as that lets you put exactly the sorts of locks in that you require (and avoid the cost of locking where you don't need it, which is virtually everywhere in most code).

      --
      "Little does he know, but there is no 'I' in 'Idiot'!"
    71. Re:Coding is a skill, not a profession by jkflying · · Score: 1

      It still explains why it is stupid to use a Vector in a single-threaded application. The fact that it's stupid to use a Vector in a multi-threaded application is entirely besides the point ;-)

      --
      Help I am stuck in a signature factory!
    72. Re:Coding is a skill, not a profession by Anonymous Coward · · Score: 0

      I guess I would have to agree. I was shoe-horning "blue collar" into large systems. I think I went that way because of how popular it is to have a lower end "programmer" create web-pages for companies.

      "Developing thread-safe software is really fucking hard. [...] I have developed multi-threaded applications, applications that run on multiple systems let alone threads [...]"

      I can't wait to make a large system. So far I have done smaller systems and I have not had any bugs(in production) related to threading in years. Most of my bugs are due to feature creep and conflicting requirements. Once I have the structure of my applications in place, I rarely have to make any changes to the flow. I find designing and implementing my current multi-threaded plus async(callback) systems easy to visualize in my head. I've been looking for a challenge and I hope to stretch my legs some day.

    73. Re:Coding is a skill, not a profession by TheMathemagician · · Score: 1

      Oh he's talking about Java specifically. Thanks.

    74. Re:Coding is a skill, not a profession by sjames · · Score: 1

      Reasonable use of arbitrary precision on a modern system works just fine. If you choose to maintain hundreds of thousands of significant digits (even when the quality of the input data can't support it), that's your fault, but at least the answer comes out right. There's also no reason significant digits shouldn't be taken into account during the calculations. If that is done in DECIMAL digits, it should produce no surprises.

      Reasonable options would include a decimal representation of fixed precision floats or true rational numbers (where each number variable contains a numerator and a denominator), or if explicitly requested, IEEE floats. The difference in the latter case is that by being explicitly requested, the programmer takes responsibility for any oddities.

  2. Already blue collar by Anonymous Coward · · Score: 2, Insightful

    It's been a blue collar job for most of us ever since I've been coding professionally (since about 2000).

    1. Re:Already blue collar by Anonymous Coward · · Score: 0

      It's been a blue collar job for most of us ever since I've been coding professionally (since about 2000).

      Agreed .... started in '92. Most business application jobs don't require one with a CS degree.

  3. This.... by Anonymous Coward · · Score: 0

    This, this, this, this.... 100%. Stop talking about it and make HR Depts do it. For most business application development, you DO NOT need a CS degree. Generally, you're not the application designer, you're just working on bits.

       

  4. Programming is applied Math by afidel · · Score: 1, Insightful

    Why would we want more un/under educated programmers? Programming is applied Math and very few high school students are going to be equipped to do it well.

    --
    There are 4 boxes to use in the defense of liberty: soap, ballot, jury, ammo. Use in that order. Starting now.
    1. Re:Programming is applied Math by cnettel · · Score: 4, Insightful

      Programming, in this sense, is applied method calling into your supporting libraries and framework. It has more similarities to designing a nice-looking Word template or using Excel in not overly creative ways. If a programmer of this kind ends up designing her own algorithms or even worse a full class hierarchy, it will surely end up on thedayilywtf. The thing is, they should not need to. You don't expect a household electrician to rewire stuff with a new transformer design just because it seemed fun to do for one specific customer and maybe 10% more efficient. You do standard stuff in standard ways. It's not trivial, but it's all done within well-defined bounds.

      I would never want this kind of a job, but if you consider how many things that are still done manually in one way or another by people having GFLOPS on their desktops, it's also obvious that cheaper and more plentiful access to people able to just crank out code to do stuff has a tremendous value.

    2. Re:Programming is applied Math by Anonymous Coward · · Score: 0

      That was my first thought.While 90% of the coding jobs don't require anything higher than algebra, based on my memories of HS combined with my wife's experience as a HS teacher for 20 years I'm pretty sure that the average "blue collar" worker simply can't handle the math (set theory, matrixes, boolean logic, etc.). Hell, a huge chunk of the supposedly STEM-prepared students that go into technical fields in college end up bailing on the sciences and doing something else. For decades there has been hype about tools that "let anyone program." So far, nothing has delivered.

    3. Re:Programming is applied Math by Anonymous Coward · · Score: 0

      agreed.

    4. Re:Programming is applied Math by Anonymous Coward · · Score: 1

      I'm pretty sure that the average "blue collar" worker simply can't handle the math (set theory, matrixes, boolean logic, etc.).

      You can work as a programmer for 20 years without uising set theory and matrixes. Most programming is just about moving data around anyway.
      As for boolean logic; have you ever tried ordering a hamburger? A McDonalds worker probably uses more boolean logic than what is necessary for most programmers.

    5. Re:Programming is applied Math by XDirtypunkX · · Score: 1

      Programmers might not know set theory in a formal sense, but as a programmer you pretty much have to use set theory in some way (even a boolean expression on integers expresses a set).

    6. Re:Programming is applied Math by h4rr4r · · Score: 1

      To drive wages down, that is what this is really about.

    7. Re:Programming is applied Math by M.+Baranczak · · Score: 1

      Yeah, it is. So's bartending.

      Face it, the level of math knowledge that you need to be a competent programmer is really not that high. Probably no more than what's required of carpenters or electricians. (There are some math-heavy sub-fields, like crypto or 3D rendering. But most of us don't need to delve into them.)

      I'm sure that a carpenter could benefit from going to college and taking courses in math, physics and engineering. Would it be worth 4 years of his life + $100,000? Probably not.

    8. Re:Programming is applied Math by Seumas · · Score: 1

      Exactly. Equate software engineering with digging ditches and suddenly you can justify paying ditch-digging wages.

    9. Re:Programming is applied Math by jedidiah · · Score: 2

      I think everyone that wants to equate programmers with plumbers or electricians need to actually to go out and do these trades for awhile and ONLY THEN come back and try to feed us this line of bull.

      --
      A Pirate and a Puritan look the same on a balance sheet.
    10. Re:Programming is applied Math by shutdown+-p+now · · Score: 1

      That level of understanding is perfectly accessible to any normal human. It doesn't take some magic dust imbued over the years spent getting a degree.

    11. Re:Programming is applied Math by XDirtypunkX · · Score: 1

      I never said it was, a lot of the basics of set theory can be (and are) taught in elementary school.

  5. I am a blue collar coder by Big+Hairy+Ian · · Score: 5, Interesting
    Been in the business for over 20 years now. The only issue I have makes getting jobs difficult as too many companies wont touch you without a degree.

    BTW The closest my school had to Computer Science was a couple of Commodore Pets and a maths teacher who thought all that was involved with CS was logic. Ah well where there's a geek there's a way :)

    --

    Build a Man a Fire, and He'll Be Warm for a Day. Set a Man on Fire, and He'll Be Warm for the Rest of His Life.

    1. Re:I am a blue collar coder by Lando · · Score: 1

      The issue with degrees really began in 2001 when the Tech crash happened. Before that individuals would review your skills, after the tech crash there were too many "IT" guys and so we got thrown to HR would sorts based on bullet lists. Before the tech crash I had 15 calls or so a month and could expect to be offered positions at least 3 times a quarter, usually more. After the tech crash, I went six months without a call. The difference was too dramatic for anything else to change, my skills didn't change that much and the need for those skills was still out there.

      --
      /* TODO: Spawn child process, interest child in technology, have child write a new sig */
    2. Re:I am a blue collar coder by Big+Hairy+Ian · · Score: 1

      Whilst unemployed in 1994 I was turned down by a number of firms because I didn't have a degree. Some firms have just been like that for ever :(

      --

      Build a Man a Fire, and He'll Be Warm for a Day. Set a Man on Fire, and He'll Be Warm for the Rest of His Life.

    3. Re:I am a blue collar coder by Lando · · Score: 1

      That may be for some firms, but when it becomes endemic to the entire industry is what I was trying to point out.

      --
      /* TODO: Spawn child process, interest child in technology, have child write a new sig */
  6. Of-course by udachny · · Score: 4, Interesting

    I have been arguing this for quite a while, there should be more apprentices and fewer university graduates with insurmountable debt, however this is not going to happen given the labour regulations, tax incentives, even inflation. All of these prevent jobs from appearing. A businessman doesn't need an incentive to hire people, his incentive is to make more money, it exists already. What he needs is not to have incentives to do things that are not actually useful to him. A business could have a bunch of apprentices, if it was possible to pay them a very low wage. As things stand (never mind the inflation, which kills savings and jobs), the labour law makes it illegal to hire people below minimum wage while still allowing to have students as 'apprentices' who have to work for free. All this does is incentivizes the kids to go to higher education, where they don't actually need to, while working for free as apprentices, while getting deeper and deeper into debt. Instead the kids must be able to skip school entirely and learn the trade at work making a little bit of money, that would give them an incentive to show up and do the work, while not getting into debt and learning the skills. This is something that businesses have always done before governments screwed this up.

    1. Re:Of-course by thePowerOfGrayskull · · Score: 1

      Maybe as individual programmers we should hire apprentices.

      They could fetch coffee, make copies, and clean up compiler warnings behind us.

    2. Re:Of-course by udachny · · Score: 1

      It's not a bad idea at all, question is, can you afford that apprentice at the minimum wage (and multiply the minimum wage by 2, because the cost is not just the wage, there are taxes and various mandates and there is liability due to gov't interference).

    3. Re:Of-course by Alex+Belits · · Score: 1

      clean up compiler warnings behind us

      Die in a fire. If you are not writing your code in a way that does not produce compiler warnings, you are doing something seriously wrong.

      --
      Contrary to the popular belief, there indeed is no God.
    4. Re:Of-course by maple_shaft · · Score: 1

      Tell me how governments are preventing the hire of apprentices? Companies are free to hire anybody they want to as long as they abide by labor laws so I am not sure what your complaint here is. Are you upset that the government enforces a minimum wage and that these apprentices would need to be paid a minimum wage? Surely if these apprentices brought any value to your organization at all then they would be equal in value to the cost of the guy making your burger at McDonalds or greeting you at Wal Mart. Any coder, no matter how inexperienced is a bargain at minimum wage.

    5. Re:Of-course by udachny · · Score: 0

      You can surely follow the links that I have already provided to my previous comments (and clearly my previous comments are under my first account, which is not usable right now, but I assure you, both accounts are for the same person). I explained it already.

      An apprentice is not exactly an experienced worker, that's the actual reason he is an apprentice. He starts from nothing, no knowledge, no useful skills (at least no skills and expertise that he can have in a resume, otherwise he wouldn't be an apprentice).

      As such, he is of very limited use to an employer, still, employers have historically hired apprentices before government started interfering with various labour related laws, entitlements for the employees, obligations for the employers, messing with the contract law. That is part of the problem. Another part of the problem is the moral hazard created by the government, which supposedly promises to produce skilled employees with this 'public education', whatever it is, and thus employees do not feel that they have to invest into training employees in their field.

      All of this is detrimental to the apprenticeship programs, all of it removes incentives that exist in the Free Market for the employers to hire unskilled workers and to train them on the job. Gov't guaranteed education loans are also a moral hazard, which simultaneously creates inflation in the values of education levels, while putting all students into an ever growing debt. The debt comes out of the loan guarantees, which create artificial demand for more and more levels of formal education, while actually reducing the quality of the education, because no educational institution wants to forgo the easy money coming their way. Everybody is given their token high school diploma, their token college degrees, more people feel they need to get more levels of education. Masters, PhD, whatever, and this inflates the education bubble further.

      Yes, the companies must be able to hire unskilled labour force without any artificial price floors (and that's what minimum wage and various other entitlement regulations and liabilities are). Yes, government should not be guaranteeing student loans (or any other loans for that matter, all government guarantees are fake and can only be paid because of inflation - money printing).

      Yes, kids should be able to skip college and just ask an employer to hire them at a low cost, promising to stay with the employer for a few years as they learn and become actually useful employees, which eventually will allow them to command much better employment opportunities and conditions, and at the same time they would not waste time and would not get into insurmountable debt that the system forces them into.

    6. Re:Of-course by Anonymous Coward · · Score: 0

      your religious mantras that you just recited were - to be kind - vague answers to the question that was posed to you, and more realistically could be called an outright dodge of the question. just come clean and admit that you look fondly on the idea of slavery - provided you are the master, of course - and be done with it. it is a well-known tenet of your religion, and your dancing around the matter isn't fooling anyone.

    7. Re:Of-course by Lando · · Score: 1

      The problem of course is most employers don't know enough to ask the right questions from prospective employees. And with the glut of CS majors that have been turned out, they don't have time to have someone knowledgeable look at each candidate so they try to whittle down the prospectives by requiring a degree. Probably not the best solution to the issue, but that's the way it is. Figure out how to effectively interview candidates and things might have a chance to correct themselves, but failing that the majority of employers are going to use a college degree as a way of limiting the number of applicants they have to look at.

      --
      /* TODO: Spawn child process, interest child in technology, have child write a new sig */
  7. That's a Very Generic Thesis by eldavojohn · · Score: 4, Insightful

    This makes sense to me. Most of the best programmers I've known are guys who otherwise would be installing air conditioners, fixing big trucks or re-wiring buildings.

    There is a substantial amount of math and logic that should be used as a foundation for programming. I know the coworkers that would otherwise be installing air conditioners when I ask people if they thing we could use a more functional-type language for a new project instead of an object oriented language. You're usually met with blank stares.

    Coding is not a profession. It's a skill

    This could be said about anything that people pay you to do. Anything.

    which is a part of a series of job descriptions and career paths, but in itself it's a form of knowledge more like what an electrician has than what professionals like architects, doctors, lawyers and assassins must know.

    What? Look, I think you're trying to discuss what you feel is the percentage between creativity and regurgitation in each of the above subjects. And I will tell you right now that all those fields are diverse with jobs that require more than one of the other. If you want to say programming requires more creativity and that's something that cannot be taught then at least give me a compelling argument for that.

    Bring back the hacker aesthetic. Professions are for those who want to super-specialize and master specific high-level skills. Hacking is something anyone with the gumption and dedication can do. As the world expands into mobile devices, ordinary people are writing code every day.

    If only you could see the spaghetti code I've seen. Ordinary people are free to write code, in fact I love that and I hope that continues to expand. But when you're talking about commercial grade software being written for a company that is being sold to people for real money ... that's when I start to cringe that "good enough to tinker with in my home means good enough to be deployed to millions of personal devices across the world."

    That being said, CS needs to find a new career type that might belong to professions. I suggest "product architect" (like Steve Jobs) and "total systems integrators" (like what the Google guys do, interoperability) for those who will need college degrees or equivalent and a professional mindset.

    Personally I value my liberal arts college degree and I think my employer does as well. I can communicate better with customers and I now understand much more of the world now than I did in high school (when I thought I knew everything).

    You're free to apply to jobs but when you're going up against people who have rigorously studied mathematics, logic, philosophy, English, etc you have to be ready to show an employer what you're made of before your application is automatically rejected by some routine resume sorting algorithm. It's not that those algorithms are correct, it's just that employers are too lazy to spend two hours with every single person on the planet trying to find the right applicant. Instead, if I didn't go to college, I'd buy a virtual private server and be going to town on developing things that look good so I can show them off. Honestly, I think it was easier, more fun and more eye-opening (yet way more expensive) for me to go to a liberal arts college. It's your life, so do what you want. You can tell the recruiters they're doing it wrong but then again it's their job and that's their decision. This sounds like some very talented hackers venting about the problems with entering into the workforce.

    --
    My work here is dung.
    1. Re:That's a Very Generic Thesis by Attila+Dimedici · · Score: 2

      If only you could see the spaghetti code I've seen. Ordinary people are free to write code, in fact I love that and I hope that continues to expand. But when you're talking about commercial grade software being written for a company that is being sold to people for real money ... that's when I start to cringe that "good enough to tinker with in my home means good enough to be deployed to millions of personal devices across the world."

      Have you seen the wiring put into houses by people who are "good enough to tinker with in my own home" when it comes to electrical work? It makes spaghetti code look straightforward. I've known several people who were very good "handyman" electricians. If you needed one new outlet run, or a single light fixture added, they were very bit as good and reliable as a certified electrician. But, if they wired more than five or six circuits in a house (usually only happened if it was the house they owned and lived in), if you needed someone else to wire anything in the house (such as after they sold it) you would usually have to rewire the whole house in order to figure out what outlets and fixtures were on what circuits.

      --
      The truth is that all men having power ought to be mistrusted. James Madison
    2. Re:That's a Very Generic Thesis by ThorGod · · Score: 1

      Personally I value my liberal arts college degree and I think my employer does as well. I can communicate better with customers and I now understand much more of the world now than I did in high school (when I thought I knew everything).

      Liberal arts degree, 'eh? Your comment's great, but there's one too many "now"s in this sentence! XD

      --
      PS: I don't reply to ACs.
    3. Re:That's a Very Generic Thesis by FlyingGuy · · Score: 2

      There is a substantial amount of math and logic that should be used as a foundation for programming. I know the coworkers that would otherwise be installing air conditioners when I ask people if they thing we could use a more functional-type language for a new project instead of an object oriented language. You're usually met with blank stares.

      So very sorry but I must take exception with this. The "substantial amount of math" comes down to the 4 basic operations. Even partial differential equations come down to it with lots of looping. Really good programmers are not mathematicians for the most part. Really good programmers understand the machine and mathematicians dream up equations that do "something" and then explain in terms that can be translated into code.

      And as to the bit about functional -v- object oriented languages, your tipping your "coding snobbery" hand a bit and indicating you are the kind of person who just wants to play with the newest toys. All the languages out there are mostly based on C and no one has yet been able to come up with anything that is actually better, but is rather simply a derivative. Yes syntactic sugar abounds but strip that away and you have C. Functional languages are almost pure syntactical sugar as the underlying code that is generated is still the basic loop and branch that applies to all languages regardless of their style and name.

      --
      Hey KID! Yeah you, get the fuck off my lawn!
    4. Re:That's a Very Generic Thesis by LMariachi · · Score: 1

      you would usually have to rewire the whole house in order to figure out what outlets and fixtures were on what circuits.

      You never heard of a breaker finder?

    5. Re:That's a Very Generic Thesis by Attila+Dimedici · · Score: 1

      Yeah, I have. I suppose you could work that way, but it really is a pain to have to track every outlet and fixture in every room so that you know for sure that that circuit breaker you thought only had one small item on it is not already operating at close to its capacity because the amateur electrician (who knew where he ran everything on every circuit) had put something that draws a lot of juice on the other side of the house on that circuit because there was nothing on it.

      --
      The truth is that all men having power ought to be mistrusted. James Madison
    6. Re:That's a Very Generic Thesis by LMariachi · · Score: 1

      Veering way off-topic here, but why don’t circuit breakers have built-in ammeter displays? Breakers are plenty expensive enough it wouldn’t add much to the cost percentage-wise.

    7. Re:That's a Very Generic Thesis by Anonymous Coward · · Score: 0

      Personally I value my liberal arts college degree and I think my employer does as well.

      Personally I don't believe most employers care about your degree beyond the fact that you have one after your first job in the field. Experience speaks louder than grades.

    8. Re:That's a Very Generic Thesis by david_thornley · · Score: 1

      The "substantial amount of math" comes down to the 4 basic operations. Even partial differential equations come down to it with lots of looping.

      Nope; you're confusing math with calculation. It's useful to be able to calculate values from partial differential equations, and that is a matter of repeated arithmetic. It's also useful to be able to say something about the solution directly (e.g., that the solution is periodic), and that's not possible from that arithmetic. Moreover, it takes the math to say how to break the calculation down into arithmetic. If you know no math other than arithmetic, then the most you could do in solving differential equations would be using somebody else's canned routine, or translate somebody else's algorithm painstakingly into code - and then you'd probably not do a real good job, since you wouldn't know the most likely problems. I'm not sure I'd call you a programmer if you merely implemented something else slavishly without understanding, since I consider programming to be the transition between what is really wanted and a formal representation.

      Really good programmers know well what needs to be done, and how to do things on the computer. In many fields, this will include some sort of domain knowledge. Back when I was writing some accounting code for an employer, I'd have done better if I'd had a reasonable knowledge of accounting. This is one sort of thing where a BA will be useful: having some framework to pick up domain knowledge easier. Somebody who's merely a good C hacker will not know where the person sketching out the system simplified and what sort of questions to ask.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
    9. Re:That's a Very Generic Thesis by Anonymous Coward · · Score: 0

      All the languages out there are mostly based on C and no one has yet been able to come up with anything that is actually better, but is rather simply a derivative.

      You haven't done much relational database work.. ? Not only is the language completely different, the required thought processes on the part of the developers can't really be compared either.

  8. Computer Science is applied math by sjbe · · Score: 2

    Why would we want more un/under educated programmers?

    Because there is a lot of work that needs to be done that doesn't require a degree in computer science and people with those degrees tend to be expensive. You don't want under educated people but there is a cost to having over-educated people as well.

    Programming is applied Math and very few high school students are going to be equipped to do it well.

    Computer science is math whereas programming can be a bit more abstract than that. Programs are a set of instructions to a machine and sufficiently abstracted it really doesn't require deep knowledge of math for someone to do useful work. While ultimately any computer program can be reduced to mathematical equations, the actual programming often really isn't math from a practical standpoint. To use the simplest possible example, I don't need to know any mathematics to write "hello world". Up to a certain level, being able to instruct a machine requires little/no specialized training. Think of it a bit like saying that an electrician putting some wires in your house should require a bachelors degree in electrical engineering - the extra training would be pointless almost all the time. Lots of useful work can be done by those with less formal training.

    In fact it's to our benefit to write tools to make simpler problems solvable by more people and free up those who are more highly trained working on more difficult problems. That said, there does come a level of sophistication where you need someone with more understanding of the underlying concepts. Just like a nurse can help you to a point but once the problem gets sufficiently complicated you need a doctor who has a deeper understanding of what is going on.

  9. what use? by O('_')O_Bush · · Score: 2

    Sure, this would be great if programs required no math, were short, single threaded, didn't require complex algorithms, and didn't require interfacing to other things... but that isn't how programming works in the real world. If your design can be done by someone with the education levels or mental faculties of a welder, it can be done by outsourced talent more cheaply anyways.

    What we need is more specialized, difficult, and deep CS programs, not programs that people can sleep through and come out of with little technical knowledge beyond Java application development.

    --
    while(1) attack(People.Sandy);
    1. Re:what use? by gbjbaanb · · Score: 2

      Unfortunately that's all businesses care about nowadays - you're more likely to get a job because you know how to use Visual Studio than you are if you know how to program effectively. Today much of the technical expertise is being eroded in 2 ways:

      Developers being given RAD tools where coding is more "if you do this it just works, don't think how it works, just trust it does". This is particularly relevant in the .NET world where Visual Studio isn't a tool to help you code, its a tool that defines your environment and tries to envelop you in wizards and properties (its the only tool I know that has 2 property sections that refer to different types of properties!). Sure, you can use it as a glorified text editor, but you can also use it as a giant configuration machine.

      The other is obviously the continual chasing of new technologies. Nobody becomes an expert in anything anymore, they;re too busy catching up with the latest, and once there.. its time to drop that old cruft in favour of something shiny and new. Sometimes this is peer/industry pressure, sometimes its forced upon you by the tool manufacturer (Windows Phone anyone?)

      Now I exaggerate slightly, but only so much. There are people who get to code the old-fashioned way, but I think they get called system engineers now, rather than application engineers, and I know a lot of support guys prefer "plain-speaking" files to "magic" packages, but in the whole, the industry of app engineers is definitely moving towards treating programmers as plug-and-configure resources.

      Still, Microsoft will sell you more tools that do more stuff "for you", the Architects will adopt them as they want to play with the new shiny and the PHBs will buy them to keep up with 'latest standards' and the cycle repeats forever.

    2. Re:what use? by Anonymous Coward · · Score: 0

      You need both, you need guys who kick out efficient algorithms and you need those who program the new cristal report for the TPS reports etc.

      What I mean is, you need the guy who actually programs the SQL server and the TPSQL interpreter etc. and you need the guy who uses it to program something with "business value" (except you're selling sql server software).

    3. Re:what use? by The+Snowman · · Score: 1

      Sure, this would be great if programs required no math, were short, single threaded, didn't require complex algorithms, and didn't require interfacing to other things... but that isn't how programming works in the real world. If your design can be done by someone with the education levels or mental faculties of a welder, it can be done by outsourced talent more cheaply anyways.

      What we need are a small number of software architects with C.S. degrees, and a large number of code monkeys with trade school educations. The design and other high level work is done by the C.S. people, and the code monkeying is done by the trade schoolers. This is already what I do for a living -- I handle the hard stuff such as designing the software, and let other people fill in the blanks. I check their work, ensure we have automated testing in place, and deliver the software. The code monkeying is done by C.S. majors who are less capable and honestly wouldn't need a C.S. degree if we had code monkey trade schools.

      This would help all around -- companies could pay less in salaries, the code monkeys wouldn't be in nearly as much debt from student loans, and people would be paid according to their ability.

      --
      24 beers in a case, 24 hours in a day. Coincidence? I think not!
    4. Re:what use? by shutdown+-p+now · · Score: 1

      Sure, this would be great if programs required no math, were short, single threaded, didn't require complex algorithms, and didn't require interfacing to other things... but that isn't how programming works in the real world.

      Actually, you've just described something like 50% (if not more) of programming in real world - all those non-glamorous line-of-business apps for internal use, which are usually glorified form entry frontends for a database with some basic number crunching.

    5. Re:what use? by Compaqt · · Score: 1

      >Sure, this would be great if programs required no math, were short, single threaded, didn't require complex algorithms,

      You just described the everyday CRUD program running in almost every business in the world. Goes something like this:
      1. Show search field for patient name.
      2. Show patients matching that name.
      3. After user selects it, show that patient's record.
      4. When user clicks save, save the updates.

      Where's the math, the multithreading, the complex algorithms? (Other than in the OS and the DBMS.)

      >and didn't require interfacing to other things..

      And what would those be? I doubt they spent 5 months talking about CSV, XML, REST, or RPC at your college.

      If you're interfacing to an oscillator or some weird piece of scientific machinery, you might need some complex math. Or not, if you've bought it off the shelf, and the manufacturer provides a Visual Basic API, as many do.

      --
      I'm not a lawyer, but I play one on the Internet. Blog
  10. H1-B Hell by Anonymous Coward · · Score: 1

    Why should someone pickup coding as a trade? They'd be on permanent unemployment due to the infestation of H1-Bs.

  11. In all the years of programming .... by Anonymous Coward · · Score: 0

    In all my years of programming, the most math I've ever used was some linear algebra for a custom UI I did and maybe you could argue some discrete math for a database query I did.

    Never needed calculus - ever. My philosophy class came in more handy.

    But saying programming is applied math is a stretch in business environments.

  12. Germany - 1960's by MadMaverick9 · · Score: 4, Informative

    They've had that in Germany since the 1960's.

    http://de.wikipedia.org/wiki/Mathematisch-Technischer_Assistent

    1. Re:Germany - 1960's by Anonymous Coward · · Score: 0

      Not to forget the Datenverarbeitungskaufmann, who evolved into Informatikkaufmann, IT-Systemkaufmann, Fachinformatiker (both flavours).

    2. Re:Germany - 1960's by Anonymous Coward · · Score: 1

      I have yet to meet somebody who is a Mathematisch-Technischer Assistent and actually knows how to program. And I don't mean well, but actually create a non-trivial program that somehow works, not even considering boundary conditions and optimization. These people usually just want to do IT and it seems their programming tests are very easy to pass.

    3. Re:Germany - 1960's by Anonymous Coward · · Score: 0

      I've met German CS/Business Informatics graduates who weren't even able to write a simple loop.

    4. Re:Germany - 1960's by Anonymous Coward · · Score: 2, Informative

      A highly misleading post, not least since the link is in German.
      Yes, MTAs have been around for quite a while, but they require either a "Realschul" Diploma or a full-blown Abitur (says so in the linked article), which more often than not includes material that's usually taught in freshman years at colleges in the States.
      So, it's back to the main point, namely, that you need to go to college for at least a year in the States. Then you might as well finish your CS degree.

    5. Re:Germany - 1960's by dunkelfalke · · Score: 1

      I think Fachinformatiker - Anwendungsentwicklung is more fitting

      --
      "It's such a fine line between stupid and clever" -- David St. Hubbins, Spinal Tap
    6. Re:Germany - 1960's by Anonymous Coward · · Score: 0

      There is a difference between "I have yet to meet" and "I have met".

  13. Proven technologies by Errol+backfiring · · Score: 1

    Dash also suggests 'changing the conversation about recruiting technologists from the existing narrow priesthood of highly-skilled experts constantly chasing new technologies to productive workers getting the most out of widely-deployed platforms and frameworks.

    Wait, no more bleeding edge hacking? What in the world is left for the sales drones to do?

    --
    Nae king! Nae laird! Nae yurrupiean pressedent! We willna be fooled again!
  14. IT / tech needs apprenticeship not years of colleg by Joe_Dragon · · Score: 2

    IT / tech needs apprenticeship not years of college with big skills gaps.

    And the tech schools get dragged down by having to be part of the college systems and some of the college time table.

  15. Right... by Anonymous Coward · · Score: 0

    Because blue collar jobs are looking so great for Americans right now.

  16. Junior coders, nothing new by Anonymous Coward · · Score: 0

    Simple maintenance and utility coding is usually done by what we used to call Junior Programmers; haven't seen any around in a while so I don't know what they're called these days. Usually had a associates degree, did sloppy work, and ended up costing more than someone who know what they were doing. But their salary was less so management though they were getting a great deal.

    1. Re:Junior coders, nothing new by tibman · · Score: 1

      Unlike the Senior Programmers, who were never Junior.

      --
      http://soylentnews.org/~tibman
  17. There is to much put on degrees and the name of sc by Joe_Dragon · · Score: 1

    There is to much put on degrees and the name of school over real job experience and NON degree classes.

    There are lots of people with degrees and big skills gaps and lot's people who have real skills but no degree or a tech school degree.

  18. Coding is entry level for 90% of jobs by Anonymous Coward · · Score: 1, Interesting

    I was a hard core cross-platform, client/server C/C++ developer for over a decade. Basically, I wrote code for every platform except VAX. Before that, I wrote code for an extremely specific embedded space craft system and after that, I became a systems architect, software architect and enterprise architect.

    Writing code in the real world is very different from learning to code in the class room. For small, trivial projects, like 90% of web sites, a community college coding trained person can be re-trained to be useful and productive. I teach at a local "commuter university" ... that feels more like a community college to me. The vast majority of students are confused by anything that is not memorization, but a few are brilliant and could easily compete at Stanford, MIT, GA-Tech, and similar tech-centric schools. These are the students that I try to help.

    If the others don't switch to different majors, they will be flunked out after 2 yrs.

    The lack of talent for software isn't really true, but talent wants to be paid better than average salaries and they want better environments.

    I stopped coding because coding was only $75/hr (about $150K/yr) and I could earn $200+K/yr as an "architect." Wouldn't you switch too?

    I also stopped coding because the schedules were always too tight - usually completely unrealistic for the tasks and I was tired of working 80+ hrs per week.
    As an architect, my work week became predictable - usually 40-45 hrs/wk. So, I'm working fewer total hours, more predictable hours, I have a greater input to system design and outcomes, and my true hourly wage $/hr is much, much higher .... only an idiot would remain as a coder given those choices.

    Coding is entry level for most people. Average people will eventually see their positions replaced by younger, cheaper entry level coders. Moving up and out of coding becomes necessary if you want a longer career in software or computer technology. There is always room for truly talented software people ... the top 5-10%. Many of those people, like me moved on to have more impact, more control and a much better lifestyle.

    I miss coding, but I don't miss all the other aspects. As a coder, anything I wrote ... anywhere became the property of the company according to the employment contract. As an architect, that wasn't included in the contract. My hobby coding was mine. Another reason to leave coding.

    I forgot to meantion, I went free-lance as an architect and bumped my pay plus I get 3+ months off a year. Usually I travel.

    So, if you want "coding talent", the environment needs to change to be much more flexible, greater control over work schedules and time off.

    Perhaps I've just been lucky. Perhaps my "talent" lies in being an architect, not with software development?

    Perhaps I'm just a troll here pointing out how great it can be after leaving the coding daily grind.

    One last thing - certain very popular languages have completely destroyed the software development as an art progression.
    * Java - 90% of these developers are clueless. They really believe that the OS and physical machine don't matter. Idiots.
    * Php - I learned to code by reading a book group. People that only learned php have become the destroyers of solid software development. The entry barrier became too low so that almost any idiot could get something working. There's a big difference between working, and working well AND securely.

    I don't want to say that all php or all java programmers are idiots. There are some true experts and arteeeeests using those languages. It is the masses who program in those languages that are a waste and should be flipping burgers somewhere for the safety of the world.

  19. Might want to take a look at Switzerland by Anonymous Coward · · Score: 0

    I did something like that 8 years ago: In Switzerland there are 3-4 difference apprenticeships for IT workers (hardware, support, network, developer).

    Takes you 4 years, you learn the basics of algorithms (sorting, mostly) and solving many real world problems in practice and theory. This does not result in world class programmers you find at the obvious big IT companies, but it gives the banks etc. what they need.

    Plus, it offers a clear path for those who want to study later on (what I did).

    Here you'll find the website (german/french only, sorry, also google translate does not work with its JS)

  20. Re:Done and failed over a decade ago in Germany by Anonymous Coward · · Score: 1

    If it's anything like the job market in Sweden they are most likely rejecting potential employees with four-year degrees because they lacked "core skills" in some in-house app which they helpfully enough made sure to first train a bunch of "consultants" somewhere else in (actually ran into this one once, the guy handling the recruiting didn't seem to happy about it but implied someone else had made the decision and he was honest with me about it, his bosses had paid to have Indian "experts" trained on their in-house software so they could pretend like they had to offshore their coding jobs (or rather, "import" Indians long-term) to get the required skills).

    The employers here in Sweden are constantly screaming about the lack of qualified developers yet its not unusual to see junior web dev positions advertised as clearly only for people with at least a MSc in CS and a couple of years of industry experience. That's like demanding all your janitors have degrees in Architecture or Building Services Engineering...

  21. degrees take to long and can cut out people who ar by Joe_Dragon · · Score: 1

    degrees take to long and can cut out people who are not college material. But can do the job / handle Community Colleges and tech schools as they are a better fit for people like that and are have more hands on learning.

    Also degrees are a poor fit for continuing education in the IT field.

    Also there is a lot fluff and filler in a degree and it can be cut down to maybe 2-3 years or better yet for some parts of IT a mixed 1-2-3 years of class room and on the job apprenticeship.

  22. The Case for the "Blue Collar" Coder by Anonymous Coward · · Score: 4, Interesting

    "U.S. tech talent shortage discussions tend to focus on getting more young people to go to college to become CS grads"

    THERE IS NO TECH TALENT SHORTAGE. What there is, is disinformation about what one needs to really
    know to really program. Plenty of unemployed and students out there who have figured this out.
    But they are blocked out of the market by both employers, employment agencies and state unemployment offices
    who don't have a CLUE as to the nature of the skills needed and have created a ridiculous artificial set
    of evaluative criteria.

    In addition, there are brilliant programmers out there with no degrees or associate's degrees or liberal arts degrees.

    Also, you do NOT need calculus to program or be a software engineer.
    You do NOT need Dykstra.
    You do NOT need to know how to write a compiler.

    There is no "Blue Collar".... there are competent skilled programmers, reasonably skilled ones, screw-ups, and Ivy League graduates with big degrees who would not last a 10th of a second in real world programming. I know, I've worked with all of them.

    There is one key JOB REQUIREMENT in this field. The ability to deal with the unknown, to learn and to adjust. Period.

    Reading and communication skills are paramount too. Above all else.

    From a retired Software Engineer of 32 years experience

    1. Re:The Case for the "Blue Collar" Coder by dkf · · Score: 1

      Also, you do NOT need calculus to program or be a software engineer.
      You do NOT need Dykstra.
      You do NOT need to know how to write a compiler.

      Unless the problem domain that the software is being created to deal with does require those sorts of things. If you're doing physics modeling, you really do need calculus. If you're building a compiler (hey, someone's gotta do it!) then you'd better know about the theory behind it. (I've seen "compilers" done by people with no grounding; that's not an experience I wish to repeat.) Of course, that's also true if you're working with financial software, where knowing what is going on in finance calculations is really important, and I know from talking to people doing image processing that (mathematical) analysis is a super-useful skill there. There's lots of programming that doesn't need parallel systems theory, or deep knowledge of security, but I've always found them useful for what I do.

      The short version: it all depends on what you're doing.

      --
      "Little does he know, but there is no 'I' in 'Idiot'!"
  23. Looking at things the wrong way. by Jartan · · Score: 2

    The problem with looking at coding this way is too many people will fail. When you're looking for a vocation/apprenticeship the last thing you want is something risky.

    It's also way too volatile. Training to be a "microsoft .net programmer" is insane. You're whole profession could get flushed down the toilet instantly.

    All that education is necessary to constantly retrain yourself.

    1. Re:Looking at things the wrong way. by Anonymous Coward · · Score: 0

      In my experience, most people who will wash out do so in programming 1.

      We're not talking about theoretical programs here. There are tons of associates degrees already available from community colleges and places like itt tech. I've worked with people with these degrees. Some are very good.

    2. Re:Looking at things the wrong way. by Anonymous Coward · · Score: 0

      You are assuming that the non-degree training is the current certification route, which is volatile in content and there are "schools" that try to enroll people just for their money. An apprenticeship MIGHT be totally different.

  24. Is This Rhetorical? by bistromath007 · · Score: 2

    What I mean: the article says "let's not forget that we can do this, too!"

    Can we? I've... never heard of anything like this. Which annoys me, because I'd really like to do it. I want to learn coding, but I am not a self-motivated hacker stereotype. I need a project given to me, and if I'm operating without guidance, there is a ceiling on the types of problems I can solve in a timely fashion. I'm not stupid, but I'm not brilliant either, or at least I haven't been called that since high school, (which I dropped out of) and generally programming is considered something only a supergenius should be allowed to do, especially by programmers.

    I know this isn't true, as I've taken a programming course once at a community college and did well and enjoyed myself. But taking a course means I get to do a bunch of stuff that I never use because I can't find work related to it, if at all, and so I forget it. An apprenticeship is the only way I can think of that would supply me with steady work to cement the skills in my head. As far as I know, apprenticeships do not exist, because those who would be masters usually believe in the old-school cowboy hacker DIY-elitism. The most help they'll offer is "here's a book about a language you might be able to understand. Get to work, you pleb."

    What work? I have no idea what I want to code! Just give me something.

    1. Re:Is This Rhetorical? by hackula · · Score: 1

      Apprenticeships? No. Internships? Oh yes. Internships are an easy way to learn about solving real world problems. Of course, you cannot expect to get spoon fed. Programming just does not work like that.

    2. Re:Is This Rhetorical? by bistromath007 · · Score: 1

      This is exactly the kind of response I'm calling bullshit on. There's a vast array of approaches between "copy all this garbage down" and "stop drowning." I've done programming before. There is not some divine inspiration that you have to find for yourself through meditation.

      Programmers: you're not goddamn wizards. People think you are mostly because you're intentionally poor teachers. Quit it.

  25. Absoultely correct by Anonymous Coward · · Score: 0

    Yep, what this country needs is to rein in the salaries of all those techies.

    It's uncomfortable enough to the upper classes that "these people" think they are worth paying at all.

    If the poor (and yes, that includes anyone who works for a living) would just learn their place things would go so much more smoothly.

  26. The next Zuckerberg? by aNonnyMouseCowered · · Score: 4, Insightful

    You mean the next undergrad to drop out of college thinking he can change the world with one hot idea? Education would be wasted on the next Zuckerberg. Just introduce him to some venture capitlaist with money to burn and let the wheel of fortune spin.

  27. Re:Done and failed over a decade ago in Germany by Anonymous Coward · · Score: 0

    What happened to those who finished the apprenticeships? Or were there never many to begin with?

    In the small country south of Germany, I know about 30 people who did an apprenticeship in IT and now work for software companies, banks, insurance companies - you name it - along with their fellow coworkers who may or may not have a degree. A success IMHO.

  28. In other words... by J'raxis · · Score: 0

    ...now that IT is a firmly established sector of the economy lead by an elite, we should encourage new tech workers to just be satisfied being life-long, middling employees of that elite.

    The modern American dream: Working for someone else your whole life. Be happy you have "job security" and "benefits," peon.

    1. Re:In other words... by judoguy · · Score: 2
      That's really the historical American dream. Most people will only want to work somewhere where they get decent pay for decent work, but no real hope of wealth. It's the exceptional person that is willing not to just move up in a company over time, but to really make the effort to go for the gold.

      I see this all the time in business, sports, entertainment, investing, etc. Most people are willing to work for a tangible reward, but only a few are really ready to risk everything for huge success.

      I'm not talking about lottery ticket buyers here, but people willing to take calculated risks in a productive way knowing that they might fail and will pick up the pieces and try again if it fails. Probably the best world has a stable base of workers from which true entrepreneurs can launch.

      --
      Peace is easy to achieve, just surrender. Liberty is much harder get/keep.
  29. My god, it's a liberal arts major :) by concealment · · Score: 4, Insightful

    I enjoy your comments on the site, so you'll get more than the standard drive-by response from me.

    There is a substantial amount of math and logic that should be used as a foundation for programming. I know the coworkers that would otherwise be installing air conditioners when I ask people if they thing we could use a more functional-type language for a new project instead of an object oriented language.

    First, I'd like to make it clear that I am not scornful of these fields. Air-conditioning installing, building wiring, etc. are not devoid of creativity and intelligence requirements.

    In fact, like programming, there's a huge gulf between doing it and doing it right that is determined by degree of intelligence and creativity.

    You may find that intelligence level is the difference between the blank starers and the thinkers, if you look back over the years.

    Look, I think you're trying to discuss what you feel is the percentage between creativity and regurgitation in each of the above subjects. And I will tell you right now that all those fields are diverse with jobs that require more than one of the other. If you want to say programming requires more creativity and that's something that cannot be taught then at least give me a compelling argument for that.

    I'm not communicating effectively here. I'm not trying to make this a comparison of creativity levels, or regurgitation, except to say that I think education over-emphasizes regurgitation, which is not the skill that differentiates an excellent programmer from a hum-drum one. This was a statement I made in support of the apprenticeship idea.

    Professionals are different from all other careers in two crucial ways: first, they must be able to handle a huge amount of detail and balance those details against one another; second, they are responsible for greater impact than most others, and as a result need to have critical thinking, leadership and human perception skills that are not normally required.

    I'm thinking of doctors, lawyers, CEOs, architects and probably a few other groups here. I don't know if creativity is what is needed; most jobs call for inventiveness, or the ability to apply different forms with a bit of fudging so that new uses arise. But so does life itself.

    Are we shuffling too many people into these professions? Yes, unquestionably so, just like we're sending too many people to college. This doesn't mean we should forget what these professions actually require, especially since most who attempt them fail.

    If only you could see the spaghetti code I've seen. Ordinary people are free to write code, in fact I love that and I hope that continues to expand. But when you're talking about commercial grade software being written for a company that is being sold to people for real money ... that's when I start to cringe that "good enough to tinker with in my home means good enough to be deployed to millions of personal devices across the world."

    Why do you assume I haven't seen similar forms of spaghetti code? The first workplace skill I mastered was Lamaze breathing so I could avoid shouting expletives when looking over other people's projects. However, I'd be lying if I said these people were not well-credentialed. Some came from what are considered good schools and had good resumes, and make more money than just about anyone else.

    Ordinary people are going to be writing more code. For most coding, what is required isn't a mystery. In fact, it's well known and well publicized, so that cut-paste-and-modify programming will continue to be the norm. If you haven't looked at the average web developer these days, you might take a peek, and you may see where programming is going. Mastery of libraries, frameworks and commonly needed syntactical devices has replaced the roll-your-own coder.

    You're free to apply to jobs but when you're going up agains

    1. Re:My god, it's a liberal arts major :) by Anonymous Coward · · Score: 0

      I've never understood why the "roll-your-own" coder is so valued around here. Hasn't programming always involved using libraries and syntax developed by another person to create something new? I guess not if you're a programming in binary. Although even then, someone decided the binary CPU was better than the rest.

  30. Re:IT / tech needs apprenticeship not years of col by Anonymous Coward · · Score: 0

    In the US we have a 4 tier training regime.

    1) you learn it as you go make lots of mistakes and hopefully are around someone who is any good to help guide you a bit. Then study at night and try to get your 4 year.
    2) you goto a 2 year college prep school then do 'ok' out in the real world and hopefully are around someone who is any good to help guide you a bit. Then study at night and try to get your 4 year.
    3) you goto a 4+ year college and then hopefully are around someone who is any good to help guide you a bit.
    4) all the above end up with OTJ training anyway and you better take it or you will be out by you are 40

    You can succeed as 1 and 2. There are many out there. Some of the most successful people in our business never finished 3. However, 1 and 2 are at a disadvantage from the HR filter sort POV. You are missing a degree. HR gets 400+ resumes for every position open they will use many filters.

    Apprenticeship is an excellent idea. In fact we used to do this. Right up until the mid 90s. Then suddenly everyone had to know everything after step 2. I was lucky to have a very good guy help turn me into a decent programmer.

    Some shops will not even look at you unless you have a masters degree or better. Instead of training someone to do things now we just drop people in and expect them 'to hit the ground running'. Which makes it even worse as the very people who should be helping train better people are not able to as there are NO junior people. So they do not get the exp of training. Which means you can not even home grow people even if you wanted to.

    Part of the issue is we want masters/doctorate level people with 15+ years exp and pay entry level wages. We need to be realistic.

  31. "U.S. tech talent shortage" Myth by Anonymous Coward · · Score: 0

    There is no shortage. There is only a shortage of qualified people willing to work for substantially below market value wages.

  32. Re:degrees take to long and can cut out people who by h4rr4r · · Score: 1

    Which leads to the contractos I have to deal with. They have no idea how anything actually works, just the knowhow of which button to press when in some program. If anything breaks they are lost, firing up wireshark and watching packets on the wire is totally beyond them. They would not even know what to look for.

  33. Same old whine by 0xdeadbeef · · Score: 4, Interesting

    Beware anyone who calls your profession a "priesthood", because he operates under the assumption that he is entitled to more than you, is either jealous or contemptuous of your market salary and wants to put you in your place. For whatever reason our culture regards doctors, lawyers, stockbrokers, and CEOs as deserving the benefits of scarcity, but it is a huge problem when you can't you hire a computer nerd for less than six figures. If you aren't an extrovert, you don't deserve to be on top of the status hierarchy.

    We already have vocational technology education, but it's widely regarded as a joke. Putting it in high school isn't going to change that. And if you have the knack for it, learning programming or learning computer maintenance is easy. After all, every time the subject of college degrees come up, there are always people very adamant that they didn't need one, and that "the best people I know didn't go to college". So if it is unnecessary, why are they arguing for "blue collar" programmers? These people argue "nature" in one breath and then "nurture" in the next. Dash is actually saying that the self-educated or non-degreed don't deserve to be considered "white collar" professionals.

    Dash also makes the mistake of conflating programming with "IT", something the Slashdot peanut gallery is also apt to do. I'll leave that stupidity for a different flame war.

    1. Re:Same old whine by Anonymous Coward · · Score: 0

      If you're so blamey foolish to piss on education, I can only think that you're one step removed from the peasant/redneck who is both ignorant and denies it.

      I self-taught myself programming with a side of software engineering. Then I went and got a CS degree, and my work quality and work output improved due to the *education*.

      I have seen the output of non-CS programmers and CS programmers, please give me CS programmers.

    2. Re:Same old whine by 0xdeadbeef · · Score: 1

      WTF dude, find the part where I piss on education. Better yet, cmd-F and look for "college".

      But you'd be foolish to assume that people without CS degrees can't produce work of the same quality. The only people you can actually assume can't code worth a damn are electrical engineers and Mormons.

  34. Re:Done and failed over a decade ago in Germany by Anonymous Coward · · Score: 0

    I can only tell you that I have worked for a decade in the IT as developer, done Websites and -apps (Gaming, local business, intranet, online calculators for the construction industry), Desktop software (Controlling, Finance), any flavor of SQL (My, Ms, PostgreSQL, Oracle), javascript + whole library shebang, Unix/Linux/*BSD/Windows, much, much more and got certified "application developer" after that one decade by the chamber of commerce in an external exam.

    Now that I am certified I went to a few job interviews and demanded 1.200 EUR; after taxes. My demand was being honored with over-the-top raised eyebrows, almost accompanied with hysterical laughter in the 5th biggest, one of the richest and most important cities of Germany (Frankfurt am Main).

    I rather go do night shifts at McDonalds or Burgerking than signing a contract for 40 hours/week and do 60 hours/week with tight deadlines.

  35. Uh, shortage? by rsilvergun · · Score: 4, Insightful

    There's no shortage of tech workers, which is why you can't get college bound kids interested. Off shoring + H1B Visas has seen to that.

    I'm pretty skeptical of this entire story. In my experience whenever anyone talks about retraining blue collar workers for tech work it's just a desperate attempt to deal with the fact that robots and outsourcing have made these people obsolete, and we want to pretend there's something for them all to do besides starve...

    --
    Hi! I make Firefox Plug-ins. Check 'em out @ https://addons.mozilla.org/en-US/firefox/addon/youtube-mp3-podcaster/
  36. Craftsmanship doesn't come without understanding.. by Fished · · Score: 3, Insightful

    I actually regard the fact that someone could say this as a great example of why computer science education is broken. The reality is that there's a tremendous amount of REALLY BAD code out there, written by C.S. Majors and non-C.S. Majors alike. I'm minded of one case where a self-taught perl programmer in a company I worked for absolutely could not figure out why his code to convert a few megabytes of data was taking days to run. Turned out he was appending to a string in order to add a few bytes to it, and every time he did it perl was copying the string to a new location. Simply by "pre-allocating" the string we cut the run time down to a couple of hours. This would have been obvious to him if he'd ever coded in C, or taken a data structures class. But he hadn't. Things like data structures, algorithms, and most importantly security are hard. They can't be taught in a trade school, because people in trade schools lack the necessary background. In the case above, I tried to explain to the guy the whole concept of "big O", and quickly discovered that he didn't know what a factorial was, nor a logarithm, and was a bit sketchy on the concept of geometric expansion. Please don't dump more half-trained programmers on us. We don't need them, and those of us who do understand information theory (with or without degrees) will spend way too much time fixing their errors. I'm not saying everyone needs to be a CS major (my B.S. is in Philosophy, my masters is in Theology, and my Ph.D. is in New Testament.) I AM saying that there should be a requirement to learn some basic skill before you're allowed to write code for a living.

    --
    "He who would learn astronomy, and other recondite arts, let him go elsewhere. " -- John Calvin, commenting on Genesis 1
  37. Wisdom follows, pay attention! by Anonymous Coward · · Score: 0

    > encourages less of a focus on 'the next Zuckerberg'

    That guy was a mere puppet face for the Sanhedrin, when constructing the "Tesco Value NSA" as Facebook is commonly called here. Essentially Facebook collects all the world's human intel for Unit 8200, which the goyim and the ishmaelite willingly hand over for free - what's more, the silly goyim even pay fortunes to own shares of the very instrument that trojans them! Should be called Goldberg, not Zuckerberg, although the deal is really sweet. Who needs nukes, airstrikes, Mossad and Entebbe raids to force one's way any more, when it is possible to read and influence the mind of the entire world over the net?

    Ingenious, one must admit! However, Mr. Zucker had little to do with the grand plan, he was simply a public face who looked like a young ancient greek hero enough to sell the project over the screen. The idea came from a massive secret service scheming that was brewing for years, maybe a full decade in advance. Facebook was already being implemented in code, before they first thought of Stuxnet.

  38. Re:Done and failed over a decade ago in Germany by Anonymous Coward · · Score: 0

    Yep, same here. Companies expect to hire fully trained specialists at the lowest cost possible. I think that 19 out of 20 companies do never, ever train their employees to their needs and this is where the core problem lies.

    You need to be jack of all trades and a specialist in a certain field of expertise. However, both are mutually exclusive. And even if there is such a beast of developer, it wont come cheap.

    Let's sum it up: cost > expertise in area of expertise > pre-existing, broad knowledge of various technologies and tools

  39. Blue collar coder - it's redundant by blind+biker · · Score: 3, Interesting

    All developers, programmers, researchers - we're all blue collar. People working in administration and accounting are considered white collar.

    As a scientist, I don't feel insulted to be "blue collar". I'm fine with that.

    --
    "The agriculture ministry is not in charge of Gundam" - Japanese ministry official.
  40. I don't think apprenticeships are it... by XDirtypunkX · · Score: 2

    Part of the reason I don't think an apprenticeship model works for teaching programming is that by its nature it is a scholarly profession. I don't mean that in the ivory tower way, I mean that programming is largely research based and requires an active mind. You need meta-skills of the kind that allow you to assess, filter and process a lot of information, but be able to focus in on and find the particular bits that are relevant to you. Doing an university degree often teaches this skill indirectly and some people develop it themselves though natural dedication (autodidacts). I don't think an apprenticeship style of learning gives people the time or inclination to do this. More practical experience and mentoring is definitely valuable, but it shouldn't be the sum total of a programming education.

    I also think that there is also a defensive thinking mindset required to properly produce robust software that requires a certain level of formal knowledge as well as practical experience. Degrees at the moment don't necessarily teach this, but you do see a lot of software written without this knowledge and quite often it becomes obvious that it's only going to work *some* of the time and quite a lot of this software comes from people with a weak formal education (but not all of it).

  41. Floating point in financial transactions by sjbe · · Score: 5, Informative

    Huh? Floats is the standard representation of numbers almost everywhere.

    Not in financial transactions. While there are ways to do financial transactions with floating point numbers, they have an alarming tendency to introduce rounding errors. When you are dealing in money, rounding errors are an extremely bad thing because then the books don't balance anymore. One common way to deal with the problem of rounding floats is to treat the stuff to left of the decimal as an integer and the stuff to the right as another integer since there are no rounding issues with integers. While not as fast as floats, the extra accuracy is worth it in this instance. There are other ways to solve this problem but you'll find conventional floating point is used with great caution in the financial world.

    There's a reason floats are implemented in hardware.

    Which has nothing to do with why floating point numbers are often not used for financial transactions.

    1. Re:Floating point in financial transactions by Anonymous Coward · · Score: 0

      When you are dealing in money, rounding errors are an extremely bad thing because then the books don't balance anymore.

      ..Or you can just change the rounding rules to always round up or down in specific cases and stop dropping money left and right to make broken book keeping a self-fulfilling prophecy.

    2. Re:Floating point in financial transactions by Anonymous Coward · · Score: 1

      ..Or you can just change the rounding rules to always round up or down in specific cases

      So should I round 13.0000000000000000000000002 up or down? And is that equal to 13 dollars? What about -0, is it equal to 0?

    3. Re:Floating point in financial transactions by queazocotal · · Score: 2

      And for even more fun, exact rounding rules may be defined in law, and differ.

  42. Yes, not everyone needs to know everything by gestalt_n_pepper · · Score: 1

    To build a house, you not only need the architect, but the guy who hammers nails and lays flooring. Similarly, to build a program, you don't necessarily need to know much about virtual void functions, but you'd better be able to handle integers, strings, arrays, if-then statements and loops. These are the hammers and nails portion of the industry.

    --
    Please do not read this sig. Thank you.
    1. Re:Yes, not everyone needs to know everything by Anonymous Coward · · Score: 0

      You think understanding what a "virtual void" function is, is the difference between a grunt and an architect? That's like the nail-hammering dude in your example saying "Hmm, paper, I think I've heard of paper, but only architects understand that stuff. They draw their pictures on it." We'll, no wonder I make so much money -- I understand virtual functions!

  43. Fractional pennies by sjbe · · Score: 1

    Actually scratch that, I guess parts of pennies can somehow exist. Never mind that they can't be paid.

    Not only can they be paid, they often are. Remember that most currency is not actually coins and bills. Most of it is just numbers in ledger somewhere. Stock transactions are often to as many as 5-6 decimal places. My company quotes parts with prices containing 4 decimal places. When you are dealing with many thousands of parts those fractions of a penny can add up to real money pretty quickly.

    1. Re:Fractional pennies by RabidReindeer · · Score: 1

      I worked in a mixed environment. Our Cash Cow was a mortgage loan processing system. That system tracked people's load payments in dollars and cents (fixed decimal) and if things didn't balance to the penny, people got unhappy (IIRC, 0.01 in binary floating-point is an irrational number, and therefore cannot be precise within a finite number of bits).

      However, I worked for a time in a mortgage portfolio valuation system (yes, the type that estimated the present and future values - badly, as it came out - so that people could kite mortgage-backed securities). We were dealing with probabilities and statistics and we needed more decimals, but less precision. Plus fixed-decimal arithmetic is often slower than floating-point and we were computationally heavy.

      In between the two extremes are things like amortization calculation. The amortization formulas were floating-point, but the final payment determination would, of course, be in dollars and cents because that's what the payments would be in.

    2. Re:Fractional pennies by tnk1 · · Score: 1

      Land/property taxes in the US are often expressed in 'mills' which are 1/1000 of a dollar, or 1/10 of a cent. This is even referred to in laws as the lowest money of account.

      On the other hand, banks and such used to issue tokens that were worth a mill, so you could say that yes, in fact, it was possible at one point to pay for a fraction of a cent physically as well as being a ledger amount that was rounded up or down on real payments.

      http://en.wikipedia.org/wiki/Mill_(currency)

  44. batch file versus kernel by sjbe · · Score: 2

    If your design can be done by someone with the education levels or mental faculties of a welder, it can be done by outsourced talent more cheaply anyways.

    Apparently you have never tried welding if you think welders are dumb. (hint, it's really quite difficult to do well and requires a LOT of training)

    That said, there is a lot of coding that is not practical to outsource. I am not a programmer professionally but I do some coding here and there as a part of my job. I'm not about to write a linux kernel or anything like that, but some simple coding to do my job more effectively is useful. Should I have to go get a CS degree before writing a few macros or a batch file or a shell script? Are you seriously arguing that I should outsource my macros to India? Some programming simply isn't very hard and can be done effectively by someone who isn't a highly trained specialist.

    There is a place for highly trained CS experts and that is working on the large scale and challenging problems. It really is a waste of everyone's time to have them working on simple programs that can be adequately by people with far less training.

    1. Re:batch file versus kernel by dkf · · Score: 1

      There is a place for highly trained CS experts and that is working on the large scale and challenging problems. It really is a waste of everyone's time to have them working on simple programs that can be adequately by people with far less training.

      The other way of making use of those sorts of talents is to be working on small problems, but with very short timescales. Yes, the Indians might be cheaper per hour, but the local expert will give you a solution to your problem this week instead of in 6 months plus however long it took to negotiate the contract. That's a very important difference, and people who aren't on site will always find themselves at a disadvantage in that sense.

      --
      "Little does he know, but there is no 'I' in 'Idiot'!"
  45. Indeed:Coding is a skill, not a profession by luis_a_espinal · · Score: 5, Insightful

    That's all well and good until you find out they've been using floating point for currency calculations, and they can't figure out why their bubble sorts are so slow.

    I've worked with programmers with associates degrees. Some bad; some good. I'm not entirely against them, but I would not want an entire team made up of them. They have huge blind spots that CS grads don't have.

    You see that also with people with BS degrees, and I know about those (and a lot more) when I got my AA degree. Truth to be told, I knew more about programming and CS when I left community college than my sophomore/junior peers when I transferred to a 4-year university... and I met quite a few senior students and even grad students who couldn't picture an array of pointers to structures with function pointers as fields (not that you want to do that every day, but c'mon a senior CS student or grad student should have no problem visualizing that.)

    I got a BS in CS, went to grad school and now I'm trying to go to grad school to switch into a more hardware oriented degree. I have 17+ years working on this, and I can say with great confidence that most "enterprise" programming tasks do not require a BS-level education in computer science.

    More importantly, a good community college can provide, via a AS degree, all the tools needed to do work : systems analysis and design, structured and object-oriented programming, all that mixed with an intro to the basics of algorithm analysis (without the proving part), hands-on RDBMS, basic network/sysadmin skills and other fundamental skills like using/setting source control and bug tracking systems and technical writing.

    You are right when you say you don't want to work with a group made solely of AA/AS graduates. I know; I started my career with a AA only, and I know for a fact that such a group needs more senior members to give technical direction.

    But, for IT and the typical enterprise programming, we really do not need to know about the pumping lemma, prove the equivalence of turing machines to lambda calculus or the differences between micro kernel and monolitic kernels or proving some something on the structure of bizantine problems.

    Blame it on the dot-com that we had a push for MOAR!!!(10+1)! 4-year degrees for web page design, which in turn converted most CS 4-year programs into Java/.NET vocational schools (where a person can graduate w/o even understanding what a pointer or a segfault is.)

    The correct thing back then would have been to promote more community-college level vocational education as 2-3 year AS/AAS degrees. It would have been the best for the career, the nation and for all the students involved.

    I love CS, I love my degree, I love my grad education, and God willing, I will get my Ph.D, and I love my line of work. But hell that I will ever propose that a BS degree is the minimum required to work on IT/enterprise programming.

    I pray to ${DEITY} that this will become a firm step in the right direction.

    1. Re:Indeed:Coding is a skill, not a profession by Anonymous Coward · · Score: 0

      I have worked with a lot of vocational school graduates and I always wished that they had gotten a degree from a college. When you don't give people the basics, they fail to understand even the most obvious problems. Reading the whole database into memory, making a whole stinking watchdog just because they don't know how to debug, making 10k+ LOC libraries where it could be done cleanly in 1K lines, failing to understand why they need locks for concurrent access to shared objects, failing to understand how the garbage collector works and why memory is not costless. These are the examples that just come to my mind spontaneously. There are many more and a proper education in basics can cure these.

      Regarding math, I don't think math education is ever about teaching math. It's about teaching people how to think. If you don't have your students approach complex problems during training, how can you expect them to deal with problems in the real world where documentation is non-existent or useless, specifications are outdated or unclear and code of fellow programmers aren't for the weak of heart? You see your calls drop, your computer crash, a simple bank transaction take tons of time, even the simplest web page take seconds to load because they were implemented by these guys.

      A person with good basic training can figure out the tools himself or understand in-job training much better. What good is it to teach a person the particulars of an RDBMS when he has no notion of keys, indices, storage mechanisms etc?

  46. Doesn't look that way by concealment · · Score: 1

    From the post:

    Personally I value my liberal arts college degree and I think my employer does as well.

    That's a degree in the liberal arts, unless he chose a deliberately awkward "liberal arts college" + degree formulation.

  47. Apprenticeship is under-rated by concealment · · Score: 1

    there should be more apprentices and fewer university graduates with insurmountable debt

    When we graduated college, an old-timer said something to the effect of, "Now that your degree program is over, your education can begin."

    What followed for the lucky amongst us was finding people in our industries who could teach us from the benefit of experience. Education tries for comprehensive and lacks in application; an apprenticeship teaches application.

    Both are necessary, but one can be had by cracking a book on your own time (use the Abe Lincoln method, just make sure you do an hour a day) and the other -- experience/apprenticeship -- cannot.

    1. Re:Apprenticeship is under-rated by udachny · · Score: 1

      No, both are unnecessary. Both are only as necessary as you need them to be.

      Some people need and want to attend higher education, they can actually use it for something that really requires it.

      Others don't need higher education, they only need to learn what is necessary to hold a job, they can become proficient in it without wasting their time, which is what a university experience would be for them and they wouldn't have the insane debt that the modern system would force them into.

    2. Re:Apprenticeship is under-rated by Lando · · Score: 1

      Ummm, just a point. Experience can be had by working on various projects online. Experience may be slower than if you have someone directly training you, but the same goes for book learning. I feel they can both be accomplished it's just a matter of putting in the time.

      --
      /* TODO: Spawn child process, interest child in technology, have child write a new sig */
  48. Overspecialization by concealment · · Score: 1

    Training to be a "microsoft .net programmer" is insane. You're whole profession could get flushed down the toilet instantly.

    Unfortunately, it seems like many degree programs are going in that direction as well.

  49. A craft is not a profession. by concealment · · Score: 1

    Most people in the field consider programming to be a craft - a combination of art and science, just like the traditional (non-software) profession of architect.

    Traditionally, blue collar work has included artisans and craftsmen, and as I recall that's where the apprenticeship method started.

    Although the traditional dividing line between blue- and white-collar trades was how sweaty you got (literally, since blue shirts are easier to launder), the ultimate difference is in how much autonomous decision-making you do. That's while programmers tend to be so anti-union. They identify with the decision-makers (management).

    I think this is insightful because "autonomous decision-making" is a good dividing line. However, most blue collar work of the type I've mentioned occurs by independent contractors or people with a fair amount of autonomous decision-making, such as installing hardware or planning construction. I don't think "blue collar" should be assumed to mean "because they sweat, they're dumb," which is an assumption that our television shows seem to make.

  50. Architecture and craftspersonship by concealment · · Score: 1

    I think what we need to move more towards is getting CS people out of coding and into becoming software architects. Most software can be easily divided into (relatively) simple chunks, and if you have enough skills put into actually building software, instead of writing code (which is probably the least important part of the process), then the divisions become trivial.

    This is a good point.

    Coding is, in my view, one tool in the belt of a CS grad. The biggest skill is how to apply technology, and that's where critical thinking and analytical skills are essential. Sometimes, coding is the answer; not always.

    Often times, the architecture is in integrating multiple systems to work together, and multiple tools are used, including but not limited to coding.

    The roll-your-own days are mostly gone. While I'm nostalgic for some aspects of them, we need to acknowledge that today's coder may be stitching together complex chains of software, hardware, operating systems, network, libraries, scripts, shells, etc. in order to make a project as a whole work, and that's where architecture (a career) is more important than programming (a tool, a craft).

  51. Full Circle by dorpus · · Score: 1

    When I grew up in the 1980s, computer jobs were treated as some sort of blue-collar skill suited for autistic personality types that were incapable of relating to other human beings. "Respectable" people were supposed to go into law, medicine, or business. Before resumes became computer-searchable, "respectable" people avoided mentioning computer skills, since employers were turned off by technical jargon.

  52. collar color is how you do your job by peter303 · · Score: 1

    If you pretty much just sit at a desk or talk, you are white collar. If you are vigorously using your arms or legs in a factory, etc. you are blue collar. Coding is always white collar by this definition.

    1. Re:collar color is how you do your job by tibman · · Score: 1

      I agree with you but i get the feeling that the amount of education you have determines your collar color.

      --
      http://soylentnews.org/~tibman
  53. Very Insightful Article by DaMattster · · Score: 1

    This is perhaps one of the most insightful articles I have ever read. I guess it also highlights my beef with Computer Science curriculum at the University level: it doesn't teach real world coding but coding to solve interesting theoretical or mathematical problems. It doesn't take a solid foundation in mathematics to be able to learn to code. I think learning to code much in the same way as one learns to be a machinist is a fabulous idea and making computer programming a blue collar, skilled job is long overdue. If such an option were open to me, I would be all over it in a heart beat. I have a degree in Criminal Justice yet I'm working as a Systems Admin and I don't particularly like it. I would love to be able to go to a vocational training program with apprenticeship and write software. This is so much better than importing H1B visas to do the work because it encourages development in America.

  54. Cashier by geoffrobinson · · Score: 0

    Cashiers use applied math too. The level of education varies depending on what you're trying to do.

    --
    Except for ending slavery, the Nazis, communism, & securing American independence, war has never solved anything.
  55. What he means when says 'blue collar' by dkleinsc · · Score: 3, Insightful

    What he really means, in a nutshell: "Programmers are paid too much."

    --
    I am officially gone from /. Long live http://www.soylentnews.com/
    1. Re:What he means when says 'blue collar' by DNS-and-BIND · · Score: 1

      What he really means, in a nutshell: "Programming, as a job, needs to be available to society at large, to better recognize the "janitor" role that they actually fulfill, instead of the "John Carmack rockstar" role that all programmers think that they are, but aren't."

      --
      Shutting down free speech with violence isn't fighting fascism. It IS fascism!
  56. Have you ever worked with grad students? by betterunixthanunix · · Score: 1

    Take a look at the kind of code that you see out of graduate students before you assume that degrees have any meaning at all. I am talking about people who receive PhDs in computer science, but who cannot get beyond the "one big loop with one bit switch statement" organization of programs. This includes grad students who work on "systems" rather than "theory."

    --
    Palm trees and 8
  57. Re:IT / tech needs apprenticeship not years of col by Anonymous Coward · · Score: 0

    Because the hot skill set of the moment changes quickly much of the CS degree learning is not useful. It is either theory not used very often or specific languages and tools that will be obsolete soon. Learning how to learn and some vocabulary to help understand fellow coders is about all I see in new graduates. That isn't worth the time and money. I have a couple of engineering degrees with only one CS class, which was FORTRAN. I get past the filters under "or related field" in the degree qualifications, but they are otherwise as useless.

    An apprenticeship would be fantastic because it would teach things that usually take a long time to learn, like best practices and how to spot potential problems by reading the specification, and how to work in a team larger than four people.

    The benefits of an apprenticeship would hopefully go well beyond the individual. The employers would know who could really do the work and not just pass a test about theory. The employees would be able to convince management of best practices by having a similar knowledge base and having an "authority" to which they can refer.

  58. Lying abstractions by betterunixthanunix · · Score: 3, Informative
    Floats are an example of what I have started to refer to as "lying abstractions." When programmers deal with floats, they are being told by their programming language that they are dealing with a representation of real numbers, and the only way to avoid the situation GP described is to expend mental effort remembering that a float only has some fixed number of bits. When you have a tight deadline, you are going to spend your mental energy on other things (hopefully program logic) and it is inevitable that somewhere, you will forget that floats are not arbitrary precision.

    The better answer is to use languages with arbitrary precision representations of rational numbers. You will not have to deal with integer overflows, you will not have to deal with losing precision, and you can spend more of your time developing the correct program logic. Yes, it will mean a bit more in resources -- which can be fixed later if it becomes a problem.

    There's a reason floats are implemented in hardware.

    Yeah, and it is the same reason we continue to use C and C++ to write high level programs: history. If we were starting from scratch today, using the latest technologies and research, it is almost certain that we would do things differently.

    --
    Palm trees and 8
    1. Re:Lying abstractions by mc6809e · · Score: 1

      Floats are an example of what I have started to refer to as "lying abstractions." When programmers deal with floats, they are being told by their programming language that they are dealing with a representation of real numbers,

      Except that the type is usually called "float" and not "REAL" (unless you're dealing with FORTRAN).

      Think about that. C and C++ and Java, etc, all use "float". The language is shouting at the programmer that the type is something very special and still some programmers casually think they can use the type as a substitute for the reals.

    2. Re:Lying abstractions by betterunixthanunix · · Score: 1

      True enough, but as C, C++, Java, etc. all lack a (convenient) built-in real number type, the fact that programmers see "float" does not really convey the notion that they are not getting a good representation of real numbers. It is also the case that programmers get a float when they give their compiler a (common) representation of real numbers, the decimal expansion: 3.14159265358979 is a floating point number, not a "real" or "rational." That is where the lie comes in.

      Perhaps a better example would have been this lie: 1/2 == 0 (or its more insidious cousin, 1/3.0, which starts a programmer out in life with a numerical error in addition to a type they did not actually want).

      --
      Palm trees and 8
    3. Re:Lying abstractions by dkf · · Score: 1

      Perhaps a better example would have been this lie: 1/2 == 0 (or its more insidious cousin, 1/3.0, which starts a programmer out in life with a numerical error in addition to a type they did not actually want).

      Your choices are to use a rational datatype (which is OK until you need transcendental functions, when you're stuck) or a mantissa+exponent datatype (of which the usual IEEE float or double are just examples) or an unbounded-precision type (numerically exceptionally complicated). For scientific and engineering applications, where you only really have a limited number of digits of accuracy in your input data anyway, the IEEE floating point number system is a really good choice, and it has the advantage of being commonly implemented in hardware. That's not suitable for all applications — finance usually works better with integral counts of small units — but then why would we expect the same things to be perfect everywhere? (Also, 1/2==0 is just a type error, if that's unexpected at all.)

      --
      "Little does he know, but there is no 'I' in 'Idiot'!"
    4. Re:Lying abstractions by betterunixthanunix · · Score: 1

      Your choices are to use a rational datatype...or an unbounded-precision type

      I do not see why these should be separated. A rational datatype that uses arbitrary-width integers for the numerator and denominator gives you unbounded precision. Yes, you will have problems with irrational and transcendental numbers, but at least your basic arithmetic will be intuitive. If you do need do deal with irrational numbers and rounding errors are not acceptable, then you should be using a computer algebra system of some sort, or a library that gives you such types (if you are not using a language that allows you to embed a CAS in your code). You might even envision a language where the only way to compute something irrational would be to use such a system -- a language where sin/cos/sqrt/etc. return some numeric type that must be explicitly coerced to a rational or floating point type if the programmer actually wants such an approximation.

      why would we expect the same things to be perfect everywhere?

      We are talking about general purpose programming languages, that's why. If we cannot expect our programming languages to be good, then we cannot expect the software we write in those languages to be good either. If we cannot expect any language to give us what we want in arbitrary applications, then we should not create general purpose languages; we should create domain specific languages (there actually is a middle ground on this issue: https://en.wikipedia.org/wiki/Language_oriented_programming).

      --
      Palm trees and 8
  59. origin as female clerical trade by peter303 · · Score: 1

    The word "computer" before WWII basically meant a clerk computing insurance or ballistic tables at desk with an adding machine and/or pencil. These clerks were almost always female, while their supervisors or officers were men. As the adding machines evolved into vacuum tube behemoths, the female clerks ofter did the wiring, switch settings, punch card or punch tape preparation, and even the coding. So coding developed a "taint" as being female, clerical and not quite white collar.

    One consequence was that it was taught first in trade and secretarial schools. I remember faculty debates at MIT in the 1970s whether computers should become an academic department. Some faculty considered it a mundane skill like typing and not worthy of department status. But it kind of snuck into lots of other departments where EE, business, civil engineering and math were teaching courses about computers. It finally achieved department status in 1980, joined with Electrical Engineering.

    In some of my first jobs in industry in the 1970s , the programmer was an assistant to the scientist and engineer. Either the programmer wrote everything with their guidance, or the scientist submitted coding sheets to the programmer to be punched, submitted and debugged. I was a novelty as a scientist who did my own typing. The old guard viewed me as either a genius or loser for doing this. Eventually as computer terminals and workstations grew inexpensive and clerical labor more expensive, many scientists and engineers did coding themselves.

  60. roman_mir fails anti-hypocrisy 101 by Anonymous Coward · · Score: 0

    (udachny is a well-known sock puppet of roman_mir)

    it is worth noting that roman_mir is an alumnus of one of the largest state-run universities in north america, the university of toronto. he is making the money he is making today because of the educational benefits extended to him by the country he currently resides in. now, to save himself - and only himself - money he wants to do everything he can to deny those same benefits to others. he isn't trying to save kids any money - indeed he wants minimum wage to go away so he can pay them nothing as apprentices.

    he is only trying to disguise this as being beneficial to the youngsters, in spite of the fact that he knows it would not be. education is an easy metric for deciding who to hire, who to fire, and what to pay to employees, and it always will be. by denying people the ability to go to school by way of the promise of an "apprenticeship" he ensures that he will have more cheap labor available that he can easily drop at his leisure.

    1. Re:roman_mir fails anti-hypocrisy 101 by maple_shaft · · Score: 1

      Thanks for pointing that out, because roman_mir is Foe number 1 on my list. Doesn't surprise me though, for hundreds of years of Conservatism, it has always produced the exact opposite effect of what it claims to solve.

  61. Third option: better languages by betterunixthanunix · · Score: 1

    But by that stage, you may as well use floating point or fixed point binary. Fixed point decimal is no better at representing fractions than fixed point binary. Nothing wil help if you need 1/3 of a penny.

    Better programming languages will help you:

    * (let ((x 1)) (describe x) (describe (/ x 3)))

    1
    [fixnum]
    1/3
    [ratio]

    Oh, look, an arbitrary precision rational number, created where we expected to see an arbitrary precision rational number. Yes, you can get a float, but you need to be explicit about wanting that because of all the problems it introduces:

    * (describe (coerce (/ 1 3) 'single-float))

    0.33333334
    [single-float]

    Yes, you will see some performance hit when you use arbitrary precision representations, although Common Lisp (and other languages) will let you give the compiler "hints" about how things can be optimized. Further, notice that the value "1" was assigned the type "fixnum" automatically -- meaning that if it were used in integer arithmetic with other fixnums, it would only become a less efficient representation if the compiler could not guarantee that the result would be in-range. Example (note that a fixnum on my system is 29 bits, and 2^29 - 1 = 536870911):

    * (let ((x 1)) (describe (+ x (coerce (parse-integer (read-line)) 'fixnum))))
    1

    2
    [fixnum]

    * (let ((x 1)) (describe (+ x (coerce (parse-integer (read-line)) 'fixnum)))) 536870911 536870912 [bignum]

    So really, you could say that we have a third choice, but that we keep ignoring it because we are afraid of the performance penalty (somehow, we seem to be less afraid of the "you could wind up with a number that is an order of magnitude wrong" penalty).

    --
    Palm trees and 8
  62. Oh, Lisp and Prolog Are Based on C? by eldavojohn · · Score: 1

    So very sorry but I must take exception with this. The "substantial amount of math" comes down to the 4 basic operations. Even partial differential equations come down to it with lots of looping. Really good programmers are not mathematicians for the most part. Really good programmers understand the machine and mathematicians dream up equations that do "something" and then explain in terms that can be translated into code.

    No reason to apologize, without exceptions we wouldn't have any conversations, discussions or debates. I find it incredibly interesting that you seem to consider some parts of programming to be mathematics and you can even go so far as to say that "really good programmers are not mathematicians for the most part." I will quote Donald Knuth since he is much wiser than I:

    Therefore the idea of passing laws that say some kinds of algorithms belong to mathematics and some do not strikes me as absurd as the 19th century attempts of the Indiana legislature to pass a law that the ratio of a circle's circumference to its diameter is exactly 3, not approximately 3.1416. It's like the medieval church ruling that the sun revolves about the earth. Man-made laws can be significantly helpful but not when they contradict fundamental truths.

    Understanding the machine is very important as well but any programmer should know mathematics first and foremost. I use logic daily in writing boolean expressions in any language I use and on top of that, De Morgan's Law has saved me countless of hours of rederiving truth tables. Furthermore the knowledge of when to use a hash map versus any other collection and the run time of my code is so deeply seated in mathematics that I would find myself writing code that works very easily in my unit tests but might take days or weeks to run on real world data. Your assertion that mathematics in computing ends at the "four basic operations" is laughable.

    And as to the bit about functional -v- object oriented languages, your tipping your "coding snobbery" hand a bit

    "Coding snobbery"? How is it when you collect all the tools out there that are available (most free of charge) you're suddenly exhibiting code snobbery?! I'm not telling you to always use it, I'm not saying it's the silver bullet. I'm just saying that in some cases it makes sense to use it!

    and indicating you are the kind of person who just wants to play with the newest toys.

    I am absolutely floored by this mentality. There is no silver bullet in software development.

    All the languages out there are mostly based on C and no one has yet been able to come up with anything that is actually better, but is rather simply a derivative. Yes syntactic sugar abounds but strip that away and you have C.

    Surely you're not suggesting that one language is just "better" than any other language at everything. Could you explain to me how it is that the family of Lisp languages that began appearing around 1958 are "syntactic sugar" on top of C that was written between 1969 and 1973? Are you telling me that Lisp, Scheme, Haskell, etc are all just variants of C with syntactic sugar?! And Prolog's development in 1972 was based on C as well?

    Functional languages are almost pure syntactical sugar as the underlying code that is generated is still the basic loop and branch that applies to all languages regardless of their style and name.

    It turns out there are very inte

    --
    My work here is dung.
  63. Funny you bring THAT up by Anonymous Coward · · Score: 1

    I have been coding MIS (mgt. info. systems) since 1994 professionally (AAS CSC satisfied, & 90/120 credit hours into the B.S. for CSC, chipping away @ it over time & as finances permit, of course, as well).

    Before that though, I got my B.S. Business Administration (with MIS concentration/minor), which has HELPED TREMENDOUSLY as far as conceptual business understanding for business-process flows during programmatic development for automating said processes!

    (Which the business background helped in, since the degree touches into the midrange levels of other business-oriented majors such as accounting, finance, marketing, & more of "hard science nature" such as principles like "shortest route" for logistics etc./et al).

    * In other words, because of that added background, I've never really had an "issue" with the concepts, & grasped them quickly (it was only SPECIFICS of the BUSINESS PROCESS + it's data that needed more detailed studies while on the job) - THAT part, is never EXACTLY THE SAME as the next company has it (hence, the prevalence of jobs in MIS/IS/IT 'data-processing' type work out there... there's always more reports & systems to be made!)

    APK

    P.S.=>

    "People from the "floor" have a totally different insight than management and CS graduates and their insight leads to much more efficient ways of doing things." - by Dcnjoe60 (682885) on Monday October 08, @08:55AM (#41583867)

    BINGO - & once, in a shop full of programmers I was working with at a large insurance concern, they called their users "dumb" & I was like:

    ---

    "WTF? They know the BUSINESS PROCESS far, Far, FAR BETTER than you fools do PLUS they are what keeps YOU, "in business" here! They're the experts, we merely automate things for them..."

    ---

    Those "stupid users" are the BEST REFERENCE since they use the process & data, daily, + understand what it does, for whom OR what, & how to get to it and lastly, what the desired results are, OR should be...

    Once, during such a project (VB.NET & ASP.NET designed)?

    Well - I "broke the holy of holies" there:

    I directly consulted a user (main user of a multi-user app) who was "the expert" in that area (claims) on what the program does & should do for her + her colleagues in her department!

    SO, thus, I designed it EXACTLY per her 'use-case specs' & she loved it (so did her peers)... She came into a morning meeting WE had in the IS/IT/MIS dept., & thanked me publicly for it.

    No other programmers ever got that there, & small wonder THAT, due to their "superiority-complex attitude"...

    This is WHY you see things like "the perfect programmer has 'business-saavy'/background in trade articles for business & coding...

    ... apk

    1. Re:Funny you bring THAT up by Anonymous Coward · · Score: 0

      Were you just like, "WTF?" Or were you like, "WTFOMFGNOWAIBBQ!!1!!one!!11111"?

      Be honest now, APK. Slashdot is watching.

  64. We Have Apprenticeships Now by Anonymous Coward · · Score: 0

    It's called open source software. Start writing some that other people want to use and pretty soon you'll have a mailing list full of people that do nothing but spend all day helping you with brilliant ideas and suggestions for changes. On a more serious note, it is easier to get a job with a portfolio and no degree than with a degree and no portfolio.

  65. classic programmer vs developer argument by trippytom · · Score: 2

    If you know mostly what you'd like to to, have a chosen path to get there, and time and $$$ to do it this model would probably work very well.

    The problem is, I have NEVER seen that in my 15 years of developing. The technology landscape is constantly evolving, we need developers that know how to learn to do stuff ... not know how to do stuff. Assumptions and business requirements change, often daily. Developers need to communicate with businesses, persuade them to make good decisions (why I like developers with Arts and Sciences backgrounds). My guess is we'd get a lot more meaningless (not well thought out) stuff done which would buy us squat.

    I don't want an army of semi-functional programmers, I want a FEW real developers.

    I am in the beginning stages of teaching a lifelong MS developer and fanboy our Big Data environment. The poor guy basically needs to learn Nix, bash, sed/awk, SSH, cron, Ruby, MYSQL, EC2/S3 and Rails BEFORE we start talking about HDFS, Hive and Mahout. The ONLY thing I have going for me is his background in CS.

  66. sure by Anonymous Coward · · Score: 0

    Coding is just a craft, sure. No, not really. Coding requires a lot of business knowledge to understand and construct a reasonable solution for each and every unique problem.
    This is just another way of trying to make the world match the Idea that programming is trivial.

  67. mechanic vs automotive engineer by Anonymous Coward · · Score: 0

    He wants mechanics not automotive engineers. This comparison would be worth while if there was a lot of source code purchased over the counter.
    If millions of people had the same needs and purchased the same code and only needed it fixed when it crashed. On those instances call the Nerd Herd.
    When you want your car to do something special, and make your company more competitive, can you buy it at Government Motors?
    You have to go to a custom build shop. They get paid more than Jiffy Lube.
    We should still be teaching craftmanship in schools and not expecting everyone to be college bound.
    Make a HS diploma worth something to someone.

  68. It doesn't matter. by Anonymous Coward · · Score: 5, Insightful

    This kind of misunderstanding isn't what is causing the major pains in the industry.

    Changing the educational emphasis won't address the major pains.

    The major pains are caused by:

    1) The perception that one cannot build a career on software development, because agism forces people to change to a completely different career sometime after they turn 35. True or not, this scares people away from the field, as it should, because if it is true then anyone talented/intelligent enough to do software development is talented/intelligent enough to do something else instead.

    2) The perception that software development pays less than other fields that require comparable talent/intellegence. If true, it makes perfect sense that people who know they have what it takes would turn their noses up at a low-paying waste of their talents.

    3) The perception that one is perpetually at risk for having their job outsourced to cheap foreign labor. Nobody likes working jobs where they don't know if they will still be employed the next day (and the deciding factor isn't even dependent on their performance).

    4) The perception that developers are expected to overwork, sacrificing their personal lives for a company that won't even pay them overtime wages for it. Work-life balance is important, and people will shy away from careers that deprive them of it.

    Address these perceptions, and address the issues that cause these perceptions, and you will see people naturally choosing to do software development again.

    Refuse, and employers will face a lackluster market populated mostly by people with social/professional problems (or timezone, native language, and cultural acclimation problems).

  69. Degrees are not infallible by gtcodave · · Score: 0

    Tbh I've found degree weilding coders to be overly egotistical and head strong too full of their own ideas and unwilling to learn, take advice or appreciate the work from those without a degree. There's something about having a degree that makes them so pompous, patronising and oblivious to that fact.

    I have met some who aren't because some people in this world are great. But wow... The majority could really learn something if they got off their high horse.

    --
    -- David
  70. Spartans, what is your profession?! by Anonymous Coward · · Score: 1

    Okay, so a bit stereotypical and masculine which...may be behind some of the programmer/CS image problems.

    But... I am a professional programmer. I have an undergrad degree in CS, languages & systems. I am mostly finished with a post-graduate degree.

    I have over a decade of professional experience, and have done my trials at the helpdesk and learned how to speak with my users. Sometimes.

    I have a toolchain, a product suite, paradigms, vocabulary, and experience with a bunch of different platforms...

    An apprenticeship might not be a bad idea -- it would have more quickly taught me a lot of techniques I had to learn on my own. But any decent software shop could have done that too.

    But you still need smart coders.

    I am not a geologist, an engineer, an anthropologist, or a phycisist -- but I have written software for all of these and more. Sometimes, it took them weeks to get me up to speed. Maybe three years before I totally understood in one case.

    But... the people in these disciplines who programmed -- almost uniformly were /not/ programmers.

    They not only fought the computer, but they did not structure or decompose their software. They didn't break it down into reusable modules save by copy-paste.

    Most of them do not understand error handling beyond naively.

    I'm still working with a climate change researcher whose primary software is structured like...


    try {
    for (i : modelLoop) {
    ErrorProneSubRoutine()
    }
    } except {
    print 'finished routine'
    {

    They NEVER know when or why their output data is often substantially wrong. And just start flipping data around until it works.

    Worse still, they're in a hurry, frustrated, short, and get angry when asking for help -- "Just tell me what to do so it compiles and runs".

    So yeah... people should be taught code. People like this are a dangerous menace to society and research.

    This is not just an academicissue... it's an issue with startups and small companies that have single founders who learned PHP, ASP, or JSP... among other things.

    It's an issue with large companies that have trained people, but not taken the copiuous and expensive time to /really/ train them and give them mentorship and guidance to repair, refactor, and fix their old software.

    Do you know object oriented programming? Great...

    Do you know how to make something something 'private' in assembly, in javascript? No? Then you don't really know your language...

    Do you know how to fake polymorphism in a language that doesn't support it? How to write a lexxer for a friendly power user scripting language? The difference between overriding and overloading? What static analysis and coverage tools are for?

    Do you know when to use a good IDE, and what the possible pitfalls might be?

    What's the difference between a static class member in a java generic and a C++ template? Better yet -- why does this difference exist?

    Do you have an opinion on when to use macros vs const?

    How about multiple inheritance? Oh yeah... I can't do that in Java. What's the workaround? Why doesn't Java or Ruby let me? How does this influence the philosophy of working with best practices in that language vs python?

    See... even decent programmers I know couldn't answer all of these, but a professional /will/ understand the concepts and be able to learn them if they're at least explained.

    Someone without any CS education... just won't.

    And that's before we get into asymptotic analysis, understanding how to do database joins and normal form, and getting into network protocols and debugging them, or structuring them for ... high performance efficiency.

    You do understand that at a certain point just adding a single byte or two can make your whole connection about 25% slow

  71. The problem is QA jobs requires an H1B by Anonymous Coward · · Score: 0

    QA jobs are the stepping stone for more substantive programming jobs, but everywhere I have worked these jobs have either been outsourced or more likely filled with fresh H1B immigrants. This demonstrates the farce that is H1B -- as they are intended for foreign workers possessing unique technical skills -- and are instead simply used to disenfranchise American workers from participating in any sort of career ladder. QA positions allow workers -- that have recently changed careers and may only have an associate degree -- to participate in the technical workplace and gain an understanding of how everything fits together. They can then use this foothold to gain further skills to move up the technical ladder. Instead the vast majority of these positions are bequeathed to Indian women (nothing against them personally as I have worked with many of them and they are wonderful people and great workers, but they would probably be happier helping to build upstart Indian companies).

    For me, this is a strong indictment of the supposed wisdom of allowing the open marketplace to operate unimpeded. These companies aren't operating in the best long-term interests of the US. Just as the car companies needed CAFE regulation to point them in the right direction, our tech companies require federal intervention to make necessary corrections.

  72. And here is the problem by Anonymous Coward · · Score: 0

    Only a good developer can tell the difference between a good and bad developer. There is a big difference between churning out something that appears to work and something that is actually of good quality.

    I've spent a great deal of my time in companies fixing everyone else's broken shit. I'm talking about people sending XML without converting special characters, coming up with algorithms to parse addresses which I assume they just guessed at, blatant memory leaks that cause crashes, mountains of issues due to race conditions, deadlocks, and livelocks, people not using transactions to issue queries that when not completed together causes a database to screw up, people not understanding order of operations and undefined behavior. The list goes on and on, and it scares the crap out of me considering the type of software I've seen this stuff in.

    Now people want more people in development jobs who have no clue what they are doing? No thanks.

  73. Blue Collar needed, but so are White Collar by locopuyo · · Score: 1

    Sometimes businesses have great ideas that they need coded but can't afford expensive developers.
    They need the cheap blue collar coders to just get it done and working.
    Once they get it working the business starts making money and expanding beyond the original programs ability. That is when they bring in the expensive developers that can program it the right way so that it can be secure and handle everything the business throws at it.

    We need both kinds of developers. The cheap ones help create jobs for the expensive ones.

  74. in english... by Anonymous Coward · · Score: 0

    The above link in english: Mathematics and Technical Assistant
    There, that wasn't so hard, was it?

  75. Keep it real by Compaqt · · Score: 1

    Maybe. But if you're going to go with blue-collar coding, you'll need to stop with the uber-coolification of programming.

    I'm talking about stuff like the obsession with adding functional programming to Java. Java's a perfectly good language for the blue-collar programmer. It lets you check and find a lot of your bugs at compile time. The static nature of the language lets your IDE give you Intellisense-type (code completion) features, very handy for the blue-collar programmer.

    A very General Motors factory line type of language. You basically know what's happening, where something is coming from.

    Now add functional programming to the mix. Suddenly your blue-collar programmer is wondering, "Where did $BLAH come from?"

    So there's a tension between having an environment that's geared for production-line code creation and "coolness" (trying to be like Ruby) on the other hand.

    --
    I'm not a lawyer, but I play one on the Internet. Blog
  76. An interesting Asimov story by ApharmdB · · Score: 1

    On education and "complex skills" http://www.abelard.org/asimov.php

  77. Not just coders that need apprenticeshipes Techs by Joe_Dragon · · Score: 1

    Not just coders that need apprenticeshipes. IT Techs needs them as well even more so as CS does not tech the skilled needed to do IT tech work it's more for teaching coders

  78. We're already there, but without unions by Animats · · Score: 1

    We're already there. Most sysadmins are effectively blue-collar workers. So are most PHP and web coders. Wages continue to decline.

    It might work out better with formal apprenticeships and unions.

  79. Re:degrees take to long and can cut out people who by tibman · · Score: 1

    Which programming class taught you packet inspection?

    --
    http://soylentnews.org/~tibman
  80. Re:degrees take to long and can cut out people who by h4rr4r · · Score: 1

    None, that was not what I said.

    I merely stated that those kinds of degree mills lead to uneducated workers who are useless if anything outside the ordinary occurs.

    I actually did do packet inspection at a university for a class. It included 100+ pages of reports that I wrote detailing how protocols actually worked vs what the documentation various vendors and what the RFC said. The typical assignment took about 10-20 hours in the lab or at home doing the same thing and probably nearly that long to write the reports. That level of work is not going to be done at a diploma mill or community college or tech school.

  81. Quality of Development Not Fault of Developers by Anonymous Coward · · Score: 0

    Before we seek to blame code quality on whether someone has a degree or not, let's consider the duress the developer coded the code. The reality is that there isn't a sense of professional authority which would enable the developer to say, "This is bad code, and should not be released." Too often, that judgement is made by a *Project Manager*. I've seen these individuals will make the ship/no ship final decision, sometimes in consultation with, but will often run roughshod with the developer.

    There's too many development paradigms, and "Best Practices", which have absolutely no scientific backing let alone proof. The essence of a trained software developer is one who can apply the skills in math, perhaps science or related discipline to render informed judgements, if the school was good. Until we get that, we'll see ever growing and bloated software projects which take more and more people to build. Whatever the software endeavor be, that same project will be larger and accomplish less proportionately than even today's mammoth wastes.

    Too often unfortunately, what passes for an education is the industry shoving some paradigm or technology at the university, and they then teach that. It does become that vocational training that the submitter advocates.

  82. I only really started to understand floats by NotSoHeavyD3 · · Score: 1

    when I took a chemistry course and had sig figs explained to me. (Weird that's where I learned it but it's true.)

    --
    Did you know 80 to 90% of the moderators on slashdot wouldn't recognize a troll even if one dragged them under a bridge.
  83. Programming & CS degree by Anonymous Coward · · Score: 0

    The basic issues in programming are the following: (1) Domain knowledge - accounting, medicine, finance, economics and so on; (2) ability to analyse and come up with an efficient data structure for the problems in the selected domain; (3) explicitly stating all the assumptions about input-output- processes; (4) ability to learn and use a programming language that will support the translation of the domain specific problem into a generalised business problem; (5) security, distributing and effective control of the most valuable data and storage and (6) integrating the software with the whole organisational goals. If you can find one with all these abilities, you have a super star and he or she can change any company which has visionary leaders. Taking some one without deep understanding of the complexity and both academic and non-academic tool sets will not produce any usable worker. Strong analytical skills, willingness to learn, dedication and being proud of one self are all needed to be successful software professional.It is not one degree, it is a base degree plus tools from related fields that are needed to be successful. That means, continuous education is the key for continued success. Individuals and their stories do not produce any significant data base for general use by workers in any field including software.

  84. every grad is blue collar by swell · · Score: 1

    Perhaps some exceptions among the liberal arts.

    Classical education was about exploring our universe. From the internal (psychology, medicine etc), the external (sociology, physics, astronomy, languages etc). The Gods offered ways of projecting the essence of human nature in stereotypical form suitable for discussion and analysis. The educated person could exchange original thoughts about any discipline.

    Today every college major is a job training routine. Nobody is interested in education, everyone wants a job. If you can say of yourself "I am a ..." doctor, lawyer, machinist, programmer, teacher, football player - then you are blue collar. If you have a title then you are not educated.

    Education in its most recent European incarnation (Renaissance) was designed for gentlemen and to some extent for gentlewomen. People who needed the knowledge to communicate with gentlepeople from other lands about politics, business, war, economics, trends, etc. People who were expected to represent their respected families and countries. People who would set an example for others less educated. It was unthinkable that an educated person would not know several languages, that a well bred woman would not be able to play piano, that a child might not be equipped to spew the most elegant insults to his mates.

    America received a bit of that attitude about education in the person of Benjamin Franklin and a few others, but generally declined into a morass of religious superstition which continues today.

    I was an English major. I was beset with inquiries about my planning to be a teacher (the only occupation open to English majors). I tried to explain that I was merely interested in language and creative writing. This explanation was incomprehensible to other students.

    Despite my classical education (some sciences, philosophy, arts, programming, electronics and quite a lot of business courses), I am still blue collar. Nobody will hire me for what I am capable of. They only see a useless degree.

    However hungry I may become, I have immense satisfaction in my broad perspective. I feel that I have a fuller sense of my environment, of the past and future, of human nature, of the essence of math, logic and physics. Could be my imagination but my life is a process of growing, expanding in every direction.

    It seems there are two ways of observing our environment. With our eyes, we see straight ahead. We focus, perhaps on programming, and to the extent that we focus, we eliminate all else. Most Nobel winners are highly focused. The other way of observing is as we do with our ears. All sounds, from all directions come to us. To the extent that we can hear and absorb, we admit a wide spectrum of understanding. Da Vinci consumed a wide spectrum. Some balance of these two is probably ideal.

    --
    ...omphaloskepsis often...
  85. I have a similar experience by ananthap · · Score: 1

    In Chenna, India, till about 2009 (when I worked there) we used to recruit only form the "diploma" schools which In India are quite common AND AMONG THINGS TEACH LIKE HVAC, AUTOMOBILE ENGINEERING, ELECTRONICS etc These were usually full two years after high school. We used to use this diploma school for recruiting people after an aptitude test consisting of : numerical and spatial reasoning tests - like IQ tests and real fundamental questions in the OS of their choice. We found - Didn't have to teach them the real basics like whats a DBMS, file system. - Used to working in teams as part of their assignments. After the orientation and training, they would immediately enrol for higher studies in evening and week end colleges and thus we had lesser employee attrition since they would be more likely to stay till they got their college degree. I highly recommend this method. But FIND A GOOD SCHOOL WITH A KNOWN TRADITION OF GOOD EDUCATION AND VALUES. OK