Slashdot Mirror


New Book Describes 'Bluffing' Programmers in Silicon Valley (theguardian.com)

Long-time Slashdot reader Martin S. pointed us to this an excerpt from the new book Live Work Work Work Die: A Journey into the Savage Heart of Silicon Valley by Portland-based investigator reporter Corey Pein.

The author shares what he realized at a job recruitment fair seeking Java Legends, Python Badasses, Hadoop Heroes, "and other gratingly childish classifications describing various programming specialities." I wasn't the only one bluffing my way through the tech scene. Everyone was doing it, even the much-sought-after engineering talent. I was struck by how many developers were, like myself, not really programmers, but rather this, that and the other. A great number of tech ninjas were not exactly black belts when it came to the actual onerous work of computer programming. So many of the complex, discrete tasks involved in the creation of a website or an app had been automated that it was no longer necessary to possess knowledge of software mechanics. The coder's work was rarely a craft. The apps ran on an assembly line, built with "open-source", off-the-shelf components. The most important computer commands for the ninja to master were copy and paste...

[M]any programmers who had "made it" in Silicon Valley were scrambling to promote themselves from coder to "founder". There wasn't necessarily more money to be had running a startup, and the increase in status was marginal unless one's startup attracted major investment and the right kind of press coverage. It's because the programmers knew that their own ladder to prosperity was on fire and disintegrating fast. They knew that well-paid programming jobs would also soon turn to smoke and ash, as the proliferation of learn-to-code courses around the world lowered the market value of their skills, and as advances in artificial intelligence allowed for computers to take over more of the mundane work of producing software. The programmers also knew that the fastest way to win that promotion to founder was to find some new domain that hadn't yet been automated. Every tech industry campaign designed to spur investment in the Next Big Thing -- at that time, it was the "sharing economy" -- concealed a larger programme for the transformation of society, always in a direction that favoured the investor and executive classes.

"I wasn't just changing careers and jumping on the 'learn to code' bandwagon," he writes at one point. "I was being steadily indoctrinated in a specious ideology."

207 of 292 comments (clear)

  1. older generations already had a term for this by Anonymous Coward · · Score: 5, Interesting

    Older generations called this kind of fraud "fake it 'til you make it."

    1. Re: older generations already had a term for this by Z00L00K · · Score: 5, Insightful

      It's not really faking it completely but a matter of code re-use.

      Code re-use is fine if you know the code, but introducing security issues if you use the wrong code.

      To write good code you need to understand the problem it shall solve. The code itself may not be efficient or use the optimal features offered but if it really solves the problem without issues from the black box perspective then you can use someone more skilled to optimize it. This is the main problem in most cases - people are either coders without knowing the business they code for or they know the business but are unable to make decent code and just produce shitty powerpoints and excel sheets. Find someone that can do both and you'd get a great boost for the company.

      --
      If builders built buildings the way programmers wrote programs, then the first woodpecker would destroy civilization.
    2. Re:older generations already had a term for this by Anonymous Coward · · Score: 2, Informative

      Older generations called this kind of fraud "fake it 'til you make it."

      In the bad old days we had a hell of a lot of ridiculous restriction

      We must somehow made our programs to run successfully inside a RAM that was 48KB in size (yes, 48KB, not 48MB or 48GB), on a CPU with a clock speed of 1.023 MHz

      Because of it, we had to FAKE a lot of things --- such as, updating the users, at least once every 2 seconds or so, when calculations (there was no spreadsheet yet back then) might take minutes

      Nowadays with GBs or memory and GHz of clock speed, with multicore CPUs, if the programmers are still faking it, to tell you the truth, they are not fit to call themselves programmers

    3. Re:older generations already had a term for this by molarmass192 · · Score: 4, Interesting

      These restrictions is a large part of what makes Arduino programming "fun". If you don't plan out your memory usage, you're gonna run out of it. I cringe when I see 8MB web pages of bloated "throw in everything including the kitchen sink and the neighbor's car". Unfortunately, the careful and cautious way is a dying in favor of the throw 3rd party code at it until it does something. Of course, I don't have time to review it but I'm sure everybody else has peer reviewed it for flaws and exploits line by line.

      --

      Good people do not need laws to tell them to act responsibly, while bad people will find a way around the laws-Plato
    4. Re: older generations already had a term for this by Anonymous Coward · · Score: 2, Insightful

      Oh bs. Code reuse is not the issue, most programmers are outright frauds.

      This is certainly not a new problem, I regularly interview people with 20+ years experience who cannot tell me how things work under the hood.

      The issue is kids these days basically have point and click development experiences and never learn how to build things from the ground up.

      If you program C/C++ you had better be able to understand the asm for the architecture you target, if you program in a high level interpreted language then you better have pulled apart the interpreter you often use to understand how it works.

      Otherwise all you get is a bunch of code sloppily taped together by someone who cannot really tell you how or why it works or more importantly how it may break or why it is broken.

    5. Re: older generations already had a term for this by gbjbaanb · · Score: 4, Insightful

      That's not strictly true, you don't need to go down that low to be good at what you do, but you do still need to understand what it is doing, and why.

      If you don't, you end up with stupidity like the ASP.NET programmers who built their identity system to use strings as primary DB keys, or the .NET programmers who created an array class and called it List (yes, Lists in .NET are arrays under the hood, with array-style performance).

      this kind of nonsense makes it next to impossible to get things done properly, how many systems are built with entity framework gobbling up masses of CPU and DB time because the coders didn't want to use SQL when they could write C# code for everything (I'm still surprised they don't have a C# engine to create client side javascript!)

      I think the problem has been the "crack it out quick" attitude to programming where everything is thrown away after a few years for the new cool tech. As a result, everybody ends up reinventing everything over and over and nobody gets good at it. Net result: programming becomes a low-skill job plugging blocks of code together from tutorials and examples, and its no wonder bosses now consider programmers to be low skill workers deserving of lower pay. All the best guys have gone and become architects instead.

    6. Re: older generations already had a term for this by cyber-vandal · · Score: 1

      You don't understand the point of an ORM do you? I'd suggest reading why they exist. EF isn't perfect (and there are at least two mainstream alternatives) but it exists for other reasons than developers being too "lazy" to have code full of SQL strings. There's plenty of old .NET code with that if you're desperate to work that way but I wouldn't recommend it.

    7. Re:older generations already had a term for this by tlhIngan · · Score: 2, Insightful

      b) No computer ever ran at 1.023 MHz. It was either a nice multiple of 1Mhz or maybe a multiple of 3.579545Mhz (ie. using the TV output circuit's color clock crystal to drive the CPU).

      Well, it could be used to drive the TV output circuit, OR, it was used because it's a stupidly cheap high speed crystal. You have to remember except for a few frequencies, most crystals would have to be specially cut for the desired frequency. This occurs even today, where most oscillators are either 32.768kHz (real time clock), 12MHz (USB 1.1/2.0 interfaces), 19MHz, or 27MHz. Or the two TV frequencies (3.58 and 4.43MHz).

      But back then, before we had the influx of many devices with standardized frequencies, there were only a few standard crystals - mostly related to TV or radio frequencies. And custom-cut crystals were expensive, so you generally wanted crystals that could be ordered trivially easy, which meant limiting yourself to bog standard TV or radio IF crystals.

      Another crystal was 4.43361875 MHz - this was used in PAL countries and divided into as well.

      People grew very adept at multiplying and dividing the frequencies - the IBM PC's 4.77MHz was derived from the 3.58MHz crystal (even IBM couldn't get away from bog-standard crystals) - at a ratio of 4/3.

    8. Re:older generations already had a term for this by cheekyboy · · Score: 1

      and all these modern coders forget old lessons, and make shit stuff, just look at instagram windows app, what a load of garbage shit, that us old fuckers could code in 2-3 weeks.

      Instagram - your app sucks, cookie cutter coders suck, no refinement, coolness. Just cheap ass shit, with limited usefulness.

      Just like most of commercial software thats new - quick shit.

      Oh and its obvious if your an Indian faking it, you havent worked in 100 companies at the age of 29.

      --
      Liberty freedom are no1, not dicks in suits.
    9. Re:older generations already had a term for this by AmiMoJo · · Score: 3, Informative

      Unfortunately, the careful and cautious way is a dying in favor of the throw 3rd party code at it until it does something.

      Of course. What is the business case for making it efficient? Those massive frameworks are cached by the browser and run on the client's system, so cost you nothing and save you time to market. Efficient costs money with no real benefit to the business.

      If we want to fix this, we need to make bloat have an associated cost somehow.

      --
      const int one = 65536; (Silvermoon, Texture.cs)
      SJW, n: "Someone I don't like, and by the way I'm a fuckwit" - AC
    10. Re:older generations already had a term for this by serviscope_minor · · Score: 1

      In the bad old days we had a hell of a lot of ridiculous restriction We must somehow made our programs to run successfully inside a RAM that was 48KB in size (yes, 48KB, not 48MB or 48GB), on a CPU with a clock speed of 1.023 MHz

      We still have them. In fact some of the systems I've progrmmed hve been more resource limited than the gloriously spacious 32KiB memory of the BBC model B. Take the PIC12F or 10F series. A glorious 64 bytes of RAM, max clock speed of 16MHz, but not unusual to run it 32kHz.

      --
      SJW n. One who posts facts.
    11. Re:older generations already had a term for this by Anonymous Coward · · Score: 2, Interesting

      Yeah, nice talk. You could have stopped after the first sentence. The other AC is referring to the Commodore C64. The frequency has nothing to do with crystal availability but with the simple fact that everything in the C64 is synced to the TV. One clock cycle equals 8 pixels. The graphics chip and the CPU take turns accessing the RAM. The different frequencies dictated by the TV standards are the reason why the CPU in the NTSC version of the C64 runs at 1.023MHz and the PAL version at 0.985MHz.

    12. Re:older generations already had a term for this by Anonymous Coward · · Score: 2, Interesting

      Unfortunately, the careful and cautious way is a dying in favor of the throw 3rd party code at it until it does something.

      Of course. What is the business case for making it efficient? Those massive frameworks are cached by the browser and run on the client's system, so cost you nothing and save you time to market. Efficient costs money with no real benefit to the business.

      If we want to fix this, we need to make bloat have an associated cost somehow.

      Because, latency of a request is the most important factor for getting users to continue using a service. Its more important than anything that comes from product management, the design dept or the executive suite (which is surprising). Its gotten so bad that I have seen companies miss out on 10 figures a year in revenue because of bloated software with poor latency. Meanwhile, they want to run an A/B test on if the pink background makes more money than the green one (turns out it doesn't fucking matter). Its OK, if it wasn't for ppl like you, I wouldn't get paid so well to clean up your messes. Hint, you are one of the fakers an part of the problem.

    13. Re:older generations already had a term for this by 50000BTU_barbecue · · Score: 4, Informative

      "b) No computer ever ran at 1.023 MHz."

      Only the Guinness World Record highest selling single model of home computer.

      So much for "no". That's the NTSC version BTW. The VIC-20 also ran at that frequency.

      "or maybe a multiple of 3.579545Mhz"

      So why contradict yourself?

      14.31818MHz/14 = 1.022MHz. What a coinkydink!

      Hey, what about the Atari 800?

      https://en.wikipedia.org/wiki/...

      1.79MHz.

      ZX80?

      https://en.wikipedia.org/wiki/...

      3.25MHz...

      You're a poser, friend.

      --
      Mostly random stuff.
    14. Re:older generations already had a term for this by Anonymous Coward · · Score: 2, Interesting

      Commodore 64 for the win. I worked for a company that made detection devices for the railroad, things like monitoring axle temperatures, reading the rail car ID tags. The original devices were made using Commodore 64 boards using software written by an employee at the one rail road company working with them.

      The company then hired some electrical engineers to design custom boards using the 68000 chips and I was hired as the only programmer. Had to rewrite all of the code which was fine because I actually had access to a C compiler. The original developer had used some system he'd pulled from a magazine that was a really bizarre pseudo assembler.

      I had the luxury of having a full 64kb burnable ROM to hold my code, though it was setup with only 1 of 4 16kb pages accessible at at time so did have to do some bank switching to use it all. Fun days.

    15. Re: older generations already had a term for this by gbjbaanb · · Score: 1

      I do understand it, and I know they are bloated and slow. the real main point of them is so everyone can pretend their DB access looks like their middle-tier programming language.

      I use Dapper these days, though I still use EF as its easy (yup, I'm lazy too), Dapper gives the benefits of ORM ease-of-use plus speed of native SQL. And, when it comes to some complex queries, actually works, unlike EF Core (which is what took me to dapper in the first place an outer join EF query with multiple where clauses simply broke EF core)

    16. Re: older generations already had a term for this by Junta · · Score: 1

      It's not a "kids these days" sort of issue, it's *always* been the case that shameless, baseless self-promotion wins out over sincere skill without the self-promotion, because the people who control the money generally understand boasting more than they understand the technology. Yes it can happen that baseless boasts can be called out over time by a large enough mass of feedback from competent peers, but it takes a *lot* to overcome the tendency for them to have faith in the boasts.

      It does correlate strongly with the flow of venture capital. Back in the late 90s, if you vaguely knew how to use microsoft frontpage and talked yourself up enough, boom you have a lucrative "webmaster" job (that's when people first started claiming "html" as a "programming language"). When the bubble burst then, the comapnies that were particularly infested with that went under and the problem became less severe, and with the resurgence of poorly vetted venture capital so too has the visibility and severity of the phenomenon increased again.

      --
      XML is like violence. If it doesn't solve the problem, use more.
    17. Re:older generations already had a term for this by Junta · · Score: 1

      Here's another problem, if faced with a skilled team that says "this will take 6 months to do right" and a more naive team that says "oh, we can slap that together in a month", management goes with the latter. Then the security compromises occur, then the application fails due to pulling in an unvetted dependency update live into production. When the project grows to handling thousands instead of dozens of users and it starts mysteriously folding over and the dev team is at a loss, well ithe choice has been made and it must be easier to fix it than scrap it and redo it the way the experienced team advocated right??

      --
      XML is like violence. If it doesn't solve the problem, use more.
    18. Re: older generations already had a term for this by Bing+Tsher+E · · Score: 1

      The PIC10F200 has 16 bytes of RAM and 256 bytes of program memory.

      It makes up for this by being totally stand-alone with a built-in clock, costing about fifteen cents in volume and coming in a 6 pin package the size of a grain of rice.

    19. Re: older generations already had a term for this by cyber-vandal · · Score: 1

      Yeah who'd want to use strongly typed objects instead of loads of strings everywhere. There's nothing stopping you using raw SQL with EF in any case.

    20. Re: older generations already had a term for this by geoskd · · Score: 1

      It makes up for this by being totally stand-alone with a built-in clock, costing about fifteen cents in volume and coming in a 6 pin package the size of a grain of rice.

      And in the grand scheme of things, it is about as useful as a grain of rice in the programming sense.

      Six pins? You've got two for power, at least one for programming, so that leaves you with 3 pins, and with so little actual compute power, the best you could really manage is to blink a few LEDs in an interesting pattern. You don't even have enough space to properly handle an I2C or serial interface on two of the pins, so what the hell are you going to do with this thing?

      --
      I wish I had a good sig, but all the good ones are copyrighted
    21. Re: older generations already had a term for this by serviscope_minor · · Score: 1

      And in the grand scheme of things, it is about as useful as a grain of rice in the programming sense.

      They're plenty useful, not for running Firefox, but for automation tasks.

      Six pins? You've got two for power,

      Yes.

      at least one for programming, so that leaves you with 3 pins

      No: the ICSP for the PIC doesn't obstruct any of the pins and you can buy them preprogrammed if you're purchasing in volume.

      and with so little actual compute power, the best you could really manage is to blink a few LEDs in an interesting pattern.

      Either there are a *lot* of people who want to blink LEDs in an interesting pattern or you're mistaken about the use.

      --
      SJW n. One who posts facts.
    22. Re: older generations already had a term for this by locketine · · Score: 2

      My company is dealing with the result of this mentality right now. We released the web app to the customer without performance testing and doing several majorly inefficient things to meet deadlines. Once real load was put on the application by users with non-ideal hardware and browsers, the app was infuriatingly slow. Suddenly our standard sub-40 hour workweek became a 50+ hour workweek for months while we fixed all the inefficient code and design issues.

      So, while you're right that getting to market and optimizing later is the correct way to go, there's a baseline level of performance the customer will demand and you must meet their expectations or you've lost your chance to win in the market. The customers put up with the issues though, primarily because we have an amazing vendor lock-in strategy, but most of our team quit as a result of the long hours fixing everything and had been telling management over and over that we needed to ensure baseline performance expectations were met.

      Btw, this wasn't the first time I've been on a team that experienced this. Last time we did not have a vendor lock-in strategy and the product died a quick death after spending millions of dollars on R&D.

      --
      Think globally but act within local variable scope.
    23. Re: older generations already had a term for this by Greyfox · · Score: 1
      How much code do you have to reuse before you're not really programming anymore? When I started in this business, it was reasonably possible that you could end up on a project that didn't particularly have much (or any) of an operating system. They taught you assembly language and the process by which the system boots up, but I think if I were to ask most of the programmers where I work, they wouldn't be able to explain how all that works. Or technical details about processes -- how to effectively create and monitor them, that sort of thing. Hell, a lot of them probably wouldn't be able to tell you technical details about threads that they probably should know to effectively use threads in their code. But a lot of them could tell you about Javascript ecosystems that I've largely been ignoring.

      I'm thinking the bar should be at the point where you can actually make something out of all that code you're reusing. Since around 2010, I've seen a lot of projects where they look like they've assembled something that does about 70% of what the project wants. But that 70% is just what the libraries they've assembled are doing, and they're not actually capable of building the final 30%. You know, the 30% where all the differentiating business logic is. They seem to spend most of the rest of the time spinning their wheels and looking for libraries that do more of what they're trying to accomplish. In a couple of them, they also could not use the underlying libraries very well -- I remember one particular guy who was using spring and hibernate, joining two tables in Java. He'd retrieve both the tables and then try to join them manually in Java. On more than about 30,000 records, his program ran out of memory and crashed. The SQL join I wrote to test it ran in seconds on a million records. Their solution, upon seeing that, was to run their thing several time a day and hope that it didn't crash. That's the kind of thing I've been seeing on projects lately.

      It really feels like if you know what you're doing it should be possible to build a team of actually good programmers and put everyone else out of business by actually meeting your deliverables, but no one has yet. I wonder why that is.

      --

      I'm trying to teach myself to set people on fire with my mind... Is it hot in here?

    24. Re: older generations already had a term for this by AmiMoJo · · Score: 1

      I didn't say it's the correct way to go, just the way that most companies go. I get frustrated with premature product release too.

      --
      const int one = 65536; (Silvermoon, Texture.cs)
      SJW, n: "Someone I don't like, and by the way I'm a fuckwit" - AC
    25. Re:older generations already had a term for this by Wraithlyn · · Score: 1

      LOL what exactly is so special about 16K RAM? https://yourlogicalfallacyis.c...

      I cut my teeth on a VIC20 (5K RAM), then later a C64 (which ran at 1.023MHz...)

      --
      "Mind, as manifested by the capacity to make choices, is to some extent present in every electron." -Freeman Dyson
    26. Re: older generations already had a term for this by geoskd · · Score: 1

      Either there are a *lot* of people who want to blink LEDs in an interesting pattern or you're mistaken about the use.

      So what are the uses for that? I am curious what things people have put these to use for.

      Just because a manufacturer has made a lot of something doesn't make them used for much. When a fab is spinning up a plant, they often have to do several runs of small batches (10k to 100 units), and it is useful to have those runs be a very small core that is easy to verify so that they can get a very accurate idea of the number of defects per unit area. Processors make great test runs because you can write simple software that exercises all of the silicon and identifies the number of defects per 100k units. Because of this need, the manufacturer will provide the resulting parts to their customers at very low prices.

      In the end, just because PIC only charges $0.17 for them doesn't mean they actually sell very many of them, it could very easily just be a fab test run that they warehouse and sell of until they are gone.

      --
      I wish I had a good sig, but all the good ones are copyrighted
    27. Re: older generations already had a term for this by locketine · · Score: 1

      I'm glad to hear that you agree. I was responding to the claim that there was no cost associated with the go to market fast approach. There are real costs but inexperienced executives don't know about them.

      --
      Think globally but act within local variable scope.
    28. Re: older generations already had a term for this by djinn6 · · Score: 1

      It really feels like if you know what you're doing it should be possible to build a team of actually good programmers and put everyone else out of business by actually meeting your deliverables, but no one has yet. I wonder why that is.

      You mean Amazon, Google, Facebook and the like? People may not always like what they do, but they manage to get things done and make plenty of money in the process. The problem for a lot of other businesses is not having a way to identify and promote actually good programmers. In your example, you could've spent 10 minutes fixing their query and saved them days of headache, but how much recognition will you actually get? Where is your motivation to help them?

    29. Re:older generations already had a term for this by MSG · · Score: 1

      You're a poser, friend.

      You mean you found one of the people the article is about? They'll probably claim they were merely demonstrating the aforementioned bluffing. :)

    30. Re: older generations already had a term for this by Hognoxious · · Score: 1

      I get frustrated with premature product release too.

      I've never heard it called that before, sweetie.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    31. Re: older generations already had a term for this by serviscope_minor · · Score: 1

      So what are the uses for that? I am curious what things people have put these to use for.

      It's hard to determine because people don't advertise use of them at all. However, I know that my electric tothbrush uses an Epson 4 bit MCU of some description. It's got a status LED, basic NiMH batteryb charger and a PWM controller for an H Bridge. Braun sell a *lot* of electric toothbrushes.

      Any gadget that's smarter than a simple switch will probably have some sort of basic MCU in it. Alarm system componets, sensor interfaces, timer chip replacements, MOSFET drivers, smart TRIAC drivers and so on. Appliances will have this sort of thing built in. My Bosch stick blender has some sort of speed controller for the motor. You don't need much to deal with that.

      Here's an example of using one as a zero crossing TRIAC controller:

      http://ww1.microchip.com/downl...

      Could easily be buried inside a hotplate or some such.

      Oh and the dimers I've got in my house are definitely MCU controlled. You can communicate using a series of presses to do the setup (rising versus falling edge, minimum level and so on). Basically 3 inputs there (switch, pot and mains phase) and one output. And the dimmers are pretty cheap, so perfect for a 17 cent MCU.

      --
      SJW n. One who posts facts.
    32. Re: older generations already had a term for this by goose-incarnated · · Score: 5, Insightful

      You don't understand the point of an ORM do you? I'd suggest reading why they exist

      They exist because programmers value code design more than data design. ORMs are the poster-child for square-peg-round-hole solutions, which is why all ORMs choose one of three different ways of squashing hierarchical data into a relational form, all of which are crappy.

      If the devs of the system (the ones choosing to use an ORM) had any competence at all they'd design their database first because in any application that uses a database the database is the most important bit, not the OO-ness or Functional-ness of the design.

      Over the last few decades I've seen programs in a system come and go; a component here gets rewritten, a component there gets rewritten, but you know what? They all have to work with the same damn data.

      You can more easily switch out your code for new code with new design in a new language, than you can switch change the database structure. So explain to me why it is that you think the database should be mangled to fit your OO code rather than mangling your OO code to fit the database?

      --
      I'm a minority race. Save your vitriol for white people.
    33. Re:older generations already had a term for this by Cederic · · Score: 1

      I ran out of RAM to store the source code for a program I created for the C64.

      Sadly at the time I didn't know assembler was an option.

    34. Re: older generations already had a term for this by Cederic · · Score: 1

      The future, my friend, and welcome to it indeed.

    35. Re: older generations already had a term for this by geoskd · · Score: 1

      Interesting, lets pick those apart a bit.

      It's hard to determine because people don't advertise use of them at all. However, I know that my electric toothbrush uses an Epson 4 bit MCU of some description. It's got a status LED, basic NiMH batteryb charger and a PWM controller for an H Bridge. Braun sell a *lot* of electric toothbrushes.

      To implement a NiMH or NiCD charger, you need to have an analog input, which the PIC doesn't have. You will also need to be able to store at least 32 samples at 10 bits each sample so that you can detect the charging peak and the *small* voltage drop that signals end of charge. Given that, you will have to have a separate battery management IC, and most of them come with an charge state pin that can be tied to an LED using a $0.004 FET to indicate charge status. The rest is simply a mechanical switch with the appropriate FET and resistor to drive on LED directly from the switch. Putting a uC on a toothbrush is a pointless waste of money, and the fact that it has one in it will last only until downward price pressure from cheap Chinese knockoffs that do not have a uC push the over-expensive product out of the market. I'm not saying that a uC wont be a better solution, as the battery charger chips start at around $1.50 in quantity; What I am saying is that these low end PICs are essentially useless.

      Any gadget that's smarter than a simple switch will probably have some sort of basic MCU in it. Alarm system componets, sensor interfaces, timer chip replacements, MOSFET drivers, smart TRIAC drivers and so on. Appliances will have this sort of thing built in. My Bosch stick blender has some sort of speed controller for the motor. You don't need much to deal with that.

      Alarm products can come in two varieties: Centralized control and distributed control. For a centralized control, you have "dumb" remote sensors, and a central control IC that can ready the electrical signals from multiple channels. In this case, the central IC needs to have many pins (at least one for every IO sensor attached to the system). For the decentralized controls, the individual devices need to have enough smarts to understand their addressing, but not much more. In the first case, a PIC just isn't going to cut it. In the second case, it would be cheaper to simply use any of a variety of addressable buses devices that can handle the i/o and the bus interactions. again, there is no need for a uC in the "smart" sensor, so why waste the money?

      For the blender, motor control requires a feedback mechanism that will require an analog input that the PIC can't handle.

      Here's an example of using one as a zero crossing TRIAC controller: http://ww1.microchip.com/downl... [microchip.com]

      You want a MOC3021. No need to do any programming, it is a standalone chip that does the same thing, is cheaper per unit than the micro, and has the opto-isolation built in.

      Oh and the dimers I've got in my house are definitely MCU controlled. You can communicate using a series of presses to do the setup (rising versus falling edge, minimum level and so on). Basically 3 inputs there (switch, pot and mains phase) and one output. And the dimmers are pretty cheap, so perfect for a 17 cent MCU.

      You can do the same thing with a 555 timer chip ($0.03 in large quantities), and a half dozen external passives to gate the behaviors. The trick is setting the "modes" by charging and discharging specific capacitors using the 555 to control behaviors based on timing. If you are going to sell 10M units per year (not at all unreasonable for light bulbs), then a cost difference of $0.01 per unit is $100,000 per year. For that much, it is cost effective to hire an engineer for two years to do nothing but design this one circuit. In reality it will take a competent (read as expensive) engineer about a month to design and test that circuit.

      If you want that product to do anything fancier, the PIC wont have enough horsepower for it anyway, so you need a beefier uC anyways

      --
      I wish I had a good sig, but all the good ones are copyrighted
    36. Re: older generations already had a term for this by serviscope_minor · · Score: 2

      Interesting, lets pick those apart a bit.

      Oh this should be good.

      To implement a NiMH or NiCD charger, you need to have an analog input, which the PIC doesn't have.

      It's an Epson 4 bitter which you'd know if you bothreed to do anything other than rage-read my post. They have similar computational capacity to the PIC. And they're 4 bits not 8.

      To implement a NiMH or NiCD charger, you need to have an analog input, which the PIC doesn't have. You will also need to be able to store at least 32 samples at 10 bits each sample so that you can detect the charging peak and the *small* voltage drop that signals end of charge.

      Yes no one ever did a bodge job with a trickle charger. No siree. Never worked.

      Given that, you will have to have a separate battery management IC,

      Do an actual teardown yourself or simply watch one of the teardown videos on youtube. They don't have battery management ICs.

      The rest is simply a mechanical switch with the appropriate FET and resistor to drive on LED directly from the switch. Putting a uC on a toothbrush is a pointless waste of money, and the fact that it has one in it will last only until downward price pressure from cheap Chinese knockoffs that do not have a uC push the over-expensive product out of the market. I'm not saying that a uC wont be a better solution, as the battery charger chips start at around $1.50 in quantity; What I am saying is that these low end PICs are essentially useless.

      Except that's not how they're made. The uC also provides the 30 second and 2 minute timers which the device has. $0.17 is hardly enough to make the produce "over expensive".

      Alarm products can come in two varieties: Centralized control and distributed control. For a centralized control, you have "dumb" remote sensors, and a central control IC that can ready the electrical signals from multiple channels. In this case, the central IC needs to have many pins (at least one for every IO sensor attached to the system). For the decentralized controls, the individual devices need to have enough smarts to understand their addressing, but not much more. In the first case, a PIC just isn't going to cut it. In the second case, it would be cheaper to simply use any of a variety of addressable buses devices that can handle the i/o and the bus interactions. again, there is no need for a uC in the "smart" sensor, so why waste the money?

      They're 0.17. Are your bus addressable chips which can then plug to arbitrary bits of hadware (a) as cheap and (b) as quick to develop thereby reducing the time to market? A clue: no.

      For the blender, motor control requires a feedback mechanism that will require an analog input that the PIC can't handle.

      First, speed controllers don't need analogue inputs, you need timer inputs which it does have. Second, you can bodge analog in with a comparator which the 10F204 has.

      You want a MOC3021. No need to do any programming, it is a standalone chip that does the same thing, is cheaper per unit than the micro, and has the opto-isolation built in.

      First, you missspelled "more expensive". Second that IS the triac. It doesn't do anything by itself. So good job, you have a TRIAC.

      You can do the same thing with a 555 timer chip ($0.03 in large quantities), and a half dozen external passives to gate the behaviors.

      Pics or it didn't happen. Either post a circuit diagram showing how you can build a dimmer which can be switched form leading to trailing edge and calibrated using only the main button press with a 555 or you're full of crap.

      If you want that product to do anything fancier, the PIC wont have enough horsepower for it anyway, so you need a beefier uC anyways

      All you've done is demonstrate your lack of knowledge of existing products and the capabilities of various chips.

      --
      SJW n. One who posts facts.
    37. Re: older generations already had a term for this by Hognoxious · · Score: 1

      Management decided it would be better to teach a group of 'Y' programmers language 'X' then to hire a group of language 'Y' programmers and try to teach them how the system worked. A wise decision!

      I wouldn't call it wise to have twice as many programmers as you need. And why retrain people if you're going to bring in new people anyway?

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    38. Re:older generations already had a term for this by swillden · · Score: 1

      a) A real coder would brag about "16k RAM" (or less). 48K was much later on.

      Meh. I worked on smart card chips in the mid '90s with 256 bytes of RAM. That's right, one quarter of one kilobyte. That was working space, though -- variables; the code was in and executed from ROM or EEPROM (of which there was 8 kB and 1 kB, respectively). The call stack was in three dedicated registers, so you didn't have to waste any RAM on storing return addresses, but you were also limited to three calls deep. The guys who'd been around for a while told me about the joys of the previous chip, which had only 64 bytes of RAM, and only one stack register.

      --
      Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
    39. Re: older generations already had a term for this by ndykman · · Score: 1

      None of these are really huge problems. There really is no performance hit for strings as a primary key. If it's a candidate key, it's fine to use. And array lists are a very reasonable general implementation of a list interface.

      You can write bad queries in any language, but LINQ and Entity Framework actually does a pretty reasonable job of optimization. Besides, SQL is equally easy to abuse. And I'll take slower performance in the face of easier to maintain code. Which is a big reason ORMs do exist.

      But, since it's Microsoft, I know people will insist it is impossible that .Net is actually a reasonably well coded platform, but it is.

    40. Re: older generations already had a term for this by gbjbaanb · · Score: 1

      because an array is not a list.

      I'm a computer scientist BTW, these terms mean different things.

    41. Re: older generations already had a term for this by gbjbaanb · · Score: 1

      It is a reasonably well coded platform - but if you read Chriss Brumme's old blog, you'll see all the warts that he wishes they'd done better. But I guess hindsight is an easy thing to apply, even to your own code. (Brumme was one of the guys who wrote .NET, his blogs are freaking awesome)

      You might not noticed a perf hit from using strings, but that was never my attitude - I prefer the best system, in a "look after the pennies" approach. If it ever needs to scale up (which IMHO is more often than you think) then you're screwed because you assumed that "string keys would be fine, we'll never need to scale where they'd be noticeable"

      My biggest issue is that there's no real benefit to string - I mean the Asp.net identity code that uses them by default stores guids in them anyway (ie why not just use a guid, at least its a 128 bit number) or use an int like everything else in the asp.net EF framework.

      I'm quite old, been doing this for a while. I rem,ember when you would never ever use a string for comparisons if you had the option of an enum (or int) because computers back in the day were not as powerful and fast as they are today, so the perf hit would be noticeable very quickly. That means the perf hit is still there, but those super-fast CPUs (and RAM buses) are doing a lot of unnecessary work, just so you can use a string when an int would be quite acceptable even for the lazy programmer.

      Incidentalyl, easier to maintain code means stored procs. turn your query code into black box APIs, much easier to maintain then than hard-coding queries into code.

    42. Re: older generations already had a term for this by gbjbaanb · · Score: 1

      you mean you don't isolate your DB in its own layer via stored procedures and access them like parameterised APIs?

      Yeah, who'd want hard-coded queries written in terms of entities when you can simply call a strongly typed API.

    43. Re: older generations already had a term for this by lgw · · Score: 1

      Nah, you're using academic jargon that doesn't apply to the real world. Out here in the real world, a "list" is an array that can grow. Apologies to LISP, but that idea of a list didn't catch on - people call that a "linked list", to distinguish it from the normal sort of list.

      Hey, at least it's not called a "Plex".

      --
      Socialism: a lie told by totalitarians and believed by fools.
    44. Re: older generations already had a term for this by datavirtue · · Score: 1

      Yeah. Let it go to production. Swoop in and fix it once the shit has hit the fan--you are the hero. This is how we do.

      If I fix things ahead of time I piss people off, end up doing their job for them, and they get credit. I would rather obtain hero status and the pay/perks that go along with it.

      --
      I object to power without constructive purpose. --Spock
    45. Re: older generations already had a term for this by datavirtue · · Score: 1

      "There really is no performance hit for strings as a primary key."

      Yeah...if each string is sortable and comes immediately after the last one.

      --
      I object to power without constructive purpose. --Spock
    46. Re: older generations already had a term for this by gbjbaanb · · Score: 1

      out here in the real world a list can mean: an array, or a linked list, or an immutable representation of some data.

      Its pathetic. That's why we have "academic jargon", so one term means the same thing all the time. We have enough chaos without introducing more.

    47. Re: older generations already had a term for this by lgw · · Score: 1

      Well, I was going to say that most devs use Java or C#, where List means array, but I suspect that's not true any more. Javascript seems to be taking over. At least there it makes perfect sense. For example, you can grow an array by adding two arrays:

      > [1] + [2]
      12

      Naturally!

      --
      Socialism: a lie told by totalitarians and believed by fools.
    48. Re: older generations already had a term for this by cyber-vandal · · Score: 1

      You put your business logic in the database? Wow, let's party like it's 1999. Do you use lots of triggers too? Again there's nothing stopping you executing stored procs with EF if you're desperate to do it that way.

  2. Bluff? by Anonymous Coward · · Score: 1, Funny

    I never bluff. I've got a big dick. I don't need to bluff.

  3. ... A job fair can easily test this competency. by wierd_w · · Score: 3, Interesting

    Many of these languages have an interactive interpreter. I know for a fact that Python does.

    So, since job-fairs are an all day thing, and setup is already a thing for them-- set up a booth with like 4 computers at it, and an admin station. The 4 terminals have an interactive session with the interpreter of choice. Every 20min or so, have a challenge for "Solve this problem" (needs to be easy and already solved in general. Programmers hate being pimped without pay. They dont mind tests of skill, but hate being pimped. Something like "sort this array, while picking out all the prime numbers" or something.) and see who steps up. The ones that step up have confidence they can solve the problem, and you can quickly see who can do the work and who can't.

    The ones that solve it, and solve it to your satisfaction, you offer a nice gig to.

    1. Re:... A job fair can easily test this competency. by Anonymous Coward · · Score: 1

      Then you get someone good at sorting arrays while picking out prime numbers, but potentially not much else.

      You are a lunatic.

    2. Re:... A job fair can easily test this competency. by ShanghaiBill · · Score: 5, Informative

      Then you get someone good at sorting arrays while picking out prime numbers, but potentially not much else.

      The point of the test is not to identify the perfect candidate, but to filter out the clearly incompetent. If you can't sort an array and write a function to identify a prime number, I certainly would not hire you. Passing the test doesn't get you a job, but it may get you an interview ... where there will be other tests.

    3. Re:... A job fair can easily test this competency. by wierd_w · · Score: 1

      BINGO!

      (I am not even a professional programmer, but I can totally perform such a trivially easy task. The example tests basic understanding of loop construction, function construction, variable use, efficient sorting, and error correction-- especially with mixed type arrays. All of these are things any programmer SHOULD now how to do, without being overly complicated, or clearly a disguised occupational problem trying to get a free solution. Like I said, programmers hate being pimped, and will be turned off HARD by such a thing.)

      Throw in some of that budgeted employer merch that makes its way around job fairs as fun prizes regardless of who succeeds or fails [as this is a low-stakes pre-screening that is intended to be fun, and situationally appropriate with tech-heads, and most booths just hand it out anyway], and it can even be popular with the crowd.

    4. Re:... A job fair can easily test this competency. by Junta · · Score: 1

      Yeah, when we do tech interviews, we ask questions that we are certain they won't be able to answer, but want to see how they would think about the problem and what questions they ask to get more data and that they don't just fold up and say "well that's not the sort of problem I'd be thinking of" The examples aren't made up or anything, they are generally selection of real problems that were incredibly difficult that our company had faced before, that one may not think at first glance such a position would be faced with. Injecting guidance and explanations and evaluating how they react to that information.

      There are of course a few sanity checks to make sure they have at least actually done the work indicated in their resume and that they aren't lying, but this is a relatively lower priotity

      --
      XML is like violence. If it doesn't solve the problem, use more.
    5. Re:... A job fair can easily test this competency. by Cederic · · Score: 1

      Inability to demonstrate ability to program and uses abbreviations like 'ur' like a 12 year old that hasn't learned English? You're part of the fucking garbage pile, so fuck off and I'll hire someone that can communicate.

    6. Re:... A job fair can easily test this competency. by ShanghaiBill · · Score: 1

      how about having a physics degree, having more knowledge of computers and science than you

      Most programming has nothing to do with physical science, and there is no particular need for a programmer to know how computers work at the physical level. Ask most programmers how CMOS gates work, and they will have no idea. Those that do know are no more likely to be better programmers.

      yet refusing to take ur stupid test because i think you are a jackass

      That is another benefit of the test. In addition to filtering out the incompetent, it also filters out the prima donnas who think that demonstrating actual skills are beneath them. Those people don't make good teammates.

    7. Re:... A job fair can easily test this competency. by Tough+Love · · Score: 1

      You mean, sorting an array in O(N**2) time is trivial.

      --
      When all you have is a hammer, every problem starts to look like a thumb.
  4. Spot on by Anonymous Coward · · Score: 1

    I happen to be working my way through the book now. So far, the author is spot on. I recall my last brief engagement in SF was bordering on nightmare. Lots of overly-earnest coders and marketing drones trying to appear like they were doing something meaningful, or at least not awful.

  5. Most "Professional programmers" are useless. by NerdENerd · · Score: 1

    I am of the opinion that at least 70, probably 80, maybe even 90 percent of professional programmers should just fuck off and do something else as they are useless at programming.

    1. Re:Most "Professional programmers" are useless. by Anonymous Coward · · Score: 4, Funny

      Ah yes, the good old 80:20 rule, except it's recursive for programmers.

      80% are shit, so you fire them.
      Soon you realize that 80% of the remaining 20% are also shit, so you fire them too.
      Eventually you realize that 80% of the 4% remaining after sacking the 80% of the 20% are also shit, so you fire them!

      ...

      The cycle repeats until there's just one programmer left: the person telling the joke.

      ---

      tl;dr: All programmers suck. Just ask them to review their own code from more than 3 years ago: they'll tell you that it sucks, and the person who wrote it should be fired.

    2. Re:Most "Professional programmers" are useless. by Anonymous Coward · · Score: 1

      The cycle repeats until there's just one programmer left: the person telling the joke.

      The closed form solution to calculate the number of rounds necessary to approach 1 from arbitrary N is left as an exercise for the reader.

    3. Re:Most "Professional programmers" are useless. by Anonymous Coward · · Score: 4, Interesting

      I have a theory that

      10% of people are good at what they do. It doesn't really matter what they do, they will still be good at it, because of their nature. These are the people who invent new things, who fix things that others didn't even see as broken and who automate routine tasks or simply question and erase tasks that are not necessary. If you have a software team that contain 5 of these, you can easily beat a team of 100 average people, not only in cost but also in schedule, quality and features. In theory they are worth 20 times more than average employees, but in practise they are usually paid the same amount of money with few exceptions.

      80% of people are the average. They can follow instructions and they can get the work done, but they don't see that something is broken and needs fixing if it works the way it has always worked. While it might seem so, these people are not worthless. There are a lot of tasks that these people are happily doing which the 10% don't want to do. E.g. simple maintenance work, implementing simple features, automating test cases etc. But if you let the top 10% lead the project, you most likely won't be needed that much of these people. Most work done by these people is caused by themselves, by writing bad software due to lack of good leader.

      10% are just causing damage. I'm not talking about terrorists and criminals. I have seen software developers who have tried (their best?), but still end up causing just damage to the code that someone else needs to fix, costing much more than their own wasted time. You really must use code reviews if you don't know your team members, to find these people early.

    4. Re:Most "Professional programmers" are useless. by Anonymous Coward · · Score: 5, Funny

      to find these people early

      and promote them to management where they belong.

    5. Re:Most "Professional programmers" are useless. by Tablizer · · Score: 5, Interesting

      at least 70, probably 80, maybe even 90 percent of professional programmers should just fuck off and do something else as they are useless at programming.

      Programming is statistically a dead-end job. Why should anyone hone a dead-end skill that you won't be able to use for long? For whatever reason, the industry doesn't want old programmers.

      Otherwise, I'd suggest longer training and education before they enter the industry. But that just narrows an already narrow window of use.

    6. Re:Most "Professional programmers" are useless. by NerdENerd · · Score: 1

      Whenever you try and start the conversation of how this could be done better you usually get the explanation of what they have done. Yes, I know what you have done that is why I am here explaining how it could be done more efficiently, we can turn that 400 lines of code in 12. After 20 minutes of listening to them explain what you have already decided was fucking atrocious they start to listen to you and go ah, that's a really good idea. You go back to your desks thinking I have made a deference today only to get a pull request that makes you want to punch them in the face.

    7. Re:Most "Professional programmers" are useless. by serviscope_minor · · Score: 1

      10% are just causing damage. I'm not talking about terrorists and criminals.

      Terrorists and criminals have nothing on those guys. I know guy who is one of those. Worse, he's both motivated and enthusiastic. He also likes to offer help and advice to other people who don't know the systems well.

      --
      SJW n. One who posts facts.
    8. Re:Most "Professional programmers" are useless. by Cesare+Ferrari · · Score: 1

      Well, it does rather depend on which industry you work in - i've managed to find interesting programming jobs for 25 years, and there's no end in sight for interesting projects and new avenues to explore. However, this isn't for everyone, and if you have good personal skills then moving from programming into some technical management role is a very worthwhile route, and I know plenty of people who have found very interesting work in that direction.

    9. Re:Most "Professional programmers" are useless. by gweihir · · Score: 1

      My experience as an IT Security Consultant (I also do some coding, but only at full rates) confirms that. Most are basically helpless and many have negative productivity, because people with a clue need to clean up after them. "Learn to code"? We have far too many coders already.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    10. Re:Most "Professional programmers" are useless. by gweihir · · Score: 1

      Matches my observations. 10-15% are smart, can think independently, can verify claims by others and can identify and use rules in whatever they do. They are not fooled by things "everybody knows" and see standard-approaches as first approximations that, of course, need to be verified to work. They do not trust anything blindly, but can identify whether something actually work well and build up a toolbox of such things.

      The problem is that in coding, you do not have a "(mass) production step", and that is the only thing that the 80% are really useful for. Hence, in coding, even the 80% can easily be non productive or cause negative productivity, because the 10-15% are investing more time in cleaning up after them than they would have needed to write something better themselves.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    11. Re: Most "Professional programmers" are useless. by luis_a_espinal · · Score: 2

      Who gives a fuck about lines? If someone gave me JavaScript, and someone gave me minified JavaScript, which one would I want to maintain?

      I donâ(TM)t care about your line savings, less isnâ(TM)t always better.

      Because the world of programming is not centered about JavasScript and reduction of lines is not the same as minification. If the first thing that came to your mind was about minified JavaScript when you saw this conversation, you are certainly not the type of programmer I would want to inherit code from.

      See, there's a lot of shit out there that is overtly redundant and unnecessarily complex. This is specially true when copy-n-paste code monkeys are left to their own devices for whom code formatting seems an unknown, never heard of thing.

      Then you end up with a mess of poorly formatted, hard to read code mutated by god-knows how many rounds of copy and paste with fundamental bugs spread all over the place (like one I was working recently where some pieces were using dates in the server time zone and other pieces in UTC because someone with multiple programming personality disorder copy and paste the worst snippets he could find on the internet and somehow decided to change time handling to UTC without remembering to go back and change all the shit he copied and pasted before.

      About 10K of lines reduced to about 1k "core" lines and a brand new 1k lines to encapsulate repeated logic that provides consistent behavior not only on datetime handling but also in other areas that were broken.

      And oh my God don't get me started on another piece of code (PL/SQL) to read table partitions where the "genius" would query database metadata in XML format and then pass it to a parser when all he needed was just query USER_TAB_PARTITIONS within a pipeline table function of just 2 dozen lines length.

      For these people it's like, the more unreadable, redundant lines, the better. It's almost as if they are building job security by obfuscation. But it's not even malice, it's pure incompetence, an inability to think in abstractions.

      Systems are inherently complex, there's no need to make them more complex just because assholes do not know how to put appropriate structure and abstractions in place.

    12. Re:Most "Professional programmers" are useless. by gweihir · · Score: 1

      Oops. Good thing I never did anything military. I am definitely in the "clever and lazy" class.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    13. Re:Most "Professional programmers" are useless. by gweihir · · Score: 2, Insightful

      I think that is a misinterpretation of the facts. Old(er) coders that are incompetent are just much more obvious and usually are also limited to technologies that have gotten old as well. Hence the 90% old coders that can actually not hack it and never really could get sacked at some time and cannot find a new job with their limited and outdated skills. The 10% that are good at it do not need to worry though. Who worries there is their employers when these people approach retirement age.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    14. Re:Most "Professional programmers" are useless. by apoc.famine · · Score: 1

      I was just thinking the same thing. One of my passions in life is coming up with clever ways to do less work while getting more accomplished.

      --
      Velociraptor = Distiraptor / Timeraptor
    15. Re:Most "Professional programmers" are useless. by geoskd · · Score: 1

      In basic concept I agree with your theory, it fits my own anecdotal experience well, but I find that your numbers are off. The top bracket is actually closer to 20%. The reason it seems so low is that a large portion of the highly competent people are running one programmer shows, so they have no co-workers to appreciate their knowledge and skill. The places they work do a very good job of keeping them well paid and happy (assuming they don't own the company outright), so they rarely if ever switch jobs.

      The middle bucket I find to be about 30%. You have to inspect their code carefully during reviews, and they do not carry the ego that would prevent them from taking quality criticism and making the minor changes they need to make to improve the quality of the code.

      The bottom bucket you listed is actually 2 buckets merged into 1: The first are the irredeemably bad. These are around 40% of the total programmers. These are the people who became programmers because it seemed like a good career move, but otherwise have no interest in programming. They are the ones who actually learned how to program by sitting through 4 years of university coursework, and have to be spoon fed everything (The worst are the ones in this category with loads of experience. They think their shit doesn't stink because they have been doing this for 25 years...)

      The last category are the ones who suck now, but will be good when they gain more experience. They are about 10% of the whole.

      --
      I wish I had a good sig, but all the good ones are copyrighted
    16. Re:Most "Professional programmers" are useless. by Cederic · · Score: 2

      It's an interesting thought. Only hire programmers that can tell you why the code they wrote three years ago sucks.

    17. Re:Most "Professional programmers" are useless. by Cederic · · Score: 1

      To be fair, the quote implies that is the rare combination that is ideal.

      I've always advocated laziness as a strong attribute in any good programmer.

    18. Re:Most "Professional programmers" are useless. by Cederic · · Score: 1

      I think you're the outlier though.

      Old progammers exist. Old COBOL programmers make a lot of money.

      However, programming is (and has for decades been) a young persons' game.

      Programming salaries don't scale (at an industry level) the same way that management ones do. Old programmers find it harder to get work. Experienced programmers are considered expensive, and the younger ones cheaper and deemed sufficiently capable.

      Biggest factor of all, young programmers join teams looking to expand. Old programmers are on teams that get outsourced.

      Individual experiences will differ, but at an industry level, you're the anomaly. Sorry.

    19. Re:Most "Professional programmers" are useless. by dgatwood · · Score: 1

      If you have a software team that contain 5 of these, you can easily beat a team of 100 average people, not only in cost but also in schedule, quality and features.

      But only if you keep them on task. Otherwise, you'll end up with the most perfectly refactored version of the previous release, with no new features.

      --

      Check out my sci-fi/humor trilogy at PatriotsBooks.

    20. Re:Most "Professional programmers" are useless. by Thorizdin · · Score: 1

      That's simply not true, I'm sorry that you seem to have had really shitty experiences but _good_ experienced programmers aren't really good candidates for outsourcing.

      I am, and have been, in management (Product Owner, CTO, etc) for nearly 20 years and I can't hire enough good developers because they simply aren't looking to move. Good organizations hold on them and treasure them.

    21. Re:Most "Professional programmers" are useless. by Tablizer · · Score: 1

      There are decent gigs maintaining legacy stacks, but often you have to move to a different city or even state. If you have family/spouse, that can be difficult.

      The market is good now, but I've seen too many bubbles to reject the idea that programming is a safe career.

    22. Re:Most "Professional programmers" are useless. by Cederic · · Score: 1

      If 'all IT development' is outsourced, everybody goes - young, old, experienced and total muppets.

      Old programmers are hard to lure away because they have a level of security - perceived or actual - and are far more averse to taking on a risky job move. Their focus is family, hobbies, non-vocational activities.

  6. Makes sense by Anonymous Coward · · Score: 1

    Saw this all the time, it's due to the ones who run the show. Their special class prefers to hire only from their group. Most don't even need qualifications. All they need was provided at birth.

    1. Re:Makes sense by Cederic · · Score: 1

      Their special class

      What, innovative motivated people? That's a class now?

      prefers to hire only from their group

      What, educated, diligent people? You think that's a bad thing?

      Most don't even need qualifications

      A great programmer is self-motivated and will often be programming long before they attain educational recognition. They may well reject programming related qualifications as being a waste of their time, as they're already far beyond the content of that course.

      All they need was provided at birth.

      It's hard to overcome genetic disadvantages in intelligence. It's also difficult when you're born into a family that doesn't support your intellectual and personal development. I'm not sure this is relevant to the topic at hand.

      Oh, wait? Were you implying there's a gender or racial bias in action? Fuck that, people are fucking begging for more 'diverse' hires that can still do the job.

  7. Nothing worse by bobstreo · · Score: 1

    than spending weeks interviewing "good" candidates for an opening, selecting a couple and hiring them as contractors, then finding out they are less than unqualified to do the job they were hired for.

    I've seen it a few times, Java "experts", Microsoft "experts" with years of experience on their resumes, but completely useless in coding, deployment or anything other than buying stuff from the break room vending machines.

    That being said, I've also seen projects costing hundreds of thousands of dollars, with years of delays from companies like Oracle, Sun, SAP, and many other "vendors"

    1. Re:Nothing worse by Anonymous Coward · · Score: 4, Insightful

      The moment you said "contractors", and you have lost any sane developer. Keep swimming, its not a fish.

    2. Re:Nothing worse by Anonymous Coward · · Score: 3, Insightful

      That being said, I've also seen projects costing hundreds of thousands of dollars, with years of delays from companies like Oracle, Sun, SAP, and many other "vendors"

      Software development is a hard thing to do well, despite the general thinking of technology becoming cheaper over time, and like health care the quality of the goods and services received can sometimes be difficult to ascertain. However, people who don't respect developers and the problems we solve are very often the same ones who continually frustrate themselves by trying to cheap out, hiring outsourced contractors, and then tearing their hair out when sub par results are delivered, if anything is even delivered at all. Conscientiousness, humility and respect get you much further in this business than hubris, arrogance and haste.

    3. Re:Nothing worse by Anonymous Coward · · Score: 2, Informative

      I agree with this. I consider myself to be a good programmer and I would never go into contractor game.

      I also wonder, how does it take you weeks to interview someone and you still can't figure out if the person can't code? I could probably see that in 15 minutes in a pair coding session.

      Also, Oracle, SAP, IBM... I would never buy from them, nor use their products. I have used plenty of IBM products and they suck big time. They make software development 100 times harder than it could be. Their technical support takes months to figure out the same answer we already had, and only fix they have ever provided was to disable a feature that had a bug in it. Don't get me wrong, if you buy from small companies there is no guarantee that you get anything better. There is one trick you can do to get good results, but I'm not revealing that, because I hate it.

      Other than that, your best option is to hire your own developers. Do initial screening by asking them to write a simple application, something that is trivial for a good programmer, but still requires you to understand loops and conditions. Something that takes about 10 minutes max for a good programmer to do. Just to filter out those who can't code at all.

    4. Re:Nothing worse by pauljlucas · · Score: 1

      As part of your interview process, don't you have candidates code a solution to a problem on a whiteboard? I've interviewed lots of "good" candidates (on paper) too, but they crashed and burned when challenged with a coding exercise. As a result, we didn't make them job offers.

      --
      If you reply, do so only to what I explicitly wrote. If I didn't write it, don't assume or infer it.
    5. Re:Nothing worse by Lanthanide · · Score: 1

      It's weeks to interview multiple different candidates before deciding on 1 or 2 of them. Not weeks per person.

    6. Re:Nothing worse by Cederic · · Score: 1

      don't you have candidates code a solution to a problem on a whiteboard?

      Hopefully not, because he's not a total cunt that hasn't got a clue about what makes a good software engineer.

      Ask me to program on a whiteboard and watch me walk out of your interview and putting in an expense claim for wasting my fucking time.

      I can program. I can do design on a whiteboard. I don't do fucking programming on a fucking whiteboard, for you or any other cunt.

    7. Re:Nothing worse by pauljlucas · · Score: 1

      We donâ(TM)t hire assholes either, so youâ(TM)d fail on both counts. Youâ(TM)d better hang on to the job you somehow were lucky enough to get because youâ(TM)d never do well on any other interview anywhere in modern times. (Judging by your number, youâ(TM)re probably ancient and have no clue what itâ(TM)s like in the current job market.)

      --
      If you reply, do so only to what I explicitly wrote. If I didn't write it, don't assume or infer it.
    8. Re:Nothing worse by Cederic · · Score: 1

      The current job market? It's pretty healthy. Probably close to a 7-8 year high.

      Plenty of opportunities for people that know what they're doing, can articulate it in interviews, don't put up with utter bollocks from complete cunts.

      Don't worry, I don't _want_ a job with you. I want to work with intelligent capable people, not total fuckwits.

  8. How to valuate quality by firbolgar · · Score: 1

    TL;DR: caveat emptor applies to hiring. At the heart of the issue is an overall inability for the job market to price the economic output of "developers" of different skill levels, not to mention the delta between economic value and market value based on the developers skill. A lot of developers' economic value is actually lower than market value (they get paid more than their worth) while for some, the opposite is true. The inability of the labor market to consistently align economic and market value, and the variance in that gap, is what's really causing the angst. What we need to do is devise a better way to demonstrate economic value and work to tie market value to it.

  9. I do the opposite by VeryFluffyBunny · · Score: 1

    I'm not a great coder but good enough to get done what clients want done. If I'm not sure or don't think I can do it, I tell them. I think they appreciate the honesty. I don't work in a tech-hub, startups or anything like that so I'm not under the same expectations and pressures that others may be.

    --
    Debate is a form of harassment. Do not question my truth.
  10. Bigger building blocks by Tony+Isaac · · Score: 1

    OK, so yes, I know plenty of programmers who do fake it. But stitching together components isn't "fake" programming.

    Back in the day, we had to write our own code to loop through an XML file, looking for nuggets. Now, we just use an XML serializer. Back then, we had to write our own routines to send TCP/IP messages back and forth. Now we just use a library.

    I love it! I hated having to make my own bricks before I could build a house. Now, I can get down to the business of writing the functionality I want, instead of starting from scratch.

    Just because you use components, doesn't mean you're not really programming. Trust me, if you're faking it, you won't succeed with components either.

    1. Re:Bigger building blocks by basic.gongfu · · Score: 1

      The issue isn't using components, the issue is not having the shadow of a clue when it comes to basic fundamentals such as parsing and networking. If all you know how to do is piling ready-made blocks on top of each other, you're not worth the chair you're sitting on outside of framework la la land. We used to call these kinds of uninformed souls Code Monkeys.

    2. Re:Bigger building blocks by Anonymous Coward · · Score: 2, Insightful

      But, I suspect you could write the component if you had to. That makes you a very different user of that component than someone who just knows it as a magic black box.

      Because of this, you understand the component better and have real knowledge of its strengths and limitations. People blindly using components with only a cursory idea of their internal operation often cause major performance problems. They rarely recognize when it is time to write their own to overcome a limitation (or even that it is possible), often don't know just how easy that is, and frequently pull in massive modules for the sake of minor functions.

      My education including designing a microprocessor from logic gates, building it in a lab, programming in a diverse array of languages from assembly up, writing an assembler, and writing a compiler.

      In the work world, I've written an OS, drivers, a C standard library, a compiler, several interpreters, database engines, etc. When I use these things, I understand them at a level that makes my code better. If you don't think you could write something like that, you are probably just a script kiddie and have no business architecting major applications.

    3. Re:Bigger building blocks by Tony+Isaac · · Score: 5, Interesting

      If I'm a plumber, and I don't know anything about the engineering behind the construction of PVC pipe, I can still be a good plumber. If I'm an electrician, and I don't understand the role of a blast furnace in the making of the metal components, I can still be a good electrician.

      The analogy fits. If I'm a programmer, and I don't know how to make an LZW compression library, I can still be a good programmer. It's a matter of layers. These days, we specialize. You've got your low-level programmers that make the components, the high level programmers that put together the components, the graphics guys who do HTML/CSS, and the SQL programmers that just know about databases. Every person has their specialty. It's no longer necessary to be a low-level programmer, or jack-of-all-trades, to be "good."

      If I don't know the layout of the IP header, I can still write quality networking software, and if I know XSLT, I can still do cool stuff with XML, even if I don't know how to write a good parser.

    4. Re: Bigger building blocks by Anonymous Coward · · Score: 1

      It is basically required to be fullstack now. The ease of using other libraries means you have more time to own everything about the process.

    5. Re:Bigger building blocks by frank_adrian314159 · · Score: 2

      I was with you until you said " I can still do cool stuff with XML".

      --
      That is all.
    6. Re:Bigger building blocks by Tony+Isaac · · Score: 1

      LOL yeah I know it's all JSON now. I've been around long enough to see these fads come and go. Frankly, I don't see a whole lot of advantage of JSON over XML. It's not even that much more compact, about 10% or so. But the point is that the author laments the "bad old days" when you had to create all your own building blocks, and you didn't have a team of specialists. I for one don't want to go back to those days!

    7. Re:Bigger building blocks by Tony+Isaac · · Score: 1

      You're right on all counts. A person who knows how the innards work, is better than someone who doesn't, all else being equal. Still, today's world is so specialized that no one can possibly learn it all. I've never built a processor, as you have, but I still have been able to build a DNA matching algorithm for a major DNA lab.

      I would argue that anyone who can skillfully use off-the-shelf components can also learn how to build components, if they are required to.

    8. Re: Bigger building blocks by Anonymous Coward · · Score: 1

      Your analogy is wrong. If you are a plumber and you donâ(TM)t understand anything about waterflows, friction loss, and gravity height effects, then just knowing how to put PVC pipe together makes you a crappy plumber because when you run into a problem with GPM flows, you need to figure out the problem and alter your plumbing to fix it.

      Same for electricity. If you canâ(TM)t under stand current, voltage, grounding, etc, but you understand wiring, you are a crappy electrician. Itâ(TM)s because if you find poor current/voltage, you need to diagnose it and know how to fix it.

      The same for these computer components. Sure they work for the most part. But if you donâ(TM)t understand networking/how TCP works, then you may not be able to diagnose and fix poor networking performance.

      So I agree to disagree with your analogy. You need to understand the basic concepts in order to get around some of the design flaws, implementation flaws, and make the solution work. I canâ(TM)t tell you how many times I have found a bug in a component and had to patch it (and submit it to the authoring project) because I found and issue that made performance not work so well.

    9. Re:Bigger building blocks by careysub · · Score: 2

      The main advantage is that JSON is that it is consistent. XML has attributes, embedded optional stuff within tags. That was derived from the original SGML ancestor where is was thought to be a convenience for the human authors who were supposed to be making the mark-up manually. Programmatically it is a PITA.

      --
      Starships were meant to fly, Hands up and touch the sky - Nicky Minaj
    10. Re:Bigger building blocks by Cederic · · Score: 2

      I got shit for decrying XML back when it was the trendy thing.

      I've had people apologise to me months later because they've realised I was right, even though at the time they did their best to fuck over my career because XML was the new big thing and I wasn't fully on board.

      XML has its strengths and its place, but fuck me it taught me how little some people really fucking understand shit.

    11. Re: Bigger building blocks by dgatwood · · Score: 1

      Your analogy is wrong. If you are a plumber and you donâ(TM)t understand anything about waterflows, friction loss, and gravity height effects, then just knowing how to put PVC pipe together makes you a crappy plumber because when you run into a problem with GPM flows, you need to figure out the problem and alter your plumbing to fix it.

      That's the engineer's problem. For anything significantly more complex than a small home, by the time the plumber arrives, you should have engineering diagrams telling them what size pipe to use.

      A better analogy would be a plumber who doesn't understand how to cut and glue PVC, and instead tries to plumb an entire building using only screw-together pipes and hoses. They can put in your bathtub, but you'll have to move it a foot to the right, because they can't get the screw-together pipes in three-foot lengths, only four. Or maybe they could just leave a hose coiled up in the wall to make up the difference.

      --

      Check out my sci-fi/humor trilogy at PatriotsBooks.

    12. Re:Bigger building blocks by Tony+Isaac · · Score: 1

      Well, I can see you had some real struggles with XML! I don't understand what made it so evil, in your eyes, but that's probably because I don't understand much French.

    13. Re:Bigger building blocks by swillden · · Score: 1

      If I'm a programmer, and I don't know how to make an LZW compression library, I can still be a good programmer.

      If you're a programmer and you're not capable of understanding LZW compression if/when you need to, and writing a good library for it, given a few weeks, you're not a good programmer.

      Of course, if you actually do such a thing on your employer's time, you're probably also not a programmer many people want to employ, unless there are really good reasons that LZW compression is needed and no available library will do the job.

      --
      Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
    14. Re:Bigger building blocks by Tony+Isaac · · Score: 1

      We're not really disagreeing. I said "...and I don't know how to...", you said "...you're not capable of..."

      I didn't say anything about capabilities. My point was about current knowledge. I know the basic principles of LZW, and I also know that it's wise for me to use a library for that purpose, when my goal is to write end-user software. If you or I roll our own, the result will be crap. Now, if you or I work as part of a team that creates a Zip library, that's a different story, then it makes sense for us to educate ourselves in the intricate details of LZW.

    15. Re:Bigger building blocks by swillden · · Score: 1

      We're not really disagreeing. I said "...and I don't know how to...", you said "...you're not capable of..."

      True. I was drawing that distinction. If all you're capable of is assembling pre-assembled blocks, then you're not much of a programmer. I draw that distinction because there are lots of so-called programmers out there that aren't capable of much more, and lament that they have a hard time finding a job.

      --
      Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
    16. Re:Bigger building blocks by strikethree · · Score: 1

      If I don't know the layout of the IP header, I can still write quality networking software, and if I know XSLT, I can still do cool stuff with XML, even if I don't know how to write a good parser.

      In theory, theory and reality match. In reality, they don't.

      What you are saying is good, in theory. What happens when the layer you are relying on is not working as advertised? Nothing happens. I do mean nothing. They can't understand what is going on and work stops. Or it acts buggy but they did everything they could to make it right, so it gets shipped anyways.

      Yes, there are not enough people who understand programming and the problem space from top to bottom to write all of the software we need, so yes, your theory will be used... but, just look around you.

      --
      "Someone needs to talk to the tree of liberty about its ghoulish drinking problem." by ohnocitizen
    17. Re:Bigger building blocks by lgw · · Score: 1

      XML has its strengths and its place, but fuck me it taught me how little some people really fucking understand shit.

      There was a time when I was objecting to using XML in kernel-mode code. Management was having none of that - XML was fashionable, end of argument. Sadly I ended up writing a kernel-mode XML parser.

      --
      Socialism: a lie told by totalitarians and believed by fools.
    18. Re:Bigger building blocks by Cederic · · Score: 1

      Yeah, ok. I've been one-upped there.

      I was only asked to implement an IP based XML message client inside a database.

    19. Re:Bigger building blocks by Tony+Isaac · · Score: 1

      In my experience, when you are using quality components, there is rarely a situation where the component has such an unavoidable flaw. At least, that's true in the Windows world. In the Linux world, I've encountered a lot more "half-done" components, where you have to do serious work to get it to perform as advertised. There seems to be something about component vendors wanting payment, that helps them focus on getting bugs out.

  11. Silicon Valley is Only Part of the Tech Business by Anonymous Coward · · Score: 2, Informative

    And a rather small part at that, albeit a very visible and vocal one full of the proverbial prima donas. However, much of the rest of the tech business, or at least the people working in it, are not like that. It's small groups of developers working in other industries that would not typically be considered technology. There are software developers working for insurance companies, banks, hedge funds, oil and gas exploration or extraction firms, national defense and many hundreds and thousands of other small niche companies that most consumers have never heard of. To view Silicon Valley as the place where everybody in tech wants to be is to observe the tip of the iceberg while ignoring the enormous mass that exists beneath the surface. More and more software development and writing code are becoming an everyday part of every business and just as the large home building corporations have not put the small craft builders out of business so too will there always be talented individuals dedicated to the craft and laboring behind the scenes to write the code that keeps everything running smoothly. There will be new and powerful tools, like AI as a service, that will take over and automate some tasks but like a conductor there will always be a developer, baton in hand, orchestrating the symphony.

  12. Qualification: patience to fiddle by Tablizer · · Score: 1

    Fiddling with JavaScript libraries to get a fancy dancy interface that makes PHB's happy is a sought-after skill, for good or bad. Now that we rely more on half-ass libraries, much of "programming" is fiddling with dark-grey boxes until they work good enough.

    I'm not putting a value judgement on such work or library-centric architectures here, only making an observation about what's valued by those who hand out paychecks and raises.

    1. Re:Qualification: patience to fiddle by phantomfive · · Score: 1

      Fiddling with JavaScript libraries to get a fancy dancy interface that makes PHB's happy is a sought-after skill, for good or bad. Now that we rely more on half-ass libraries, much of "programming" is fiddling with dark-grey boxes until they work good enough.

      This drives me crazy, but I'm consoled somewhat by the fact that it will all be thrown out in five years anyway.

      --
      "First they came for the slanderers and i said nothing."
  13. bonfire of fakers by phantomfive · · Score: 1

    This is the reason I wish programming didn't pay so much....the field is better when it's mostly populated by people who enjoy programming.

    --
    "First they came for the slanderers and i said nothing."
    1. Re:bonfire of fakers by Anonymous Coward · · Score: 1

      But then there would be even less gender diversity (ducks and runs).
      Posting anonymously for the obvious reason, but hey, tell me I'm wrong.

  14. Seems about right. Constantly learning, studying by raymorris · · Score: 5, Insightful

    That seems about right to me.

    I have a lot of weaknesses. My people skills suck, I'm scrawny, I'm arrogant. I'm also generally known as a really good programmer and people ask me how/why I'm so much better at my job than everyone else in the room. (There are a lot of things I'm not good at, but I'm good at my job, so say everyone I've worked with.)

    I think one major difference is that I'm always studying, intentionally working to improve, every day. I've been doing that for twenty years.

    I've worked with people who have "20 years of experience"; they've done the same job, in the same way, for 20 years. Their first month on the job they read the first half of "Databases for Dummies" and that's what they've been doing for 20 years. They never read the second half, and use Oracle database 18.0 exactly the same way they used Oracle Database 2.0 - and it was wrong 20 years ago too. So it's not just experience, it's 20 years of learning, getting better, every day. That's 7,305 days of improvement.

  15. I'm calling b.s. on this entire piece. by Anonymous Coward · · Score: 1

    I'm sorry. But this smells of complete bullshit. You can't bluff your way through coding any more than you can bluff your way towards being a spinal surgeon. You either have the skills or you don't and everybody who matters knows what you bring and what you don't bring.

    1. Re:I'm calling b.s. on this entire piece. by tomhath · · Score: 1

      You can't bluff you way through writing software, but many, many people have bluffed their way into a job and then tried to learn it from the people who are already there. In a marginally functional organization those incompetents are let go pretty quickly, but sometimes they stick around for months or years.

      Apparently the author of this book is one of those, probably hired and fired several times before deciding to go back to his liberal arts roots and write a book.

    2. Re:I'm calling b.s. on this entire piece. by DaMattster · · Score: 1

      There are some mechanics that bluff their way through an automotive repair. It's the same damn thing

    3. Re:I'm calling b.s. on this entire piece. by gweihir · · Score: 1

      I think you can and this is by far not the first piece describing that. Here is a classic: https://blog.codinghorror.com/...
      Yet these people somehow manage to actually have "experience" because they worked in a role they are completely unqualified to fill.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
  16. The people who are smarter won't by raymorris · · Score: 5, Informative

    > The people can do both are smart enough to build their own company and compete with you.

    Been there, done that. Learned a few lessons. Nowadays I work 9:30-4:30 for a very good, consistent paycheck and let some other "smart person" put in 75 hours a week dealing with hiring, managing people, corporate strategy, staying up on the competition, figuring out tax changes each year and getting taxes filed six times each year, the various state and local requirements, legal changes, contract hassles, etc, while hoping the company makes money this month so they can take a paycheck and lay their rent.

    I learned that I'm good at creating software systems and I enjoy it. I don't enjoy all-nighters, partners being dickheads trying to pull out of a contract, or any of a thousand other things related to running a start-up business. I really enjoy a consistent, six-figure compensation package too.

    1. Re:The people who are smarter won't by brian.stinar · · Score: 1

      * getting taxes filled eighteen times a year.

      I pay monthly gross receipts tax (12), quarterly withholdings (4) and a corporate (1) and individual (1) returns. The gross receipts can vary based on the state, so I can see how six times a year would be the minimum.

    2. Re: The people who are smarter won't by Anonymous Coward · · Score: 1, Interesting

      We sound very alike. Iâ(TM)m a co-founder of a reasonably successful business now employing ~100 people. I love coding, solving new problems, but hate working âoeforâ a company. The first couple of years was hell, struggling financially, learning what we are good at, finding clients etc.

      Nowadays my role is officially âoeadvisorâ, I âoereportâ to the CEO (also co-founder) and I basically work 9-4 doing whatever I want that I feel will make the company more valuable.

      I get a more than decent salary (but of course CEO has more), and basically a reasonable chance of retiring early if the company keeps growing and is sold.

      Living the startup life without all the running-a-business-details. Also hate having my name in the open, love being the anonymous guy in the back.

    3. Re:The people who are smarter won't by serviscope_minor · · Score: 1

      Nowadays I work 9:30-4:30 for a very good, consistent paycheck and let some other "smart person" put in 75 hours a week dealing with hiring

      There's nothing wrong with not wnting to run your own business, it's not for most people, and even if it was, the numbers don't add up. But putting the scare qoutes in like that makes it sound like you have huge chip on your shoulder. Those things re just as esential to the business as your work nd without them you wouldn't have the steady 9:30-4:30 with good paycheck.

      --
      SJW n. One who posts facts.
    4. Re: The people who are smarter won't by Cederic · · Score: 1

      Fuck no. Cost of full automation: $4m
      Cost of manual entry: $0
      Opportunity cost of manual entry: $800/year

      At worse, pay for an accountant, if you can get one that cheaply. Bear in mind talking to them incurs most of that opportunity cost anyway.

    5. Re: The people who are smarter won't by Cederic · · Score: 1

      Apply for jobs you think you'll enjoy.
      At the interview make sure you interview them as much as they interview you.
      When you take the role, manage your manager.
      Take ownership within the job, for your own tasks, and for the success of your team, and for the success of your manager. That gives you free reign to beyond that do what the fuck you want.

      If it's not meeting your expectations, find something else.

    6. Re: The people who are smarter won't by brian.stinar · · Score: 1

      * * My accountant files taxes for me 18 times per year.

  17. So what? by neanderslob · · Score: 1

    The legend of the code ninja and rockstar programmer is ruining this field. There is still a role for the genuine master craftsman but most roles can be satisfied by less than this. Stop believing the mythology; much of engineering has always been cut and paste. Silicon Valley is no different.

  18. Re: ... A job fair can easily test this competency by Anonymous Coward · · Score: 1

    Lame monkey tests select for lame monkeys.

    A good programmer first and foremost has a clean mind. Experience suggests puzzle geeks, who excel at contrived tests, are usually sloppy thinkers.

  19. Re:Seems about right. Constantly learning, studyin by gbjbaanb · · Score: 1

    I think I can guarantee that they are a lot better at their jobs than you think, and that you are a lot worse at your job than you think too.

  20. Re: ... A job fair can easily test this competency by wierd_w · · Score: 4, Insightful

    Again, the quality applicant and the code monkey both have something the fakers do not-- Actual comprehension of what a program is, and how to create one.

    As Bill points out, this is not the final exam. This is the "Oh, I see you do actually know how to program-- show me more" portion of the process. This is the part that HR drones are not capable of performing, due to Dunning-Krueger. Those that are actually, REALLY competent will do more than just satisfy the requirements of the challenge, they will provide actually working solutions to the challenge that properly validate their input, and return proper error states if the input is invalid, etc-- You can learn a LOT about a potential hire by observing their work. *THAT* is what this is really about. The triviality of the problem is a necessity, because you ***DON'T*** try to get free solutions out of people.

    I realize that may be difficult for you to comprehend, but you *DON'T* do that. The job fair is to let people know that you have a position available, and try to curry interest in people to apply. A successful pre-screening is confidence building, and helps the potential hire to feel that your company is actually interested in actually hiring somebody, and not just fucking off in the booth, to cover for "failing to find somebody" and then "Getting yet another H1B". It gives them a chance to show you what they can do. That is what it is for, and what it does. It also excludes the fakers that this article is about-- The ones that can talk a good talk, but could not program a simple boolean check condition if their life depended on it.

    If it were not for the time constraints of a job fair (usually only 2 days, and in that time you need to try and pre-screen as many as possible), I would suggest a tiered challenge, with progressively harder challenges, where you hand out resumes to the ones that make it to the top 3 brackets, but that is not the way the world works.

  21. Re: ... A job fair can easily test this competency by ShanghaiBill · · Score: 2

    Someone could Google the problem with the phone then step up and solve the challenge.

    If given a spec, someone can consistently cobble together working code by Googling, then I would love to hire them. That is the most productive way to get things done.

    There is nothing wrong with using external references. When I am coding, I have three windows open: an editor, a testing window, and a browser with a Stackoverflow tab open.

  22. im sick of reinventors and new frameworks by cheekyboy · · Score: 3, Insightful

    Stick to the one thing for 10-15years

    Often all this new shit doesnt do jack different to the old shit, its not faster, its not better.

    Every dick wants to be famous so make another damn library/tool with his own fancy name and feature, instead of enhancing an existing product.

    --
    Liberty freedom are no1, not dicks in suits.
    1. Re:im sick of reinventors and new frameworks by gbjbaanb · · Score: 1

      amen to that.

      Or kids who can't hack the main stuff, suddenly discover the cool new, and then they can pretend they're "learning" it, and when the going gets tough (as it always does) they can declare the tech to be pants and move to another.

      hence we had so many people on the bandwagon for functional programming, then dumped it for ruby on rails, then dumped that for Node.js, not sure what they're on at currently, probably back to asp.net.

  23. Re:Seems about right. Constantly learning, studyin by m00sh · · Score: 1

    That seems about right to me.

    I have a lot of weaknesses. My people skills suck, I'm scrawny, I'm arrogant. I'm also generally known as a really good programmer and people ask me how/why I'm so much better at my job than everyone else in the room. (There are a lot of things I'm not good at, but I'm good at my job, so say everyone I've worked with.)

    I think one major difference is that I'm always studying, intentionally working to improve, every day. I've been doing that for twenty years.

    I've worked with people who have "20 years of experience"; they've done the same job, in the same way, for 20 years. Their first month on the job they read the first half of "Databases for Dummies" and that's what they've been doing for 20 years. They never read the second half, and use Oracle database 18.0 exactly the same way they used Oracle Database 2.0 - and it was wrong 20 years ago too. So it's not just experience, it's 20 years of learning, getting better, every day. That's 7,305 days of improvement.

    If you take this attitude towards other people, people will not ask your for help. At the same time, you'll be also be not able to ask for their help.

    You're not interviewing your peers. They are already in your team. You should be working together.

    I've seen superstar programmers suck the life out of project by over-complicating things and not working together with others.

  24. Learn to code courses by Njovich · · Score: 4, Insightful

    They knew that well-paid programming jobs would also soon turn to smoke and ash, as the proliferation of learn-to-code courses around the world lowered the market value of their skills, and as advances in artificial intelligence allowed for computers to take over more of the mundane work of producing software.

    Kind of hard to take this article serious after saying gibberish like this. I would say most good programmers know that neither learn-to-code courses nor AI are going to make a dent in their income any time soon.

    1. Re:Learn to code courses by s0nspark · · Score: 1

      They knew that well-paid programming jobs would also soon turn to smoke and ash, as the proliferation of learn-to-code courses around the world lowered the market value of their skills, and as advances in artificial intelligence allowed for computers to take over more of the mundane work of producing software.

      Kind of hard to take this article serious after saying gibberish like this. I would say most good programmers know that neither learn-to-code courses nor AI are going to make a dent in their income any time soon.

      Neither dent in income OR quality of code produced... ;-)

    2. Re:Learn to code courses by david_thornley · · Score: 1

      AI and learn-to-code courses do have an effect on the profession. As tools get better, and more people can do the grunt work, the jobs for good people become more interesting. The easier it is to program, the easier it is to do the hard stuff, and somebody's going to pay good money for the hard stuff that newly became feasible.

      I have no idea what the total demand for good developers is, just that it's greater than the supply of good developers.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
  25. The concern I have... by s0nspark · · Score: 1

    The concern I have is that there is a real gap between what it takes to develop good software in the trenches and what management understands of those requirements. The bigger that gap, the more bluffing that can occur.

  26. Ummm. by thesupraman · · Score: 1

    1, 'Back in the Day' there was no XML, XMl was not very long ago.
    2, its a parser, a serialiser is pretty much the opposite (unless this weeks fashion has redefined that.. anything is possible).
    3, 'Back then' we didnt have TCP stacks...

    But, actually I agree with you. I can only assume the author thinks there are lots of fake plumbers because they dont cast their own toilet bowels from raw clay, and use pre-build fittings and pipes! That car mechanics start from raw steel scrap and a file.. And that you need REALLY good eyes, and a lot of sand to fix things with microchips in them..

    There is however a middle ground. A plumber who cannot open a tap to change a washer is a shit plumber, a mechanic who replaced an engine because the timing chain rattles is of no use, and Apple doesnt know how to fix phones, because replacing them is not fixing (ok, low blow, but hey..).

    1. Re:Ummm. by Tony+Isaac · · Score: 1

      For the record, XML was invented in 1997, you know, in the last century! https://en.wikipedia.org/wiki/...
      And we had a WinSock library in 1992. https://en.wikipedia.org/wiki/...

      Yes, I agree with you on the "middle ground." My reaction was to the author's point that "not knowing how to build the components" was the same as being a "fake programmer."

  27. Comment removed by account_deleted · · Score: 2

    Comment removed based on user account deletion

  28. Re: ... A job fair can easily test this competenc by Anonymous Coward · · Score: 1

    This in my opinion is really a waste of time. Challenges like this have to be so simple they can be done walking up to a booth are not likely to filter the "all talks" any better than a few interview questions could (imperson so the candidate can't just google it).

    Tougher more involved stuff isn't good either it gives a huge advantage to the full time job hunter, the guy or gal that already has a 9-5 and a family that wants to seem them has not got time for games. We have been struggling with hiring where I work ( I do a lot of the interviews ) and these are the conclusions we have reached

  29. Me? No by AndyKron · · Score: 1

    As a non-programmer Arduino and libraries are my friends

  30. in the silly cone valley by Escogido · · Score: 4, Interesting

    there is a huge shortage of decent programmers. I have personally witnessed more than one phone "interview" that went like "have you done this? what about this? do you know what this is? um, can you start Monday?" (120K-ish salary range)

    partly because there are way more people who got their stupid ideas funded than good coders willing to stain their resume with that. partly because if you are funded, and cannot do all the required coding solo, here's your conundrum:

    - top level hackers can afford to be really picky, so on one hand it's hard to get them interested, and if you could get that, they often want some ownership of the project. the plus side is that they are happy to work for lots of equity if they have faith in the idea, but that can be a huge "if".

    - "good but not exceptional" senior engineers aren't usually going to be super happy, as they often have spouses and children and mortgages, so they'd favor job security over exciting ideas and startup lottery.

    - that leaves you with fresh-out-of-college folks, which are really really a mixed bunch. some are actually already senior level of understanding without the experience, some are absolutely useless, with varying degrees in between, and there's no easy way to tell which is which early.

    so the not-so-scrupulous folks realized what's going on, and launched multiple coding boot camps programmes, to essentially trick both the students into believing they can become a coder in a month or two, and also the prospective employers that said students are useful. so far it's been working, to a degree, in part because in such companies coding skill evaluation process is broken. but one can only hide their lack of value add for so long, even if they do manage to bluff their way into a job.

    1. Re:in the silly cone valley by Escogido · · Score: 1

      Then why do older programmers have issues getting jobs?

      various reasons. one is difference in culture, another is inflexibility that sometimes comes with age, for some is lack of love for various PHBs.. you can google around, https://www.usatoday.com/story... etc. I personally witnessed a few very talented engineers walk out of a decent job because the way they were "managed".

      But they apparently have issues getting any position.

      "good but not exceptional" category is basically shorthand for "30-ish white guy". these are fine, problems start at 40+

      In the UK, a fairly senior level position would be around $60 to $70k, although healthcare costs might make that worth $70 to $80k. So $120k seems pretty damn good.

      at forex rates, sure, but at purchasing power parity, especially if you consider rent and real estate prices, chances are the picture is different.

      for a reference, when you calculate how much funding a startup needs, the quick estimate is headcount x number of months x 10K. that covers not just the salary but everything the employer pays for - medical insurance plans, payroll taxes where appropriate etc.. should give you a good idea of what kind of comp you should be expecting.

    2. Re:in the silly cone valley by Escogido · · Score: 1

      google "silicon valley age bias", there are plenty of good articles describing the situation and giving accurate explanations.

      my short version is that a company needs to play a special game to keep the younglings happy, and part of the game is so that the company can only employ people who buy into that game. since the older folks wouldn't, a mix is not really an option, and out of the two possibilities, guess which one is the easiest.

      (my experience with the Valley is from when I worked there between 2009 and 2013, and some things may have changed since then)

    3. Re:in the silly cone valley by david_thornley · · Score: 1

      In my fifties, what I really needed to do to get job offers was to dye my hair. After that, no problem.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
  31. No time to learn by TJHook3r · · Score: 1

    IT seems almost unique in that even entry-level jobs require further study (in the employees' own time) just to keep up. Maybe I'm in the wrong place but when I start a project I'm expected to hit the ground running, often with a new technology where no time has been allocated for learning. This is why skills are learnt from Stackoverflow rather than formally taught - there is just no time! Technical debt is usually for someone else to worry about as well :(

  32. Duh! by quonset · · Score: 3, Insightful

    All one had to do was look at the lousy state of software and web sites today to see this is true. It's quite obvious little to no thought is given on how to make something work such that one doesn't have to jump through hoops.

    I have many times said the most perfect word processing program ever developed was WordPefect 5.1 for DOS. Ones productivity was astonishing. It just worked.

    Now we have the bloated behemoth Word which does its utmost to get in the way of you doing your work. The only way to get it to function is to turn large portions of its "features" off, and even then it still insists on doing something other than what you told it to do.

    Then we have the abomination of Windows 10, which is nothing but Clippy on 10X steroids. It is patently obvious the people who program this steaming pile have never heard of simplicity. Who in their right mind would think having to "search" for something is more efficient than going directly to it? I would ask the question if these people wander around stores "searching" for what they're looking for, but then I realize that's how their entire life is run. They search for everything online rather than going directly to the source. It's no wonder they complain about not having time to things. They're always searching.

    Web sites are another area where these people have no clue what they're doing. Anything that might be useful is hidden behind dropdown menus, flyouts, popup bubbles and intriately designed mazes of clicks needed to get to where you want to go. When someone clicks on a line of products, they shouldn't be harassed about what part of the product line they want to look at. Give them the information and let the user go where they want.

    This rant could go on, but this article explains clearly why we have regressed when it comes to software and web design. Instead of making things simple and easy to use, using the one or two brain cells they have, programmers and web designers let the software do what it wants without considering, should it be done like this?

  33. Tech industry churn by swb · · Score: 2

    The tech industry has a ton of churn -- there's some technological advancement, but there's an awful lot of new products turned out simply to keep customers buying new licenses and paying for upgrades.

    This relentless and mostly phony newness means a lot of people have little experience with current products. People fake because they have no choice. The good ones understand the general technologies and problems they're meant to solve and can generally get up to speed quickly, while the bad ones are good at faking it but don't really know what they're doing. Telling the difference from the outside is impossible.

    Sales people make it worse, promoting people as "experts" in specific products or implementations because the people have experience with a related product and "they're all the same". This burns out the people with good adaption skills.

  34. filter the lame code monkeys by luis_a_espinal · · Score: 3, Informative

    Lame monkey tests select for lame monkeys.

    A good programmer first and foremost has a clean mind. Experience suggests puzzle geeks, who excel at contrived tests, are usually sloppy thinkers.

    No. Good programmers can trivially knock out any of these so-called lame monkey tests. It's lame code monkeys who can't do it. And I've seen their work. Many night shifts and weekends I've burned trying to fix their shit because they couldn't actually do any of the things behind what you call "lame monkey tests", like:

    1. pulling expensive invariant calculations out of loops
    2. using for loops to scan a fucking table to pull rows or calculate an aggregate when they could let the database do what it does best with a simple SQL statement
    3. systems crashing under actual load because their shitty code was never stress tested (but it worked on my dev box!.)
    4. again with databases, having to redo their schemas because they were fattened up so much with columns like VALUE1, VALUE2, ... VALUE20 (normalize you assholes!)
    5. chatting remote APIs - because these code monkeys cannot think about the need for bulk operations in increasingly distributed systems.
    6. storing dates in unsortable strings because the idiots do not know most modern programming languages have a date data type.

    Oh and the most important, off-by-one looping errors. I see this all the time, the type of thing a good programmer can spot on quickly because he or she can do the so-called "lame monkey tests" that involve arrays and sorting.

    I've seen the type: "I don't need to do this shit because I have business knowledge and I code for business and IT not google", and then they go and code and fuck it up... and then the rest of us have to go clean up their shit at 1AM or on weekends.

    If you work as an hourly paid contractor cleaning that crap, it can be quite lucrative. But sooner or later it truly sucks the energy out of your soul.

    So yeah, we need more lame monkey tests ... to filter the lame code monkeys.

    1. Re:filter the lame code monkeys by pete6677 · · Score: 2

      Throughout my career I've had to deal with most if not all of the issues you cite above. However in most cases I've found these problems were introduced not by code monkeys, but by hotshot wannabe leet-coders who could easily pass any interviewing programming test and can quickly rattle off complex algorithms. But they don't think beyond getting a cool quick solution that "works on my machine" at which point they move onto the next project.

      Test code? We don't need to test, because we're so good at what we do. Performance testing, not my department. Slow database access, blame the DBA.

      I'd rather deal with a system built by code monkeys who know they suck and thus do a lot of testing vs a system built by leetcoders that falls over and dies at the slightest abnormality.

    2. Re:filter the lame code monkeys by luis_a_espinal · · Score: 1

      Throughout my career I've had to deal with most if not all of the issues you cite above. However in most cases I've found these problems were introduced not by code monkeys, but by hotshot wannabe leet-coders who could easily pass any interviewing programming test and can quickly rattle off complex algorithms. But they don't think beyond getting a cool quick solution that "works on my machine" at which point they move onto the next project.

      Test code? We don't need to test, because we're so good at what we do. Performance testing, not my department. Slow database access, blame the DBA.

      I'd rather deal with a system built by code monkeys who know they suck and thus do a lot of testing vs a system built by leetcoders that falls over and dies at the slightest abnormality.

      The code monkeys I've ran into do not do testing, and those leet coders you refer to, they are code monkeys to me, just they happen to be afflicted by the Dunning Kruger effect. I think we are referring to the same cohort, just using albeit different labels.

  35. Re: ... A job fair can easily test this competenc by luis_a_espinal · · Score: 1

    This in my opinion is really a waste of time. Challenges like this have to be so simple they can be done walking up to a booth are not likely to filter the "all talks" any better than a few interview questions could (imperson so the candidate can't just google it).

    Tougher more involved stuff isn't good either it gives a huge advantage to the full time job hunter, the guy or gal that already has a 9-5 and a family that wants to seem them has not got time for games. We have been struggling with hiring where I work ( I do a lot of the interviews ) and these are the conclusions we have reached

    You would be surprised at the number of people with impecable-looking resumes failing at something as simple as the FizzBuzz test

  36. Interesting by DaMattster · · Score: 2

    From the summary, it sounds like a lot of programmers and software engineers are trying to develop the next big thing so that they can literally beg for money from the elite class and one day, hopefully, become a member of the aforementioned. It's sad how the middle class has been utterly decimated in the United States that some of us are willing to beg for scraps from the wealthy. I used to work in IT but I've aged out and am now back in school to learn automotive technology so that I can do something other than being a security guard. Currently, the only work I have been able to find has been in the unglamorous security field.

    I am learning some really good new skills in the automotive program that I am in but I hate this one class called "Professionalism in the Shop." I can summarize the entire class in one succinct phrase, "Learn how to appeal to, and communicate with, Mr. Doctor, Mr. Lawyer, or Mr. Wealthy-man." Basically, the class says that we are supposed to kiss their ass so they keep coming back to the Audi, BMW, Mercedes, Volvo, or Cadillac dealership. It feels a lot like begging for money on behalf of my employer (of which very little of it I will see) and nothing like professionalism. Professionalism is doing the job right the first time, not jerking the customer off. Professionalism is not begging for a 5 star review for a few measly extra bucks but doing absolute top quality work. I guess the upshot is that this class will be the easiest 4.0 that I've ever seen.

    There is something fundamentally wrong when the wealthy elite have basically demanded that we beg them for every little scrap. I can understand the importance of polite and professional interaction but this prevalent expectation that we bend over backwards for them crosses a line with me. I still suck it up because I have to but it chafes my ass to basically validate the wealthy man.

  37. Comment removed by account_deleted · · Score: 5, Insightful

    Comment removed based on user account deletion

  38. Fabrication by sycodon · · Score: 1

    Building huge, complicated structure involves a lot of fabrication. Not fabrication in the sense of creating a falsehood, but designing, cutting and assembling materials (usually steel) into the desired object.

    What you seem to be arguing is that anyone who claims to understand how to build these objects need to understand how to builder a welder, a plasma cutter, a band saw, a grinder, etc. You don't. You need to understand how to employ them, but there is no need to know how they work or how to make one.

    Software is much the same. There is no need to understand the origin and workings of the tools you use, rather, you need to understand HOW to use that tool. Some of the best Welders in the world (and welding is a very technical and highly skilled trade) have no idea how the devices they use work internally.

    --
    When Fascism comes to America, it will call itself Anti-Fascism, and tell you to give up your guns.
    1. Re: Fabrication by locketine · · Score: 1

      I doubt world class welders lack understanding of how their tools work; not understanding how a tool works results in mistakes or narrow use of the tool. What do they do when their tool breaks down or degrades in performance? Buy another one? Hire a welder tech? What if they want to weld something that doesn't perfectly match how they were taught to use the tool or the tool's ideal use?

      I've interviewed at some big tech companies and have been surprised by how little my interviewers understand the execution of their code. They rely on the big-o rule of thumb as if it's gospel and they assume computer memory is an inexhaustible resource. Why would this be bad? Because they use hash tables for everything without a clue about the drawbacks of constantly doing memory lookups.

      --
      Think globally but act within local variable scope.
    2. Re: Fabrication by sycodon · · Score: 1

      Wrong.

      A Welder has a basic set of controls. These affect how you use it.

      How a welder actually takes 110 bolts, amplifies it, regulates power, wirefeed speed, etc. Is a completely separate domain populated by electrical engineers and folks who design, build, and manufacturer microcontrollers, etc.

      --
      When Fascism comes to America, it will call itself Anti-Fascism, and tell you to give up your guns.
    3. Re: Fabrication by sycodon · · Score: 1

      And yes, do they do buy another welder. Just like you buy a new hard drive if yours crashes.

      Do you reforge a hammer if you break off a claw?

      Technologies are advanced precisely because people can leverage the work of others.

      --
      When Fascism comes to America, it will call itself Anti-Fascism, and tell you to give up your guns.
    4. Re: Fabrication by locketine · · Score: 1

      Do you weld? I've welded and have friends who do it professionally. They do know wire speeds, gas mixes, material impedance, heat dissipation, etc. Literally the first thing they taught me in welding class was how the various welders we'd be using, worked.

      --
      Think globally but act within local variable scope.
    5. Re:Fabrication by goose-incarnated · · Score: 1

      Some of the best Welders in the world (and welding is a very technical and highly skilled trade) have no idea how the devices they use work internally.

      You must be mad. I'm a welder, certified and everything (certs over 20 years old, so not current). I can guarantee that any *good* welder knows how his welder works, knows why the rods with different ratings produce different results, etc.

      --
      I'm a minority race. Save your vitriol for white people.
    6. Re: Fabrication by sycodon · · Score: 1

      Yes.

      But I can't build a welder. Neither can your welder friends unless they are also electrical engineers or have the knowledge of electrical engineers.

      --
      When Fascism comes to America, it will call itself Anti-Fascism, and tell you to give up your guns.
    7. Re:Fabrication by sycodon · · Score: 1

      That's not the same as being able to open up your welder and figure out why it's dead.

      Knowing how to employ a welder is not the same as being able to create or repair a welder.

      --
      When Fascism comes to America, it will call itself Anti-Fascism, and tell you to give up your guns.
    8. Re:Fabrication by goose-incarnated · · Score: 1
      > Knowing how to employ a welder is not the same as being able to create or repair a welder. I didn't say it was, I said they know how the internals work. Besides, all of the professional welders I know have at some point in the past repaired their own welder. Every single one. Your assertion that

      Some of the best Welders in the world [...] have no idea how the devices they use work internally.

      Is factually wrong.

      --
      I'm a minority race. Save your vitriol for white people.
    9. Re:Fabrication by sycodon · · Score: 1

      So given a budget of some size, you could go down to the local electronics store, buy a bunch of resisters, ICs, OCB board, transformers, and the rest and assemble a 220v TIG welder?

      You should start a business. Because Miller, Everlast, and others employ an entire staff to design and build these things.

      --
      When Fascism comes to America, it will call itself Anti-Fascism, and tell you to give up your guns.
    10. Re:Fabrication by goose-incarnated · · Score: 1

      So given a budget of some size, you could go down to the local electronics store, buy a bunch of resisters, ICs, OCB board, transformers, and the rest and assemble a 220v TIG welder?

      That's not what you claimed which I called factually incorrect.This is what you claimed, which is factually incorrect.:

      Some of the best Welders in the world [...] have no idea how the devices they use work internally.

      They have a good idea of how the welder works internally, or else they wouldn't be any good at welding. It is, in my experience, almost impossible to become good at welding unless you have a very good idea of how the welder works internally.

      They don't need to build one, they just need to know how the welder works internally.

      --
      I'm a minority race. Save your vitriol for white people.
    11. Re:Fabrication by Hognoxious · · Score: 1

      There's knowing how to drive, and there's being a mechanic.

      You seem to think it's impossible to do the first without doing the second.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    12. Re: Fabrication by locketine · · Score: 1

      Ah, I think I understand where we misunderstood each other now. You think the AC was asserting that someone needed to be able to build a compiler to use the programming language it compiles. I think AC was asserting that someone needs to understand how their code is compiled to make good use of the language. So I'm comparing their statement to how a welder works, and you're comparing their statement to how to build a welder.

      --
      Think globally but act within local variable scope.
    13. Re:Fabrication by sycodon · · Score: 1

      Many of the best drivers in the world can't rebuild an engine.

      --
      When Fascism comes to America, it will call itself Anti-Fascism, and tell you to give up your guns.
    14. Re: Fabrication by datavirtue · · Score: 1

      This allegory has run its course and was of little value anyway. Please stop.

      --
      I object to power without constructive purpose. --Spock
    15. Re:Fabrication by datavirtue · · Score: 1

      Right. And software developers do not know how to build a computer and integrated circuits from scratch. But they should know how their fucking language is arranging and manipulating data in memory. You grabbed the wrong metaphore and I would venture to say you have no ideas how your tools work either.

      --
      I object to power without constructive purpose. --Spock
    16. Re:Fabrication by Hognoxious · · Score: 1

      Do you really think that some of the best drivers in the world have no idea how their car works internally?

      Do you think Lewis Hamilton[1] designed & built his own car?

      [1] He's in that thing like Indy except they can turn both ways.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
  39. Re:Seems about right. Constantly learning, studyin by phantomfive · · Score: 1

    The difference between a smart programmer who succeeds and a stupid programmer who drops out is that the smart programmer doesn't give up.

    --
    "First they came for the slanderers and i said nothing."
  40. Engineering, not just coding by Anonymous Coward · · Score: 1

    It's time we realised that programming is part of a set of engineering skills that are required in order to build any of the complex systems involved in many modern applications. No single person will have more than a small fraction of the skill and experience required. Even the most experienced ones who lead the architectural effort will have to defer to specialised expertise for some components.

    One earlier commentator wrote:

    My education including designing a microprocessor from logic gates, building it in a lab, programming in a diverse array of languages from assembly up, writing an assembler, and writing a compiler.

    In the work world, I've written an OS, drivers, a C standard library, a compiler, several interpreters, database engines, etc. When I use these things, I understand them at a level that makes my code better. If you don't think you could write something like that, you are probably just a script kiddie and have no business architecting major applications.

    Unfortunately, the fraction of programmers with the level of experience described above is–inevitably–vanishingly small, particularly in projects where those people also have to understand some higher-level "business logic" associated with the application in question.

    But even that experience omits many things that are often crucial to success, particularly where performance or reliability requirements are challenging. In hardware, this can take one beneath the depths of logic gates and into the realms of electronics and physics. Computer architecture, e.g., cache organisation, memory models, compiler optimisation, threading, interconnects, etc., to name but a very few aspects of systems, have their own subtle effects, while algorithms and data structures and numerical analysis etc., require deep understanding of math and statistics – and all of this before one considers the application itself. And don't forget the air conditioning/cooling requirements, the on-going operation and maintenance or.........

    People who are good at pouring concrete don't usually design bridges. People who design bridges don't always know much about the chemistry of concrete or metallurgy of steel and aluminium.

    People who hire programmers shouldn't expect them to be have most of the skills required to build a complete system. Look to large engineering projects –bridges, cars, aircraft, roads– for a better model of how to build teams of people; stop looking for superheroes.

  41. Important, and dumb. by raymorris · · Score: 3, Informative

    Of course they are important. I wouldn't have done those things if they weren't important!

    I frequently have friends say things like "I love baking. I can't get enough of baking. I'm going to open a bakery.". I ask them "do you love dealing with taxes, every month? Do you love contract law? Employment law? Marketing? Accounting?" If you LOVE baking, the smart thing to do is to spend your time baking. Running a start-up business, you're not going to do much baking.

    If you love marketing, employment law, taxes, etc, then start your own business. If you love writing software, and you're really good at it, then someone will pay you six figures to do what you love.

    Of course, the ideal for a really good programmer is to partner with young Bill Gates on a new business, and you do the software while he does the business. That doesn't happen often, though.

  42. Re:Seems about right. Constantly learning, studyin by complete+loony · · Score: 1
    In other words;

    What is often mistaken for 20 years’ experience, is just 1 year’s experience repeated 20 times.

    --
    09F91102 no, 455FE104 nope, F190A1E8 uh-uh, 7A5F8A09 that's not it, C87294CE no. Ah! 452F6E403CDF10714E41DFAA257D313F.
  43. Which part? Learning makes you better? by raymorris · · Score: 1

    You quoted a lot. Is there one part exactly do you have in mind? The thesis of my post is of course "constant learning, on purpose, makes you better"

    > you take this attitude towards other people, people will not ask your for help. At the same time, you'll be also be not able to ask for their help.

    Are you saying that trying to learn means you can't ask for help, or was there something more specific? For me, trying to learn means asking.

    Trying to learn, I've had the opportunity to ask for help from people like Neil Brown, ESR, Florian Weimer, Randal Schwartz, and Ralf Engelschall. I've certainly learned from them, and gotten good help.

    I ask because the one thing I enjoy more than designing programs and learning to do that better I'd helping OTHER people learn to do better software. I've been slowly creating a position for myself where hopefully I spend at least half my time doing that. Currently, I spend about 35% of my time helping other programmers, answering questions or whatever. Want to do more of that.

    I really enjoyed something that happened the other day. The lead architect asked our team "what is this function for? @Ray this looks like your code". He could tell it was mine because it used a certain more advanced coding technique that makes the code easier to read and understand (thereby reducing bugs). The cool thing is, had he looked it the commit, he's have seen another programmer's name on it. It was done by a programmer who has been pushed to spend more time on paperwork, because he's better at paperwork than code. But he and I have been spending a lot of time working together, with him asking me questions throughout the day. "My" techniques for clearer, less bug-prone software are now showing up in code written by junior members of the team, because they come ask me, and we learn together. I think that's awesome.

  44. Four tips for a better job. Who has more? by raymorris · · Score: 2

    I can tell you a few things that have worked for me. I'll go in chronological order rather than priority order.

    Male friends in the industry you want to be in. Referrals are a major way people get jobs.

    Look at the job listings for jobs you'd like to have and see which skills a lot of companies want, but you're missing. For me that's Java. A lot companies list Java skills and I'm not particularly good with Java. Then consider learning the skills you lack, the ones a lot of job postings are looking for.

    Certifications, posted on your LinkedIn, let recruiters find you when they want someone with your skills. Some people will point out that certifications don't prove skill, people can cheat. But certifications CLAIM a certain skill level. When I list "Cisco CCNA" on my resume, I'm claiming a very specific level of networking knowledge, which can be confirmed in an interview. People also point out that (entry-level) certifications don't prove expert-level knowledge. Duh. Entry-level certifications show entry-level knowledge. Advanced certifications like CCIE show expert knowledge. But the point is, certificates are clear, industry standard ways that recruiters actually use to find candidates that match.

    With those three steps done, you should have multiple requests for interviews. You have the right skills, and recruiters looking for those skills find you. So now what about the boss that makes you hate showing up for work?

    Plan how you can screen the company and interview the boss. I see a lot of job ads for Wells Fargo because they are trying to hire people with my skills in my city. But we know from the news that Wells Fargo corporate culture is to lie, cheat, and steal to make monthly targets. I won't be applying at Wells Fargo. In interviews, I try to ask questions that give me some insight into the boss and the company. I can afford to walk away to the extent I've done the other steps, acquiring skills that are in-demand and marketing myself.

    I bet other people reading this have some good tips of their own. Who has one to share?

  45. Typo: MAKE friends. Not MALE friends by raymorris · · Score: 2

    Here's another tip I just learned - proofread what you write. :)

    My first tip was supposed to be "make friends in the industry", not "male friends". Indeed when it comes to networking and friendships, in average females are probably statistically more open to relating than males are.

    1. Re:Typo: MAKE friends. Not MALE friends by Cederic · · Score: 1

      Thank you for the clarification. I read the original and went, "WTF?!"

  46. Natural talent... by ElitistWhiner · · Score: 1

    In 70's I worked with two people who had a natural talent for computer science algorithms .vs. coding syntax. In the 90's while at COLUMBIA I worked with only a couple of true computer scientists out of 30 students. I've met 1 genius who programmed, spoke 13 languages, ex-CIA, wrote SWIFT and spoke fluent assembly complete with animated characters.

    According to the Bluff Book, everyone else without natural talent fakes it. In the undiluted definition of computer science, genetics roulette and intellectual demographics that covers the rest of the population. It's cynical. It's higher education little secret. It's why software (i.e. Google, Facebook) rules and hardware is competitive.

    So now you know why Apple Inc. competitors are Microsoft and not Dell, H-P et. al.

  47. Re: ... A job fair can easily test this competenc by PaulRivers10 · · Score: 2

    The only thing fuzzbuzz tests is "have you done fizzbuzz before"? It's a short question filled with every petty trick the author could think ti throw in there. If you haven't seen the tricks they trip you up for no reason related to your actual codung skills. Once you have seen them they're trivial and again unrelated to real work. Fizzbuzz is best passed by someone aiming to game the interview system. It passes people gaming it and trips up people who spent their tume doing on the job real work.

  48. Other book sells better and is more interesting by fahrbot-bot · · Score: 1

    New Book Describes 'Bluffing' Programmers in Silicon Valley

    It's not as interesting as the one about "fluffing" programmers.

    --
    It must have been something you assimilated. . . .
  49. Re: ... A job fair can easily test this competenc by Hognoxious · · Score: 2

    they trip you up for no reason related to your actual codung skills.

    Bullshit!

    --
    Confucius say, "Find worm in apple - bad. Find half a worm - worse."
  50. Yes, manage your manager. Start by establishing yo by raymorris · · Score: 1

    Good tips. If you're actively making your team and your boss succeed and look good, most people will leave you alone and let you do that.

    I've also learned that precedents are established quickly. Whatever you want to establish about relationships at work, establish it early. Also however you want to be seen, be thought of, put that out there early.

    Some people introduce themselves and quickly show "I'm a friendly guy and you'll like me", others want to show themselves to be tough or whatever. For me, I like to establish "technical credibility", I show that I know what I'm talking about, when I speak about technical issues it makes sense to listen to what I'm saying. (Part of that is keeping my mouth shut when I don't know what I'm talking about, or asking questions rather than making assumptions).

  51. Re: ... A job fair can easily test this competenc by PaulRivers10 · · Score: 1

    Fizzbuzz is nothing but a collection of cheap tricks from people who are good at tricks and being loud and bad at coding.

  52. Re: ... A job fair can easily test this competenc by Cederic · · Score: 1

    I disagree. Any programmer that knows how to code can get a working solution to FizzBuzz.

    It may not be optimal or elegant, but it'll fucking well work.

    What you should be assessing for is correctness and the quality of the written code, not its optimisation or ability to be refactored. If the programmer produces something readable, maintainable and documented, and also points out the areas they know you should focus additional resources if you really give a shit about the performance, that's the person that knows their shit.

    Someone that quickly types out the generic known solution but uses 'i' as a loop counter is exactly the sort of person you thank for taking part and engage no further.

    Someone that can't even get their code to compile, let alone pass the test, clearly isn't a programmer no matter what their CV states.

    I'm not advocating use of FizzBuzz but it's also pretty easy to use to differentiate aware, capable people from utter fuckwits.

  53. Re:Silicon Valley is Only Part of the Tech Busines by rbrander · · Score: 1

    Well said. I post to /. every time programming as a job comes up, to relate my experience that the great career was having IT as your second skill. I got a CPSC degree and all, but after my Engineering degree, and for nearly all my career, my title was Engineer. (Waterworks and sewer stuff - GIS mapping, construction mgmt, etc.)

    I had a far safer job because I was much harder to replace; very few have dual skills for some reason. Division-of-labour is great, and I'm sure that full-time programmers are way better programmers than I; but we really need far more dual-skill people in the business, interfacing between the customer dept and the IT department. The hardest thing to get right is the specs.

  54. There is a balancing act there by raymorris · · Score: 1

    You bring up a good point. There is also an interesting counter-point, leading to need to balance the two.

    Certainly a major deficiency in one area can override one's excellence in another. If an amazing technician has no ability at all to communicate with other people, he'll do little good. On the other hand, major advances, and perhaps the majority of overall good, are done by specialists, people good at one thing.

    I don't have the people skills of a good salesman, and it would be a waste for me spend time developing that, because major companies HAVE sales people, who are not the development engineers. It is wise to practice getting really good at what YOU do, rather than trying to achieve mediocracy in what everyone else does. So there is a balance there - improve your weak points - until they are no longer a major hindrance to using your strong points. I suck at graphic design, and that's perfectly okay - the graphic designers handle that, and more affordably than it would cost to have me doing graphic design.

    Some "weak points" are also an alternative term for strong points. Every US president has been profoundly arrogant. They actually believed that not only they SHOULD be elected President, but that most people would see that, everyone would agree that they should be President of the United States. How arrogant is that! Tame your arrogance, if it's a problem, but don't work TOO hard at becoming exactly average in every way, I'd say.

  55. It's not really about coding. by jbn-o · · Score: 1

    The parent post and this entire thread is not about coding or what it takes to write code well. Talking about what's "a great boost for the company" is closer to the mark in that framing issues around what's "a great boost for the company" is self-destructively short-sighted. We're better off challenging that framing, particularly on sites like these which are built to do the opposite and give users the power to censor those who step out of line (also known as moderation).

    Listen to the interview with the book's author on Doug Henwood's show. You'll quickly find this is not about coding or even high-tech; in fact, Pein says that the programmers he spoke with really don't have social skills beyond talking about their current project (suggesting a profound naiveté or downright ignorance of important political trends governing their own work). And that they believe this ridiculous myth of "work hard, play hard" so their time spent in squalid conditions is some kind of dues-paying one must endure in order to be rich later on. In reality, they're fools: they'd be lucky if even 5% experience this, meaning 95% are chumps who will spend their lives working for little and wasting time they should spend organizing for better outcomes for most (including themselves). To me this jibes with the profound innumeracy, political naiveté, and indoctrination in tech "journalism" that passes on sites like Hacker News (Pein mentions ycombinator in the interview) and /., as well as the arrogant anti-free speech bias that revolts at anyone who dares to challenge the narrative provided by the article at the head of the thread. Hence the discussion in the recording around 25m30s:

    Pein: 90% of them [tech company CEOs] are liberal. But that didn't account for their views on labor.

    Henwood: They're okay with transgender bathrooms, but don't raise the minimum wage.

    Pein: No; no unions; they don't even want to recognize their employees as employees.

    Henwood: That would be a commitment.

    Pein: Right, well there's all sorts of mumbo-jumbo explanations they have for why their vision of a direct democracy where everyone's Bitcoin holdings translate to their share of the vote would be better than what we have now, but when you see how these things work in practice it's strongly authoritarian, no place for labor. And the tolerance for progressivism on identity issues—there's a limit to it. [...]

  56. Re: ... A job fair can easily test this competenc by lgw · · Score: 1

    Well played, sir!

    --
    Socialism: a lie told by totalitarians and believed by fools.
  57. Re: ... A job fair can easily test this competenc by lgw · · Score: 1

    Someone that quickly types out the generic known solution but uses 'i' as a loop counter is exactly the sort of person you thank for taking part and engage no further.

    'i' is idiomatic. Admittedly, 'n' is better for an arbitrary number that's not an index into an array, but 'i' is fine. You'd prefer fortyCharacterCoboiNameDescribingAnArbitraryNumber?

    --
    Socialism: a lie told by totalitarians and believed by fools.
  58. Re: ... A job fair can easily test this competenc by Cederic · · Score: 1

    I want descriptive self documenting code that's readable and maintainable.

    Not code written by a cunt that thinks cnt is a funny variable name. Yeah, worked with him once.

  59. Re: ... A job fair can easily test this competenc by david_thornley · · Score: 1

    Also, pay attention to how fast the candidate works. If the candidate just whips it out, then (a) the candidate thinks well in code, or (b) the candidate has done Fizzbuzz about 29 times in the past three months. If the candidate has real problems, then (a) the candidate is having problems with the programming environment or (b) isn't worth hiring.

    And what's wrong with "i" as a loop counter in a short loop? It's easy to type and traditionally used. Meaningful variable names are for variables that have a meaning outside the context of the program.

    --
    "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
  60. Re: ... A job fair can easily test this competenc by Cederic · · Score: 1

    It's destructively lazy. It inhibits readability when you have nested loops. (i and j? really?) It slows refactoring and risks introducing new bugs. It suggests the programmer doesn't understand sufficiently the variable and its role, its purpose.

    Meaningful variable names are for variables that have a meaning outside the context of the program

    Bollocks to that. Meaningful variable names are for the benefit of programmers, and the source code is the context. Be descriptive in your naming and the code is far far easier to read, understand, maintain and also just write correctly in the first place.

  61. Re: ... A job fair can easily test this competenc by david_thornley · · Score: 1

    A loop variable is, well, a loop variable. "i" is readily recognizable as one. It suggests that the variable's role is to iterate through a loop. It's a simple-to-type name for a simple variable.

    --
    "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
  62. Re: ... A job fair can easily test this competenc by lgw · · Score: 1

    Yes, but 'i' is self-descriptive when used as an index. Bro, do you even math? Of course, it's become quite rare to iterate through a container that way, so it's a bit of a moot point.

    --
    Socialism: a lie told by totalitarians and believed by fools.
  63. Re: ... A job fair can easily test this competenc by Hognoxious · · Score: 1

    Apart from being the established name for an index since forever, its very shortness *is* self-documenting: it's a short-lived, temporary, throwaway variable, so it has a short name.

    --
    Confucius say, "Find worm in apple - bad. Find half a worm - worse."
  64. /|\ Nutter found by Hognoxious · · Score: 1

    (i and j? really?)

    If you can't tell them apart, ask your dog for help.

    Would you prefer IndexThatControlsInnerLoop and IndexThatControlsOuterLoop? You think having over 80% of the letters in common makes them easier to distinguish?

    --
    Confucius say, "Find worm in apple - bad. Find half a worm - worse."
  65. Re:And he knows who is a scammer? by Hognoxious · · Score: 1

    The same way someone with no medical training can tell who's a competent surgeon.

    --
    Confucius say, "Find worm in apple - bad. Find half a worm - worse."