Follow Slashdot stories on Twitter

 



Forgot your password?
typodupeerror
×
IT

Are 'Google Programmers' the New 'Next-Next-Finish Programmers'? (pvs-studio.com) 203

Long-time Slashdot reader theodp writes: Back in 1998, Ellen Ullman wrote in Salon about The dumbing-down of programming: "My programming tools were full of wizards. Little dialog boxes waiting for me to click "Next" and "Next" and "Finish." Click and drag and shazzam! — thousands of lines of working code. No need to get into the "hassle" of remembering the language. No need to even learn it. It is a powerful siren-song lure: You can make your program do all these wonderful and complicated things, and you don't really need to understand."

Twenty-four years later, PVS-Studio has published a translation of Ivan Belokamentsev's cautionary tale of how modernizing his interviewing process from coding on paper to a computer led him to inadvertently hire 'Google Programmers', who dazzled him in interviews and initially on the job, but soon reached a plateau in productivity that puzzled him until he had a gobsmacking realization.

From their article: It was like somebody hit me on the head with a sack of flour. It took me about two days to process it. How is it really possible? The beautiful, well-optimized code they showed me at the first interview was from the Internet. The explosive growth of productivity in the first months was due to the solutions that they found on the Internet. Those answers to user questions after the magic "We'll call you back" from these guys — were found on the Internet. They were coding without understanding the basic constructs. No, they didn't write code — they downloaded it. No, that's not it, either. To download the code is like running "npm i", it's ok. They copy-pasted the code. Without knowing how to write it.

That's what angered me — what the...? Well, I understand when you surf the net to figure out how a new technology works. Or when you need to use some exotic feature and not to bloat your head with unnecessary information. But basic things! How can you copy-paste basic things from the Internet?!

The article meditates on the mindset of "Google" programmers. Rather than learning about basic objects, types, and the constructs of a programming language, "Any information is available to them, always and everywhere. They've learned how to find this information quickly — whether it's the address of a store with cookies, pants on sale or generating a query."

But long-time Slashdot reader AmiMoJo now pushes back: This is dumb. Not everyone has a great memory, and these days there are so many different tools and frameworks that nobody can remember them all anyway. Back in the day when it was all C, you could reasonably write useful code on paper. These days most of that code will probably be interacting with libraries that you have not committed to memory.

If your developers are not progressing, help them. Give them training or mentoring. Challenge them.

And there's also this advice from Slashdot reader Iamthecheese: "Stop selecting for low ethics in your hiring process." There is a stupid, stupid idea out there among the pointy hair types that it's possible to hire top tier candidates for peanuts. This idea has been put into their heads by massively over-promising companies selling HR solutions of all shapes... They're actively selecting people with just enough ability to pass these specific tests and who are unwilling to show their true levels of ability by hashing it out on their own. So you have these untrained people who look for easy ways past problems, but you were expecting "rock stars".
Their suggested solution? "Stop looking for easy, cheap, already trained people and start looking for trainable, people." And then, "show them a little loyalty. That way you'll have people to train new hires, who also know what they're doing on the job."
This discussion has been archived. No new comments can be posted.

Are 'Google Programmers' the New 'Next-Next-Finish Programmers'?

Comments Filter:
  • by splutty ( 43475 ) on Saturday June 25, 2022 @12:56PM (#62650134)

    First thing I do when I need to write something in a programming language I haven't used in a while, is google " Reference Manual", print that, and read through it.

    Generally that's enough, with the occasional referral back to the guide when I don't remember things.

    Of course, that's predicated on the fact you actually need to be able to program to begin with, which I've noticed a lot of "Javascript graduates" (which was our term for Google Programmers I guess) just... Can't..

    • Nice FP. My thought along those lines involves learning a new language by starting with a personal project and getting some working code in the target language and then mangling the working code until it does something different but close enough to solve my project. But it's hard to do... The working code can't be too close to the new objectives, or little is learned. But if it's too far away, then the result tends to be a kludge that doesn't really capture the spirit of the new language. If you know PERL w

      • I have done the "find all the bugs in this four line snippet of code", and am often disappointed. Questions I think are way too easy and no way should I insult this senior level candidate by asking it leaves me astounded about how someone can coast through a career, and so I keep those dumb questions on my list.

        Almost never does someone first ask "what is the code supposed to actually do?" That should be the first response from someone who's supposed to be senior; never trust the comments, never trust the

        • by shanen ( 462549 )

          Hmm... Though I've been involved in some technical hiring, I've never had to evaluate programmers at that stage in the process. I would even insist I'm not qualified.

          Having said that, I can tell you how I'd probably go about it. I'd show them at least two versions of the same function and ask the candidate to tell me which version is the best one and why. If I was helping to hire a round peg for a round hole, then both versions would be in the target language, but for anything more interesting at least some

        • Almost never does someone first ask "what is the code supposed to actually do?" That should be the first response from someone who's supposed to be senior; never trust the comments, never trust the function or variable names.

          If this is something that software engineers at your company have to deal with on a regular basis, then the problem is with your company, not the candidates that you're interviewing.

          • I have to deal with it, no one comments things, they weren't real programmers when hired, they were EE peeps possibly. And yes, the company was a problem but I have seen that issue everywhere I've been in some degree. I've not been at a pure software company in some 25 years though, and that place was the worst of the bunch.

    • First thing I do when I need to write something in a programming language I haven't used in a while, is google " Reference Manual", print that, and read through it.

      You actually print it?

      Generally if I haven't used a language in a while, what trips me up is the silly little stuff (e.g. 'does this one use "else if", elif, elsif?' 'Is it break or continue?' 'What was the loop syntax again?'). For me, at least, being able to do a quick search (ctl/cmd F) through the reference is a lot quicker than scanning through a bunch of printed text.

      • by splutty ( 43475 )

        If it's a good reference manual, then absolutely, yes.

        Keep it in digital form as well, of course, but having it in print is for me (old) often a lot easier to just quickly look things up.

        • but having it in print is for me (old) often a lot easier to just quickly look things up.

          Wouldn't you prefer a search function?

      • by Joce640k ( 829181 ) on Saturday June 25, 2022 @04:24PM (#62650576) Homepage

        You actually print it?

        That was my first thought, too, but then I saw his userid and figured he must be at least 150 years old, so... yeah. He probably does print it.

        On a line printer with green/white fanfold paper.

        • by shanen ( 462549 )

          Mod parent funny, but... I'm wondering if he's going senile to say such a thing.

          Don't trust the manuals. Even Guy Steele's. In the best case the manual is an accurate description of one version of the compiler or interpreter. In the normal case it's a statement of aspirations and hopes with little basis in reality.

          And that's before we get to the bugs in the code written in the language. No complicated language is actually complete. There are always "true" programs that cannot be proven valid.

          (I ran into a r

    • Reference manual great. But for someone who's not good, if they head to stackoverflow for community answers, they usually get the WRONG answer. I am amazed at how much wrong stuff is out there. So many feel the need to answer an online question without first understanding the question (ie, they will give a C++ answer to a C question, or a C# answer to a C++ question, or a PowerShell answer for a Linux question). And even when they get it, the ranking is bad - the net values +1 from morons, so 100 morons

    • by AmiMoJo ( 196126 )

      I much prefer docs on a second monitor. Aside from saving paper, it's easier to search.

  • by RotateLeftByte ( 797477 ) on Saturday June 25, 2022 @01:03PM (#62650142)

    and found them to be a total POS when it came to actually making their code word in the real world which in my case happened to be a $4B chemical plant.
    It sure looked pretty but failed miserably when it came to handling errors.
    I even caught one person emailing the problem to his 'friend' in India and then pasting the result into the code.
    After that, I tested prospective hires on how they handle errors in a graceful way. Many simply had no idea about using error handling frameworks, data logging and all the other nasty stuff that you need to make a system that runs 24/7 and if it fails the costs can run into $2M per day.

    • by splutty ( 43475 )

      I've had to fix/debug more code from "That Indian IT company" than I care to think of.

      Please stop explicitly setting the start of an array to 1 in Perl...

    • by AmiMoJo ( 196126 )

      Not every job requires high end developers. Obviously a chemical plant does so I guess you were not paying enough if you couldn't get them. Most of the code in the world isn't that critical though, it's vertical applications for one business or some crappy website that is only used by other business customers. Businesses don't care if it's crap, if it fulfils the business need then there is no point spending more money on it as far as they are concerned.

      In my experience you can usually tell from the person'

      • by gweihir ( 88907 )

        Sorry, but you are wrong. Basically all code is connected to the Internet these days and under attack. You can either have competent coders do it, or you are better off throwing it away right after it has been written.

        • by AmiMoJo ( 196126 )

          I would advise against connecting anything important in your chemical plant to the internet.

          • That's good advice, but in general people seem to mostly do it anyway to simplify networking, because bad things keep happening to industrial control systems [dpstele.com].

            • by AmiMoJo ( 196126 )

              I've made telemetry only RS485 ports for monitoring. If they want control they better employ someone good.

              • Sure, there are options. One way serial links, one way network links... unfortunately all that stuff makes things more complicated and someone might just bypass it in order to get working some reporting tool sold to the execs over a dinner of hookers and blow.

                • by AmiMoJo ( 196126 )

                  I find it usually makes it easier. Very simple interface, no input sanitising or command processing you worry about. Sometimes they need a library to work the serial interface but that's pretty trivial.

                  • I'm not saying it's hard, but it's clearly harder than not doing it at all, and just click-click-clicking your way to success (and vulnerability.)

    • I recently got into an argument with someone who called me dumb then completely flipped out when I questioned his competence.
      His error handling strategy was the topic. There was none. He insisted you should just let everything do a hard crash with an unhandled exception, crashes will tell you what you need to fix the code, and if you push production code that crashes under any circumstance, it means you're a bad coder. You don't need error handlers. And if it encounters an error in the future on an OS vers
    • We've had video calls with a shared screen, and I could hear the potential team lead in India trying to discuss the question quietly with a friend. And on our end we're trying hard not to laugh, and sometimes not to cry. That outsourcing agency was the worst, they kept trying to foist off the guys scraped off the bottom of the barrel and seemed baffled why we never like the guys who had glossy one page powerpoint with their skills bold faced.

      So what do they think? That cheating to get past the interview i

      • by kackle ( 910159 )
        I watched in surprise on a video call as our Indian consultant's team lead searched Google to find how many bytes were in a megabyte. It wasn't as though he needed an exact number (as in a mebibyte), just a rough idea as to how much data was being used. And, I think I was the only one there who found that disconcerting.
        • My general rule seems to be, that if the Indian programmer is any good, this person is already in America or Europe, or else already working on multiple projects for multiple companies. So what you get assigned to your project is whatever they have left over. And the Indian outsourcing model is "we always have a horde of inexperienced employees to throw at you, and if we fall behind we'll add even more!"

    • actually making their code word in the real world

      Definitely practice your safe word first. Make sure you can clearly pronounce it in whatever condition you expect to be in. Otherwise, there could be trouble.

    • A lot of managers don't care about code with proper error handling or logging. They are actually more impressed with debug text barfs scrolling off the screens over a simple progress indicator and a log file with details - makes it look more sophisticated and complex to them. I once did a presentation to some developers and their managers on proper error handling, logging, etc. At the end of it, one of the managers summed it up with "This was a waste of time, it is just CS101". I asked him, "Why don't you h
  • Machines at first leveraged excuse the pun, human power. Then machines amplified and created power. But starting with innovations like the jacquard loom machines coded human creativity and process.

    It was only 30 years ago that I had to code some in assembly. Embedded machines did not have the power to do anything else. Device drivers were not as available as they are now so we wrote our own. Over time human knowledge and process has been coded, and refined, and standardized, so why do it again

    I understa

  • Interviews (Score:4, Insightful)

    by ceoyoyo ( 59147 ) on Saturday June 25, 2022 @01:12PM (#62650164)

    Somewhere I have a paper where they looked at whether interviewing someone improves hiring decisions or not. It did not.

    If you absolutely must do this kind of interview testing crap, ask relevant questions. If you want to know whether someone understands basic concepts, as them to explain basic concepts.

    Ask them to explain how a hash table works. So the HR person gets it.

    • Re:Interviews (Score:5, Insightful)

      by Dracolytch ( 714699 ) on Saturday June 25, 2022 @03:16PM (#62650460) Homepage

      I work at a research organization. Many of the hot research topics aren't even fully formed yet. When I interview, I don't ask folks for what skills they have, I ask where passions lie. Folks who are passionate will clearly demonstrate it, and they will grow into the roles they're interested in. Folks who don't have passion, don't make it. I can train just about anyone, except people uninterested in being trained.

      ~D

      • by ceoyoyo ( 59147 )

        Hey, where's that? Every research organization I've ever interviewed at asks lots of questions but in the end just counts how many first and last author papers you have and whether you've published on whatever particular topic is of interest to whoever currently wields the most political power on the hiring committee.

    • "So HR person gets it"? LOL. A lot of times HR will not get it. A long time ago I had a run in with HR because their post interview surveys indicated that pointer questions are most stressful to candidates, therefore we should not be asking any questions about pointers. I tried explaining to them that I am hiring for a kernel and driver developer positions which require knowing what a pointer is. I even tried to explain to them how stressed a person who has no clue what a pointer is would feel on the job if
  • by edi_guy ( 2225738 ) on Saturday June 25, 2022 @01:19PM (#62650182)

    My recent experience has been this. A couple of old-school, experienced and proficient programmers created the architecture for this start-up around their skillset. Then the company staffed the teams with dozens of pretty green developers with just a few years of professional experience. The newbies are all good people, ready to learn and are right at the level they should be for their age and experience, but they are not at all ready for the architecture laid out by the dudes with 25 years of experience.

    The results have been a constant tension of expectations from the senior architect types and what can reasonably be delivered by the newbies. And frankly there was a ton of optimization, and cleverness involved in the initial architecture that was pretty unnecessary and was more or less showing off between the senior guys.

    Anyway, I think there is a lesson here about gearing your architecture towards what your hiring is likely to entail. We could have had a pretty decent, performant, and maintainable (by newbies) system, but instead we have week after week of prod issues that takes the newbies days to diagnose and/or PR reviews that go sideways because the senior guys expectations are way out of whack.

    tldr; if your company is likely to only pay mid-range salaries, set your architecture and expectations accordingly.

  • Wasn't this one of the problems with early PHP - that anybody could produce nominally usable results? Since you didn't have to understand about security, the threshold to making very insecure sites was very very low.

    • I believe PHP was worse because it encouraged insecure practices. It took a long time before it could be reasonably used in a secure way without a lot of practice.

  • by fahrbot-bot ( 874524 ) on Saturday June 25, 2022 @01:30PM (#62650206)

    ... start looking for trainable, people." And then, "show them a little loyalty. ..."

    Ignoring that loyalty to employees and the company balance sheet (profitability) are often in conflict. Guess which one usually wins? (The latter. Short-sighted? Yes. Usually true? Also yes.)

    • by davidwr ( 791652 )

      Ignoring that loyalty to employees and the company balance sheet (profitability) are often seen to be in in conflict by people who can't or who refuse to see the big picture.

      There, fixed that for you.

  • ... if an AI can generate code to solve problem it could just solve that problem directly itself? Even if that's simply to compile the code it generated and run it though that seems rather long winded.

  • by MindPrison ( 864299 ) on Saturday June 25, 2022 @01:47PM (#62650252) Journal

    Coding isn't new to me, I'm a guy who coded my first video games in basic and Assembly language on the Commodore 64/Amiga, I later in life did some C++ programming with microcontrollers etc. I even did a robot for a competition in Assembly language on a Microcontroller I didn't know but bought a large cheap surplus bulk purchase of, it was fun.

    What's all this got to do with the article I hear you ask?

    Well, from someone who's not actively working with Code every day, but have worked in IT all my life - I tend to think that you do what you got to do to finish the job or get the task done. I've had numerous examples in my life where I had to learn a new language almost overnight and get certain tasks done for my employers with code to automate things, script things etc.

    My opinion is - you don't need to know EVERYTHING, as long as you have the mindset "I can learn", and you know the basic concepts of coding (any language, really!) you can be hired as a programmer.

    I have a Canadian friend that sometimes says he lives the "Imposter syndrome", he's pretty clever. He's been working at the same little family run company for 10+ years, and he's not a family member - but an external to them, and when we talk together - he ofter refer to code-snippets he found on the internet, he uses that in his apps that he makes for his customers (as long as it's open source etc.) and he learns from it, doesn't always know 100 percent what all those libraries does to a tee, but he gets it working.

    I'm the same way, I don't do coding from day to day, but whenever I need to I'll read a datasheet, open a book for the particular processor or system needed and quickly peruse what's needed to get the job done, download the libraries and read the documentation on how to communicate with that libraries (calls, variables, commands to be sent etc.) and I'll get it done in either a few hours or 2-3 days depending on the complexity.

    TL;DR: Coding is kinda fun once you get going - but you have to have a PASSION for what you do, like problem solving. You don't need to be a coding God or Wizard (I bet it helps) but you can absolutely get it done and the company will more than get their moneys worth if you're the right kind of person with the right kind of mindset.

    • by MrLogic17 ( 233498 ) on Saturday June 25, 2022 @06:12PM (#62650754) Journal

      You sound like my twin. Similar past.

      Something that struck me lately was that the definition of "programmer" has vastly changed. Back in the day, a programmer talked to the user, thought about the best way to solve the problem, then code and deliver the program.

      With the rise of Agile, we've dumbed down the process. There's no interaction with the user (That's the Business Analyst's role). There's no thinking through the best way to solve a problem (that's the Solution Architect's role). There's in connecting the deep internals with the interface (now split between Front End and Back End teams).

      A "good agile story" has been so pre-packaged and processed that a developer doesn't even need to understand what he's really doing. Just close out the story and meet the acceptance criteria. Someone else will file a defect and new story.

      Our expectations have become so low for a "programmer", that of course we're getting people who copy & paste code they don't understand. Anyone who truly understands the machine will get bored and move on. We have a vicious circle of low expectations and low abilities - accelerated by green bootcamp staff, and overseas consultants who throw massive numbers of staff at a project with tons of turnover.

      I don't know where it ends, or how it turns around.

  • by NobleNobbler ( 9626406 ) on Saturday June 25, 2022 @01:48PM (#62650258)

    Every time we use an API we make references to someone else's work. I think the author is really overestimating his skill or his management ability. Or projecting. Or something. But it's not about looking up-- the "answer". Whatever that means, anyway.

    The frameworks have become massive. Keeping all of that information in your head-- forget about it. Looking up a solution by "googling" it? Hey, you just might learn a new trick. I always do and always have looked at the "answers" I found as adding to my toolbox. There are some very smart folks out there. And besides that-- you can't create anything off these fragments nor could it ever account for whatever "productivity" decrease that was real or, more likely, imagined, by being remote.

    But imagine being a manager, with a self-professed charisma who never has to google anything-- who knows, maybe we're dealing with a genius with a large capacity for trivia here, but at the very least you must recognize that a manager with his style does NOT invoke feelings of respect when they don't see the problem with saying:

    "Can't solve a problem? Come get me. I will come over, sit on your chair, and finish your task. You'll sit next to me and memorize the way the work should be done."

    Imagine working with that guy

  • If you absolutely must see someone's code, then sit them down and have them code. Give them a reasonable amount of time, and conversely, don't give them a task which will take very long. You should be able to figure out if they can use language features without having them code a whole application for you. Let them have access to whatever they would have access to in the course of their job, what they do or don't reference will help you understand their level of competence.

    Asking someone to provide you a sa

    • by ghoul ( 157158 )
      Its not exactly worthless. You can just keep people you interview solve your problems without hiring anyone but yes I agree - giving out large programming assignments as a coding interview sucks - for both parties.
  • If it works for SCOTUS why should it not work for a mere programmer?
  • https://blog.codinghorror.com/... [codinghorror.com]

    I do expect that a lot of "coders" operating on the same skill-level will defend that what they are doing is actually right and professional. If you accidentally hired one of these morons, fire them as soon as possible. They have negative productivity, i.e. they do more damage than they produce in profits.

  • by devslash0 ( 4203435 ) on Saturday June 25, 2022 @02:28PM (#62650360)

    ...the guy who ends up maintaining your code will be a violent psychopath who knows where you live.

    • ...the guy who ends up maintaining your code will be a violent psychopath who knows where you live.

      That always seems to be the managers.

  • It's not that there are so many tools that you can't remember all. It's just that most people show no will to even try. Instruction sets are finite. Everything else is just general programming skills - architecture, patterns, logical constructs - which once remembered stay with you until the end of your life at little to no effort.

    It's like when you attend school and your geography teacher asks the class to learn all the countries in the world by heart. It's a fairly small set of data points to learn. Yet,

    • No... Those are the ones who'll fail.
      They only know how to do rote tasks... But somehow, that is what we "test" for.

      • I'm bad at regurgitation. But somehow I can remember esoteric BS when I'm trying to use it, command line flags and whatnot. I'm not much of a programmer, but then I don't claim to be one, that's not my bag baby. I can do enough programming to do systems admin stuff, which is. Mostly it's tweaking other people's code that isn't working. If I understand things I can test well on them, though.

        But maybe a programmer has to remember more stuff than I do, and that's why I don't remember it. My specialty is heter

  • by zarr ( 724629 ) on Saturday June 25, 2022 @02:38PM (#62650384)
    I've done a fair bit of interviewing which generally includes som practical programming. What we don't do is leave the candidate alone for half an hour. Thats the failure. Our coding interviews are ment to be a conversation. The candidate is expected to ask for clarification, and even asking for help if fine, as long as he/she can demonstrate good reasoning skills. Good candidates will often plan out a solution and explain it to me before a line of code is written. Some will start typing immediately while also explaining what they're doing. Bad candidates often do the same but it's obvious they have no clue how they'll arrive at a solution. Only once have i had a candidate just type out a correct solution from top to bottom, and I'm confident he was actually that good. He turned us down for Google in the end.
  • Computer Science (Score:5, Insightful)

    by eGabriel ( 5707 ) on Saturday June 25, 2022 @02:51PM (#62650398)

    Stop asking software engineer candidates about computer science, unless you have a good reason. Ask them about software engineering.

  • Productivity!!!

    Seriously, this is yet another facit of what I call short attention span theater.
    It's also why our current crop only want to work on new/shiny... Maintain/fixing code is freaking hard (WTF?! Why did it do THAT?!)

    All you kids! Get offa my lawn!!!

  • Why google for it? MS will charge you $100/year and do it for you!

    https://techcrunch.com/2022/06... [techcrunch.com]

  • by RightSaidFred99 ( 874576 ) on Saturday June 25, 2022 @03:35PM (#62650492)

    Late-ish 40's and sorry, I can't remember all that shit. And I flip around between C++, Python, C#, shell, powershell, etc.. all the time and over the years I'll leave and come back. I simply can't remember all that shit.

    But I know how to program, I know how to automate, I know fundamentals of design and design patterns (though I usually don't remember the names). And unlike your average SlashDot old, to whom I am a young whippersnapper, I'm not obsessed with old shit and I keep up on modern technologies where applicable to my job.

    Wait until the moral panic over AI assisted coding gets into full swing, lol. I know only like 15% of you use anything written after 1997, but you should see what Visual Studio 2022 does with the new AI intellicode shit. Holy fuck. You can be writing a program and it will guess what you're writing and suggest whole code lines. And not always trivial ones. I was writing a simple C# text parsing function and it suggested a whole line, including the substring length (which it got wrong, but I was impressed it tried), to tokenize the string and pull out a fragment.

    This is early days for that shit - it's only going to get better. You still won't have mongoloids who can barely read coding, but it's going to open it up a bit and more importantly make those who can program more efficient/faster.

  • There are plenty of software needs that are well served by code generation. If your CRUD app needs aren't already met by off the shelf products, the lowest cost/effort path should probably be taken.

    I think most software doesn't actually need to be written. A lot of companies head down the dev path due to "delicate little snowflake" syndrome. They think their manner of doing business is so special that existing software can't work. Most of the time they would be better if they moved their processes to align

  • Back in 90,’s we threw their asses out.

    Who let them in again? GOOG?

Per buck you get more computing action with the small computer. -- R.W. Hamming

Working...