14 ms·
The best programmers are the quickest to Google
- SchizoDuckie 14y agoTrue story, but it's not just being the first to do a google search. From personal experience I've also seen that how you use google and what variants of your search terms you can come up with that make the biggest difference in getting to the right answer/method. The problem is: when you get to a certain level of skill, or are working on very obscure problems, or are working with hightech (even yet-to-be-released) stuff, not even google will help you anymore. That's where how good of a programmer you really are comes into play.
- jmvoodoo 14y agoAdditionally, you need the skill and knowledge to be able to tell a good solution from a bad one in the many results you'll get back from a given search.
- amitparikh 14y agoI agree. Those that know the right questions to ask are those that understand their problems, understand their deficiencies, and are just looking for a targeted piece of knowledge that they may be missing.
- gte910h 14y agoResearch never stops being in play on really hard problems. Sometimes though, the research isn't in search indexes in a way you'd suppose.
- cpfohl 14y agoSo...if you're working on a really obscure problem, I'd consider you a researcher before considering you a programmer. (Or perhaps a programming researching). That skill set is immensely different from the standard programmer's skill set. Google skills are still vitally important, but interpreting the results quickly become the dominating factor when you're doing something no one has done before.
- xutopia 14y agoI thought from the title that you meant that Google, the company, thought that faster coders are just better.
- mmphosis 14y agoThe best programmers may be the ones that work at Google as they are very quick at mining for search requests, such as gleaning what other software developers are working on. This may be what gives Google a competitive advantage. Spread that competitive advantage around. So as not to give our secrets away only to Google, I may search for programming help using duckduckgo and other search engines.
- the_cat_kittles 14y agoMaybe there should be another programmer maxim: DRO (dont repeat others)
- Bootvis 14y agoYou must repeat the doing but not the inventing. I propose the following maxim: Good programmers invent, great programmers copy.
- nissimk 14y agoA wise man that I once worked for said "The best code is the code you can steal."
- Bootvis 14y agoAgreed, but now I think of it there is a level beyond the copying/stealing of code: "The best code is the code you didn't write". Of course, it is even better to beat a complex program with a small amount of shell-fu.[1] [1]: http://franklinchen.com/blog/2011/12/08/revisiting-knuth-and-mcilroys-word-count-programs/ http://franklinchen.com/blog/2011/12/08/revisiting-knuth-and...
- tiger10guy 14y agoJust what I thought! One thing to point out: there's a fine line between what is and what is not repetition. You may/will find a tool that's perfect for what you want to do sans one or two features. Your ability to adapt that tool to exactly what you want so you don't have to repeat the 99% of things which are already finished is important.
- cdl 14y agoFrom my experience of not doing this early on, the quicker you take this advice, the quicker you will build really cool things.
- gte910h 14y agoIMO, school worries about plagiarism cause young engineers to be overly adverse to looking and seeing if the problem is already solved before attempting their own solution Too much NIH syndrome, and NIH among those least qualified to invent it usually
- codex 14y ago"The best doctors are the quickest to Google." "The best scientists are the quickest to Google." "The best engineers are the quickest to Google." Are the above statements true? Quite possibly. I would argue that the best in their fields are those writing the answers that are indexed by Google to be found by others. However, usually the best in their fields are also good at using Google. Unfortunately, the worst in their fields also use Google extensively, so it's not a strong signal. EDIT: My definition of "best" is admittedly very subjective. The author could define "best" as "most effective", for exmaple. My only point is that you shouldn't use Googling to determine who is "best" because the "worst" also can be quick to use Google. It's a useless signal. More situationally appropriate metrics should be used instead.
- gte910h 14y agoMy doctor said "I don't know, I have to go look that up". He's probably going to stay my doctor for a very long time for that one sentence.
- nightski 14y agoI don't know, it's almost a little unnerving to think that a doctor would always go completely from memory and never look at any reference material.
- fluorescentLAMP 14y agoWhen I interview a candidate for a hacker-like position, I provide give them the problem constraints and hand them my computer. I tell them to lookup anything they want. The portion of time spent on Google directly correlates to their success.
- SmileyKeith 14y agoThis seems like a controversial topic. Some people seem to think that if you don't know something code specific without Googling than you're something like a Duct tape programmer (although I may be stretching the term away from what Joel talks about http://www.joelonsoftware.com/items/2009/09/23.html http://www.joelonsoftware.com/items/2009/09/23.html). Being a college student it's interesting to see articles like this, that I agree with, and then hearing from my professors "anyone can google you can never be a good _computer scientist_ if that's all you do!"
- Pent 14y agoYou can't be a good computer scientist if all you do is search for solutions using Google, but you can be a pretty good product shipper.
- jfarmer 14y agoYes and no. I'm a co-founder of http://devbootcamp.com http://devbootcamp.com so I see this every day in the context of people learning to be programmers. "The best programmers I know understand how to architect and build large projects piece by piece. They can focus on the macro because don’t get hung up in the pieces. They know how to use Google to find solutions fast. DRY." I agree with the first and second bit and strictly speaking the third. That is, when students first watch me code they're surprised both that I'm looking up this-or-that ActiveRecord method and at the speed with which I do it. They assume expert programmers have a book of magic spells they've memorized, so to see what I haven't in some ways makes it more magical. What am I doing, then, if not memorizing every last little thing? What makes me a "better" programmer? The key to becoming a non-beginner are the first two bits, not the third. It's developing that filter experts have which separates relevant information from irrelevant information. Lots of beginners use Google in a backwards sort of way, having been trained to "look for the solution." Google is like the great universal answer key for them. It can't be about memorization, then. Being an expert is more like having this amazing compression algorithm at your disposal and we can evaluate very quickly whether some piece of information is compatible with that compression algorithm. It's made worse by the fact that they see experts do it, sometimes. Or worse, that experts tell them, "I use Google all the time, you should, too." But Google is worse than nothing if the beginner finds code, copies it blindly into their project, and shuffles characters around until it does what they want. They are robbing themselves of the opportunity to abstract out common patterns, recognize similar problems in different guises, and generally setting an impossible bar of having to memorize too much. Lots and lots of students have been trained to see software development as THAT.
- prawks 14y agoCorrect. If I'm understanding you, I'd summarize the distinction as follows: Google should be used as a reference. It should not be used in place of educated judgement. This goes along with the ideology that you should not trouble yourself with monkey-memorization. When learning to program (for instance), concepts are far more important and useful, as you are constantly faced with making educated decisions. Decisions should not be made based on reference material alone.
- JohnBooty 14y agoI couldn't help but read this and think about technical interviews that involve the candidate being asked to write code on a whiteboard - no Google, no code linting/hinting/completion etc. I'm very much in favor of candidates being asked to write some code under more realistic conditions, including finding solutions to parts of the exercise online. Of course, they should then be able to explain to the interviewer(s) why they chose a particular solution and walk the interviewer through the code they borrowed/adapted.
- jonnytran 14y agoAgreed. Nowadays in technical interviews, I make it a point to say that I would google the problem. Not googling just because it's an interview is exactly the kind of thinking that gets people stuck on real problems -- i.e. inside the box, instead of outside the box thinking. If you were given a real problem, would you limit your problem solving approaches to those implied by the context? That's exactly the kind of person I don't want to hire.
- zv 14y agoWhile this may be good for code under 100 lines, anything more requires using Google. Either it be simple trivial things like email regexp (for those who don't have the luxury of having premade libraries for them) or harder things like algorithms.
- eru 14y agoGetting a precise email regular expression straight is much harder than most questions about algorithms you will ever be asked in an interview.
- madisp 14y agoI have yet to see a good email regexp while using Google. Most of them have huge troubles - either not having proper Unicode support (http://en.wikipedia.org/wiki/Email_address#Internationalization http://en.wikipedia.org/wiki/Email_address#Internationalizat...) or not allowing the +label thing that Google is doing for instance. If you want to validate an email, make sure that there is an '@' character in there followed by some chars and a '.' with some other chars at the beginning and the end :) If you really really want to validate an email then force the user to verify it.
- enraged_camel 14y agoI Google everything right away. I guess this makes me the bestest programmer!
- dlo 14y agoIt depends on what you're working on. If you're working at the cutting edge, you will find that Google often doesn't have the answers you need... simply because they aren't out there.
- JanezStupar 14y agoNot everything we do is cutting edge. You may be working on the cutting edge and there may be no answers for you. However very likely there are some notes that this or that is so cutting edge that there are no (known, good) answers. Most often, however, you are just querying the database wrong. You either don't know the specific jargon or you are searching for an overloaded term. Its kinda like when I get pitched by non technical people who are keen on starting up and they come with this "revolutionary, never seen before webapp" idea. Usually within two Google queries I will have some established players already working on the specific market, or at least digital corpses of some previous players. When I get no results, even after an hour or two of searching - that usually means that there is no market, where the would be founders are seeing it. "Cutting edge" is often a synonym for "not having a clue" :D.
- jasonlotito 14y agoEven if you are working on the cutting edge, you are still building on top of previously learned knowledge. Google is more than just quick fixes or simple solutions. If your expecting a problem to be solved by a recipe, it's not cutting edge. However, reading papers and studies that relate to what you are working on will provide you with a better foundation to solve the problem.
- jacalata 14y agoTo quote the article under discussion: "If you need to implement something in code and it’s not cutting edge technology, Google it first."
- vignesh_vs_in 14y agoYour googling skill plays a big part in problem solving, and most of the time you are required to know what exactly is your problem. I personally google stuff a lot when building a side project, I dont google for solution for a given problem, this is where your programming skills come in . You need to know what exactly you are looking for to get the correct answer from google. It cant be a blanket statement ("parse data from json"). Most of the time the answer is split across multiple sites and which you put together n solve your problem.
- why-el 14y agoYou might want to make that Google lower case, because as it currently stands, it seems to suggest that the fastest programmers go to Google.
- gala8y 14y agoWas looking for a comment in that spirit to avoid creating a redundant version and there it is.
- nnoitra 14y agoTo be honest I completely agree with the quote. The most important thing should be the ability to reason about Computer Science and programming. On the other hand, I've written and implemented tons of Algorithms and DTs for the sole purpose of learning. I have a lot of accumulated toy code. "So unless you’ve already memorized that sorting algorithm by heart, why in the world would you want to spend 2 hours trying to figure it out yourself? " For the sake of learning. I may not memorize the entire code of merge sort but I will sure as hell know how the merge procedure is implemented. Additionally you develop a feel and intuition for it. However, when it comes to showing off your coding skills I would recommend building useful apps, I doubt any employer is going to be impressed about toy code that implements DFS.
- jlarocco 14y agoI think the article has an implied context of "for work." Implementing data structures and algorithms is a great way to learn about them and to get better at programming. But in the context of work, where I need to get stuff done, I'm not going to implement a low level algorithm if I don't need to - I'm looking for a pre-built solution in the standard library, or heading to a search engine to find a third party library. That's not to say some training time at work isn't a good idea, but it'd be silly for a person's business to fail because they got caught up implementing all of their low level data structures for coding practice.
- nnoitra 14y agoYes, because the ones in the standard library are very cleverly optimized and they are usually a hybrid of related algorithms.(For example qsort in C isn't exactly quicksort) But if you have a novel problem of algorithmic nature, having already built an intuition should help.
- ry0ohki 14y agoI've always believed this, of course then I worked at a company that wrote it's own programming language for it's product, and there was nothing to Google for (I still don't understand why they did this but stay with me). In that environment, you learn quickly what skills separate a good programmer from a bad one. The traits I found the most useful: -Learning speed (ability to quickly grasp a completely foreign concept) -Creativity (without a template of how others do it, you are the trail blazer) -Patience, because the really bad programmers wouldn't even try, they would curse it as stupid and leave or get someone else to do the work.
- benaiah 14y agoJust out of curiosity, were you working at Fog Creek? What you said reminded me of an article[1] by Jeff Atwood. 1: http://www.codinghorror.com/blog/2006/09/has-joel-spolsky-jumped-the-shark.html http://www.codinghorror.com/blog/2006/09/has-joel-spolsky-ju...
- ry0ohki 14y agoNope not FogCreek, it's possible the origins of our made-up language was done for similar reasons
- abraininavat 14y agoSurely the programming languages, libraries, and platforms you were using had documentation. It's not the point whether you are using www.google.com, mycompanyintranet.com/wiki, or yelling across the room to ask a question. By the way, the three attributes you just stated are what makes anyone good at almost anything.
- ry0ohki 14y agoYou've worked at a startup? Documentation is usually the last thing people do unfortunately, at least in any kind of useful way. Sometimes there was documentation, but when only 10 people in the world are using a language there ends up being undocumented behavior or things that you can only discover when it happens to you or you ask the guy around the corner who created it... edit Also wanted to say there is a huge difference between being able to Google and "Copy-Paste" a solution vs Googling the source documentation and figuring out the problem. We definitely could not have copy-paste programmers.
- 0x0 14y agoI think the key takeaway here is not just being the quickest to Google, but the quickest to google well. It's so frustrating to see people trying to google a problem, but fumbling with a poorly written query and/or focus on the wrong search result hit snippets.
- Legion 14y agoPeople call it Google-Fu for a reason. You could probably tell a lot about a candidate by how they Google for things. To effectively search, you have to effectively define the problem. Often that means having the understanding to redefine your specific problem into a more generic one that you can search for. Ineffective searchers will struggle to do that, or worse, simply throw words into the search bar and expect a magical answer.
- ramirez60 14y agoBefore I really started coding I worked in electronics (designing mixed-signal design kits at the semiconductor level) and I remember I used to judge programmers by how much "better" at google they were than me. Since I've switched over and become a full-time coder (and co-founder which is a whole different exercise) I have become far better at searching for solutions to my problems than I was in the past. That being said I don't think it's the fact that I default to searching that makes me a good programmer. I think it's like some of the other comments have mentioned, the ability to filter what information is useful or not quickly and then apply and test the useful information so that you do not have to re-derive every action. This has led me down a rabbit-hole a few times where I would be testing different solutions when just building it myself would have been much faster, but overall I definitely think it is part of what makes me work at the speed at which I do. I'm reminded of Mathematics from college. When first learning something it's difficult and simply seeing the solution won't improve your ability to recognize it. But once you figure it out once, you may not immediately remember how to apply it when faced with a similar problem, but recall is very quick because your brain has already wired the pathways of understanding.
- ericb 14y agoNo, the best programmers have done it before, and documented it. Every good programmer should have an Evernote or failing that, a Tiddlywiki for all non-trivial information. Googling is hit or miss--that great source for how to set up ssh certificates in Apache might rank poorly tomorrow, and pages which don't do show how to make a pem might be top ranked tomorrow. Evernote has saved me tons of time... I look at it as a digital extension of my brain.
- gall 14y agoI feel the same way about my bash history.
- pav3l 14y ago>why in the world would you want to spend 2 hours trying to figure it out yourself? I am sure a large portion of HN-ers (myself included) enjoy doing exactly that. I want to spend my day solving problems, not googling shit.
- vu0tran 14y ago> Excluding for fun and educational purposes
- nnoitra 14y agoI agree, the pleasure is arriving at the solution yourself. That's why CS is so appealing to so many people. It's fun and when you correctly solve a tough technical problem you feel great.
- xyzzy123 14y agoYou want to spend your day solving problems. OK cool. Which ones? All of them? In terms of work efficiency, you generally want to focus quite tightly on a specific part of the solution space. The part which adds value and is novel or advances the state of the art. Everything else is fodder for judicious library use, outsourcing to third-party services, and occasionally recipes or gists. Google is just the user-interface for code re-use in 2013. On the other hand, recreationally, why yes I do enjoy inventing a better wheel from time to time :)
- michaelwww 14y agoThis is fine for your own projects, but not on my time. I would expect you to look for an existing solution before writing something from scratch.
- hackinthebochs 14y agoI'm glad I finally saw someone say this. It seems like we're a dying breed: those of us who got into CS for the sheer enjoyment of solving problems. Making fancy things happen on the screen is simply a positive side effect for us. I abhor that development these days is 90% Googling shit and 10% actual creativity. I go out of my way to keep my day job interesting.
- 14y ago
- dmcg 14y agoand when Google fails, a well posed question on Stack Overflow can get results in 10 minutes. I worked my way through a whole Scala project that way - Stack Overflow Driven Development.
- jiggy2011 14y agoMost annoying thing ever was doing IT work at a company where internet access was not granted to employees below a certain paygrade. The amount of times I'd run into a problem and then instinctively fire up the browser just to get the "cannot connect to google.com" message. They handed out ringbinders full of notes to staff insisting that everything we needed was in there.
- chacham15 14y agoThere are a few problems with that in my experience: you cant use all open source projects in a proprietary context and open source projects all have different dependencies. The former flat out stops you from using the code (and you shouldnt even read it to avoid any accidental lawsuits). The latter is a big problem because you dont want to use eight different frameworks in one projects.
- nollidge 14y agoThis is something that bugs me about whiteboard-style interviews - they test almost none of the typical day-to-day aspects of programming. Without Google, without docs, without a REPL, without the code-run-debug cycle, how is it that you think you're assessing how effective I am in real life? EDIT: not to mention that you're also not testing me for one of the most important abilities of a coder in a software shop: how well I learn new things.
- MBlume 14y agoA good whiteboard interviewer will be those things for you. And language details are less important -- "well, let's both agree a for loop has this syntax for now"
- arjunnarayan 14y agoYes. A good whiteboard interviewer should constantly stipulate things that seem intuitively right, and let you use obvious helper functions that should exist in your environment, without penalizing you for getting the _name_ wrong. I.E. if we're talking java, you should be allowed to use anything that "feels" like it should be in java.util, without having to name it correctly. Because that part can be quickly googled for. Sometimes interviewers even let me just define the signatures of helper functions whose behaviors are tedious to write out, but in words we can cleanly go over the expected behavior. I have a habit of writing "pre" and "post" documentation for functions that specify finer grained types than the porous Java type system; chalk this up to my love of OCaml, but it greatly pacifies interviewers who know that I am mentally type checking, and will let those helper functions go unimplemented.
- nollidge 14y agoI'm not talking about loop syntax or stdlib argument order. I'll google around for algorithms or concepts or data structures too. I'll bring up the docs and study them to figure out what data structures I've got so as to do the least amount of work. Do you want to test the things I've already learned, or how quickly and neatly I can actually get things done? And it's far too easy to start going down a long and winding dead end path when you can't incrementally run an algorithm. I've had a couple whiteboard interviews where I get the sense that I've gotten something wrong early on that's causing me trouble, and while stopping and pondering on it doesn't immediately reveal a problem (and oh shit, I've only got 10 minutes left in the interview, gah, well, guess I'll just keep trucking), running it once to see the output could easily do so. It's nothing like real-life coding, is my point. Also: > A good whiteboard interviewer will be those things for you. Would that they were all good ones...
- nissimk 14y agoYeah, we need to always be learning new stuff and the way you learn is by RTFM. The point is that now Google is TFM. Or at least it's the index into every manual published. So unless you are already an expert in every server program, every library and every language that you are using, the way you acquire the knowledge of how to accomplish whatever specific task you are working on is to refer to the manual. You still need to know the technical term for what you are trying to do so you know what to search for and you have to know how to evaluate and select different technologies and how to fit them together, but the details of how to work stuff and solve many specific issues is best found on the Internet.
- rza 14y agoI'm not quite sure what is so revolutionary about this post. If you don't know something of course you will Google it. However, a good programmer can make better queries precisely because he/she knows more background about the problem than a less experienced programmer, so in the end, it's still down to who has internalized more information.
- bdcravens 14y agoI can't speak to the author's intentions, but it feels like a typical HN-baity title to get eyeballs on the blog. The real estate dedicated to the startup's call to action (on the bottom and sidebar) is almost as big as the blog post. I, like many, have similar "blurbs of brilliance" that I'd love to post, but I feel that if I don't have at least several paragraphs with substantive information then I'm merely adding noise to the Web.
- pit 14y agoDoes anyone else find themselves Googling the same question over and over again? How do you deal with that?
- sakopov 14y agoKeep a blog where you "document" any issues you keep running into. By the time you're done with the post you'll either remember it or if you don't you'll know exactly where to find the answer if you need it.
- PeterisP 14y agoAnd how will I find stuff in my own pile of notes? Googling :)
- alexanderh 14y agoI would actually recommend Wiki (specifically wikimedia) software for this doing this. It can act very much like a blog, but also brings along features of many Knowledgebases, like versioning of information. Sometimes problems evolve, and being able to keep track of that is beneficial.
- biggs 14y agoHappens to me all the time. I use Evernote to keep track of the most common bash commands, API calls, syntax specifics, etc. Flash card format, e.g. Title: Check if object is in a NSMutableArray Content: containsObject:
- jeffdavis 14y ago"So unless you’ve already memorized that sorting algorithm by heart..." That's a bad example. Nobody does that, unless they are really trying to solve a sorting problem. This article comes down to: "don't reinvent the wheel", without really any supporting examples to guide you further than that.
- xoail 14y agoThis has side effects. In my case I was becoming more and more lazy and never bothered thinking about the problem properly and taking a chance at coming up with a solution. I became expert at search and finding solutions. Ex search: 'display uitableview in a grid view' came up with lots of libraries... I did end up using one of them. But I wish I took sometime to do it myself or at least try to understand how this library is working. As I continue to use more and more libraries I realized I was becoming more lazy and more prone to searching for solution as first thing rather than giving my brains a chance. I felt dumb...
- samspot 14y agoWith this title I was really expecting some kind of study, not an anecdote from one person.
- polskibus 14y agoSuch thinking can only take you up to a certain level of excellence. Having admired some c++ standard committee members in action, I can say that if they had to google every harder bit, their skills would've been mediocre. If you want to be one of the best, you need to have a local data cache instead of fetching knowledge from a remote resource.
- bsg75 14y agoThe best do not have all the answers, but they know how to find them.
- Apocryphon 14y agoWhat was life like before Google? Sure there was documentation, and code comments, and senior devs you could ask. But surely that was less than Google? Or perhaps the scale of problems were less vast compared to now, so the amount of info you would get by Googling now was unnecessary back then.
- pixl97 14y agoFunny, in the future there will be adults that have never lived in a world without Google. Instead of the word 'Google', just say fast, well indexed internet searching. It depends where you were. In a university or large business you could go to where the other computer people were and ask, or go to the library, and if you were lucky maybe a BBS where a few experts were. If you had the right contacts you could pick up the phone and call someone (god long distance was expensive back then). Things didn't occur at the rate they do now. You might have to push a problem out for a week or two to get an answer, or maybe a manual shipped via mail. That, or you pissed around and tinkered with something till it worked by yourself.
- snogglethorpe 14y agoUniversity libraries were like magic gardens back in the day, and they generally weren't overly picky who used them (sometimes it helped to have a university ID, but usually it could be any university, and expired was fine)... In the early '90s I was unemployed, and so spent a few months basically just going to engineering library of the local university (University of Washington) every day and reading journal articles all day long. A very pleasant memory... :]
- jzse 14y agoThere are these things called books.
- PeterisP 14y agoA lot of reinventing the wheel and a lot of 'small lookups' that delay you for a few days instead of a few minutes - while you get the relevant info from a non-local person or a book that you don't have on your desk.
- billions 14y agoTop down thinking is the #1 most underrated skill in large scale problem solving. However, there is an equally important need for fixing narrowly defined problems which need detailed focus. In the end you need both the engineer that projects the entire car and the one that builds the door handle.
- marpalmin 14y agoI have seen too many people copy pasting from google and introducing bugs in the code just because they don't understand what is going on. I know that HN is really focused toward web apps and mobile apps. However, sometimes is good to remember that there is plenty of software done also to control machines and perform mission critical tasks. In those cases often is better to have control over the whole software stack. That is why so many High-Tech companies have their own software libraries, for example for image processing. In addition there is an IP and licensing question.
- noonespecial 14y agoBut the slowest to cut and paste what they find there.
- guelo 14y agoIf I've been solving a specific type of problem using similar technologies for 10 years I'm going to code circles around you while you're off googling stuff.
- macoughl 14y agoBe the quickest to Bing or DuckDuckGo; They are less spammy
- deleted 14y ago[deleted]
- joshualastdon 14y agoLet use an analogy in education: A professor in college might allow the class have an open book exam, however you still see a number of people who might not pass that exam. Why? Well, there were two kinds of people in that class: 1. The smart ones who actually know the material. 2. The others who know nothing about what had been taught so far in the class. The students in the first category will pass the exam but the second crowd perform poorly, because even though the book is in front of them, they don't know what to look for, especially in a timed test. So the way I see this is that googling will help those who already have knowledge of the programming concepts, not those who have no idea of what they are trying to implement at all. In reality those who can use google to get what they want can also figure it out without google, even though it might take longer of course.
- stcredzero 14y ago> chances are, unless you’re an absolute genius, the collaborative efforts of an open source project will beat whatever you can do in 8 hrs. It depends. There could be an information asymmetry that leads most people down the wrong path, and an open source team could be subject to groupthink that leads them down that path faster. A lot of what distinguishes experienced programmers from inexperienced ones, is that experienced programmers generally know how to mitigate non-obvious risks. What distinguishes great experienced programmers, is that they know how to mitigate such risks more efficiently.
- ichinaski 14y agoMany of the best programmers I've seen google stuff. So do many of the worst I've seen. The difference is the former won't type a single statement without knowing what it does first, while the latter will just copy and paste something that seems to work, regardless they understand it or not. The last time I came across some copy-pasted code that was giving some troubles, and after asking the owner of that code what some stuff did, he was unable to tell me, after claiming it was just fine, because the code he copied was from a trustworthy source. This, I guess, is a bad practice of how googling things should work.
- jrussbowman 14y agoI agree to an extent, and I do use Google a lot when programming. However, I'm a systems administrator by trade and not a programmer. I have been in cases when I've wanted to write code in a cabin in Nova Scotia with no internet and wasn't able to get everything accomplished because I was unable to Google and didn't have the docs on hand. I'd be really wary of telling people not to remember stuff and rely on the internet. The primary reason being sometimes you can't access the internet. As a sysadmin it's my job to understand this and document everything. It was personally embarrassing when I realized all I had to do was download a couple pdfs and I'd of been fine. You may not need to keep everything in your head. However, having direct access to knowledge is important. If it's not in your head, then keep it in a local file or what I'm really fond of, get the book.
- alainbryden 14y agoMicrosoft recruiters are doing their rounds for Seattle, and I was just asked over the phone how I would implement a quick sort. The answer I wanted to give would have been something like this blog post. As a developer I would never waste valuable time trying to roll my own version of an algorithm that's probably available on Wikipedia and optimized for every programming language imaginable. I guess what they were looking for was some buzz words like "divide and conquer" and "big oh n log n time". I understand interviewing community college graduates with no experience like this, but young adults with 6 years of SE behind them? Ridiculous.
- fencepost 14y agoIf I worked at Microsoft? I'd implement a Quicksort by checking within the existing codebases that I had access to and that were in the same language to see if it had already been done, then patch what I found to match my needs for comparisons, etc. Note: one big reason for this is licensing - if it was developed in-house, odds are that licensing issues are a non-factor but if it came from "The Internets" then life may get strange. Strange is bad.
- rapind 14y ago"the collaborative efforts of an open source project will beat whatever you can do in 8 hrs" is often untrue. You need to have the ability to read and understand at least part of the code to make sure said project doesn't have fundamental flaws or sub-par code.
- Goladus 14y agoThe flip side of this is that deep understanding of fundamentals helps dramatically when it comes to asking the right questions and filtering results. In my experience, google is often secondary to first-class reference materials (language documentation, man pages, etc.)
- taylorbuley 14y agoThe platitude sounds like something I can get behind but it's so much more than knowing how to search -- it's knowing where to search. I know programmers who are great at searching but have no idea which online information sources to avoid, which is at least half the battle. In a world of copy/paste programmers, bad code gets worse as it's regurgitated around the web.
- 6ren 14y agoIs a great memory a requirement for great programming? http://stackoverflow.com/questions/572620/is-a-great-memory-a-requirement-for-great-programming/572673 http://stackoverflow.com/questions/572620/is-a-great-memory-... Alan Kay: in programming there is a wide-spread 1st order theory that one shouldn't build one's own tools, languages, and especially operating systems. This is true—an incredible amount of time and energy has gone down these ratholes. On the 2nd hand, if you can build your own tools, languages and operating systems, then you absolutely should because the leverage that can be obtained (and often the time not wasted in trying to fix other people's not quite right tools) can be incredible. https://docs.google.com/viewer?url=http://www.vpri.org/pdf/m2004001_power.pdf https://docs.google.com/viewer?url=http://www.vpri.org/pdf/m...
- static_typed 14y agoI sat with a newbie programmer the other day. We sat there and made good use of third-party libraries, frameworks and code to get things moving, and concentrate on the core problem at hand. Now, we had to Google a bit to install the third-party and dependency stuff, and tinker with configuration to get it all ready. Eventually we delivered the GUI version of 'Hello World', and the newbie programmer had already progressed several steps when he remarked: "So, modern programming is basically building my code on top of other people's code, without really knowing how it all works, if it is really any good, and hoping it all works well enough to make the whole thing work". Any he was right. Long gone is the time when we understood all the components and code for our entire domain. And we are often the poorer for it.
- danneu 14y agoThe newbie's statement sounds like a romantic platitude. You should've shown the newbie programmer that programming is the art of abstraction and that there was never a pre-modern era where "we" were all toiling away with omniscient domain knowledge. We lean on other people's abstractions because we're mortal and the things we decide to abstract have a surface area that overwhelms the problem we're trying to solve. Rather than being poorer for it, we're immensely enriched with the ability to solve the problems of our domain with the same vernacular that expresses our problems. Total providence.
- fotoblur 14y agoIts not only resourcefulness but the ability to know what pieces you need to build the project. That is harder to find by Googling.
- calhoun137 14y agoI'm sorry but no. This article should be called "The best programmer I know can quickly understand things he finds from google, but I don't really know what he's doing that makes him so awesome". Sure googling something fast can be a nice little boost to productivity, but only if you know what you are doing. If I drag and drop code from my web browser instead of using copy paste, I might save a few seconds after doing it 50 times; but if I totally fuck up my code-base because I don't know what the code is doing, then productivity is going to decrease significantly when the entire team gets backed into a corner and has to take the time to figure out where the bugs are, if/how to rewrite core systems, and hopefully this wont happen, but where the security holes are that let a hacker pwn your DB or worse.
- steeve 14y agoMakes me wonder then why Googles presses so much on academic CS knowledge during their interviews.
- seanlinmt 14y agoEven faster than googling it up is searching through evernote or whatever app you've used to organise your cheatsheets. Evernote has become my external and more organised storage for my brain.
- seanlinmt 14y agoEven faster than googling it up is searching through evernote or whatever app you've used to organise your cheatsheets. Evernote has become my external and more organised storage for my brain.
- jezclaremurugan 14y agoThe best ones are those who know _solutions_ exist or what to google for.
- lee 14y agoThe one thing that this post completely overlooks is that storing knowledge, even Googleable knowledge, can be very beneficial. Knowledge can help develop intuition, to know which pieces connect to each other. For example, in a programming competition you could google various algorithms to determine solutions. But Google won't tell you "which" algorithms to look for, or give you the intuition you need to piece the correct solution together. A good analogy is chess. Before computers could beat humans, it was a pure game of human mind vs. human mind. Then the computer was able to dominate humans. And now, we're discovering that a human paired with a computer, can beat either alone. But that human still needs to have the intuition, experience, and knowledge to know how to work with the computer.
- re_todd 14y agoThe best programmer I knew was quick to google, but so was the worst programmer I knew. If you're slow to google maybe it's the sign you are an intermediate programmer.
- kamaal 14y agoRe framing this a little- "The best programmers are the quickest to discover things". When I was a kid, and when I first heard about open book exams I was amazed. Well if they allow you to carry your textbook to the exam hall you should ace through the exam through flying colors, right? Not quite, later when I studied the question paper I realized it was so framed, that the test was not to copy the facts from the textbook and answer as such. But the questions were basically problems and you will be forced to look up the text book as a reference with your own problem solving ability being the core test being tested here. In such cases it makes far more sense, to simply allow the person to carry the textbook to the exam hall. Its easy to get access to a textbook/google/documentation/manual/whatever. And spending your effort to remember facts is a waste of time and energy which are often in short supply. Now extending this same philosophy, what if the solution patterns to large number of problems is readily available? In such a case it makes more sense to focus on a) Quantity of problems one can solve b) Quality of problems one can solve. Instead of learning the solutions to the problems, use the solutions to do something big, or use the solutions to do a lot of things. If you are wondering why the CS illiterate guy next to you is as equally productive as you who has read some thousands of pages of CS literature, its because when solutions are available easily and for cheap- Putting everything in your brain is a pointless exercise. What matters is getting things done.
- 8ig8 14y agoThis has to be one of the widest pricing plan spreads I've come across: $99, $699, $4999 https://framebase.io/pricing.html https://framebase.io/pricing.html
- LookACamelToe 14y agoI don't really understand their place in the world. For something that can be done for free with youtube or vimeo. It's pretty non-sensical! Oh yeah, 700 per month for "Export to YouTube / Vimeo".
- hotshothenry 14y agoI Googled "how to handle error messages in php" for your co-founder and came up with this http://www.w3schools.com/php/php_error.asp http://www.w3schools.com/php/php_error.asp, since clicking on the "Get an invite" button (on https://framebase.io https://framebase.io) while leaving the email field blank throws an exception error: Error: exception 'Exception' with message 'MDB2 Error: null value violates not-null constraint, _doQuery: [Error message: Could not execute statement] [Last executed query: EXECUTE MDB2_STATEMENT_mysql_8edec1a3e8682362d38c86df48ba2cd8 USING @0, @1] [Native code: 1048] [Native message: Column 'email' cannot be null] Executed SQL: INSERT INTO `waitlist` SET `email` = ?, `created_at` = ?;' in /var/www/.submodules/TinyDb/TinyDb/Orm.php:630 Stack trace: #0 /var/www/.submodules/TinyDb/TinyDb/Orm.php(194): TinyDb\Orm::check_mdb2_error(Object(MDB2_Error), Object(TinyDb\Sql)) #1 /var/www/.submodules/TinyDb/TinyDb/Orm.php(165): TinyDb\Orm::raw_create(Array) #2 /var/www/.submodules/Framebase-Models/FSStack/Framebase/Models/Waitlist.php(20): TinyDb\Orm::create(Array) #3 /var/www/Includes/FSStack/Framebase/Controllers/register.php(38): FSStack\Framebase\Models\Waitlist::create('') #4 [internal function]: FSStack\Framebase\Controllers\register->__post_waitlist() #5 /var/www/.submodules/CuteControllers/CuteControllers/Base/Rest.php(25): call_user_func_array(Array, Array) #6 /var/www/.submodules/CuteControllers/CuteControllers/Router.php(28): CuteControllers\Base\Rest->route() #7 /var/www/index.php(47): CuteControllers\Router::start('/var/www/Includ...') #8 {main} ...thought that might help
- krapp 14y agoYou should have googled 'how to validate required fields before passing them to SQL because someone will click the button without having added an email...'
- LookACamelToe 14y agoGood programmers google. Bad programmers google too! But good programmers don't make a post 2 years later attacking facebook for rejecting them, do they, Tyler?
- RileyJames 14y agoWhen I was learning Ruby & Rails my co-founder told me about http://ruby-toolbox.com http://ruby-toolbox.com, and while it's still not perfect for beginners, it goes a long way to solving the "what to google / what to use" problem. If you have a very basic idea of what you're trying to do it can generally suggest a few options to use (gems). I've also used it to work out the category of the problem I'm trying to solve. I'd love suggestions regarding more sites where you can search in a problem space as opposed to a specific bug or issue.
- lelele 14y agoMore like: the most clueless programmers are the quickest to Google. If you know what you are doing, there isn't always an urge to look for ready-made solutions.
- lelele 14y agoI have been away for a while. Has HN fallen so low in the meantime? Time to change its name to Code Monkey News, maybe?
- fnbaptiste 14y agoAgree and disagree. I'm very good at finding solutions fast with Google, but those solutions only work for me because I know what I'm doing. I know several developers (or designers who do a bit of development) who rely too heavily on other people's code for every problem they encounter. As a result their work is often riddled with conflicts and often doesn't work quite the way they originally intended. Everything becomes a work around. When everything breaks they have no idea how to fix it. Lately I find if I know how to build it from scratch I'd much rather do that