249

I’m a junior developer and working every other three months in a software development company as part of my corporate studies.

Even though I’ve been programming for almost 1 year (3 x 3 months work experience + side projects) I quite often have to check the documentation and/or Stack Overflow during my workday. I fear this makes me look unprofessional or more inexperienced than I actually am (I’m quite comfortable designing and building software, but often have to search for terms like “PHP/JavaScript function that does XYZ”). In most cases I should already know this, as I have this already used before but want to double check before making mistakes.

The reason for asking this question is that I get kind of mocked for using Stack Overflow/documentation so frequently which makes others and myself doubt my abilities. For me it’s a natural part to work more efficiently and become more aware of the language. Someone once told me something like: “A surgeon cannot read his books every time he has to operate on a patient.” Which is in my opinion nonsense.

I’m also asking for the future; e.g. if I have to write code during an interview for another job I guess you shouldn’t use the documentation.

  • 518
    I'm a senior and I usually have at least 3 browser tabs with stack overflow and 2 with documentation open at any given moment. – Erik Nov 29 '16 at 10:10
  • 245
    “Professional” does not mean the same thing as “perfect photographic memory”. – Paul D. Waite Nov 29 '16 at 11:44
  • 5
    The reason for asking this question is that I get mocked for using Stack Overflow/documentation so frequently which makes others doubt my abilities, stupid question, who are those who are mocking you for using SO and so on ? Manager, old generation IT that still rewrite framework on their own instead of using existing robust ones, someone else ? – Walfrat Nov 30 '16 at 12:37
  • 9
    just wondering, why do you think documentation exists, if you're not supposed to use it? – Apologize and reinstate Monica Dec 2 '16 at 0:10
  • 2
    Unclear what you're asking. If you're asking about documentation alone it should be obvious that the answer is 'no'. If you're including StackOverflow as 'documentation' I would regard you as committing a fallacy, and if you're asking about whether being seen to use StackOverflow a lot is professional, it is at least a complely different question from one about using documentation. – user207421 Dec 2 '16 at 2:14

15 Answers 15

476
+50

Don't worry: you are a professional, and you are acting like one.

Professionals use all resources available to get the job done, including documentation, code written by others (libraries), help from experts, etc.

It's not unprofessional to need to consult an external resource. In fact, it would be unprofessional to not use documentation if you aren't sure how something works.

Does your level of reliance on documentation show inexperience? Sure, to a certain extent. But you are inexperienced. After only a few months on the job, you won't know as much as someone with many years of experience. That's just a fact, and no one is likely to hold it against you.

However, even developers with 20 years of experience will be checking the documentation for some things. This is always part of a developer's toolkit.

Programming tests are a slightly different thing.

Since they are designed to assess your own knowledge and ability, you will often have to complete them without documentation. This isn't because documentation is bad; it's just that, in the artificial environment of a brief test that attempts to assess your overall capability, external resources may confuse that picture.

However, typical programming tests are conceptual in nature. They are typically about your ability to create an algorithm, design a solution to a problem, and follow good coding practices. These are not things you would get from documentation anyway. Getting an occasional minor syntax detail wrong is not likely to affect your assessment much.

  • 111
    Nothing's worse than a programmer writing a buggy solution for a common problem. – Chris Nov 29 '16 at 12:42
  • 9
    @Chris Almost as bad, however, is a (even worse if supposedly experienced) programmer coming up with an O(n^3) or O(n!) solution to something that can be solved in perhaps even O(n log n), particularly when the input data set can be non-trivial in size. Documentation can help you write the O(n^3) well, but it can't (as easily) help you come up with the O(n log n) approach. – a CVn Nov 29 '16 at 14:53
  • 4
    @BЈовић I simply meant that a beginner has to check the docs more often than an expert. – user45590 Nov 29 '16 at 15:11
  • 13
    And after more years of writing software than I care to mention, I STILL consult the documentation. (Indeed, I have editor macros that will open on-line documents for anything that has man pages.) For one thing, there's a whole lot of stuff that just wasn't around when I started: CUDA, MPI, OpenMP, and likely stuff that someone invented just last month that I may need soon. For another, I've found it's much more useful to know where to find what I need, than to go around believing I know everything :-) – jamesqf Nov 29 '16 at 17:49
  • 35
    This is a good answer. I'd also add that a professional developer constantly pushes the boundaries of their knowledge and skills. If you aren't frequently needing to look things up, it means you are probably not working outside of your comfort zone very often. – thomij Nov 29 '16 at 19:52
125

Does using documentation as a developer make me look unprofessional?

No, it actually means opposite... as you are not disturbing your seniors by asking question which one can easily find on internet or through documentation.

Most of us devs can't remember thousand of lines of documentations... all the times, specially when we switch between technologies

I'm also asking for the future; e.g if I have to write code during an interview for another job I guess you shouldn't use the documentation.

Most reasonable companies would like to test the logic/structure you come up in a coding test.. not that much about syntax.

  • 19
    "No, it actually means opposite... as you are not disturbing your seniors by asking question which one can easily find on internet or through documentation." While you should of course look for your own answers to simple questions, I think the tone of this is wrong: your coworkers would probably prefer to be "disturbed" with questions than to have you waste a whole day trying to figure out how to get started on a task. So don't be afraid to ask for pointers/direction, but stick to the docs for things like "what's the order of parameters of this function?". – Mikkel Nov 29 '16 at 18:31
  • 38
    @Mikkel I think you missed the part saying... "easily find on the internet or documentation"... – Mathematics Nov 30 '16 at 7:41
  • 2
    As a professional software developer, it's much better to read documentation, find documentation, and understand how to self serve answers from documentation than it would be to rope in other coworkers. – ARun32 Nov 30 '16 at 19:10
  • 2
    @Mathematics i think the point Mikkel actually think about is that you start finding the solution on the internet because you think it's easy to do so, then turn out it's not and you stuck on searching for it for all day because you forgot that you can simply ask someone else. – Ooker Nov 30 '16 at 20:00
  • 3
    @Mikkel If you find yourself unable to get traction, yes, but consulting the internet for obvious solutions is an excellent (and often the best) first step. Often, this sort of initial research will help you better formulate your questions to others when you do hit a wall, which makes it easier for them to help you. – jpmc26 Dec 1 '16 at 19:54
63

Someone once told me something like: “A surgeon cannot read his books every time he has to operate on a patient.”

Whoever told you that doesn't know how surgery works. Unless it's a very common procedure the surgeon has practiced a hundred times, the good ones spend a great deal of time studying before every patient they see. They also spend many years in medical school studying a subject that hasn't changed much in several thousand years.

You are in your first year in an industry where new ways of doing things are being invented every week. You are inexperienced, so it should be expected that you have to look up things up frequently. As long as you have the foundations to know whether the solutions you find actually solve your problem and that you learn from the experience, there is nothing wrong with this. I have been a software engineer for 15 years and still need to look things up almost every day. A professional uses every resource they have available to get the job done.

  • 18
    a subject that hasn't changed much in several thousand years… What? Medicine hasn't changed? – gerrit Nov 29 '16 at 20:06
  • 18
    I was more referring to the human body itself. But you are right, medicine has changed quite a bit (though still not at the pace of IT). – Seth R Nov 29 '16 at 22:24
  • 9
    I too found myself zeroing in on that surgeon analogy the OP had been told as being grossly out of touch: While I'm sure many surgeons under-prepare for surgeries, because people are generally deficient, I'd say it's definitely the case that one of the biggest factors of what makes the best surgeons is that they do routinely review the relevant material in advance of any given procedure, and go out of their way to refresh/update their knowledge habitually. – mtraceur Nov 30 '16 at 8:34
  • The surgeon analogy is only valid in my opinion when doing "development in production". The analogy being that if you take too long, or fail to implement the fix in time, your patient dies. Even surgeons perfect their art on cadavers before "operating in a production environment". – Aron Dec 7 '16 at 3:24
29

Professionalism and knowledge are two completely different things.

Looking up things from third-party sources does mean you lack knowledge, not lack of professionalism. Lacking knowledge is a topic for itself, but overall there is no person knowing everything.

If you know about your lack of knowledge and handle it by looking things up from third-party sources, this mean you have a professional strategy to solve your specific problem of lacking knowledge.

Not looking things up while not knowing that stuff is unprofessional, but this is not your case.

Further reading on an effect which contrasts your "strategy of using documentation": The Dunning–Kruger effect

  • 11
    I believe many people, including me, overestimate what they know about the Dunning - Kruger effect – Ooker Nov 30 '16 at 20:03
24

Does using documentation as a developer make me look unprofessional?

No. Remembering minute arbitrary details is a waste of your resources. You would have to remember a lot of those both in PHP (which lacks a bit on consistency side) and in web development in general, if you get familiar with several languages and a dozen frameworks.

I get mocked for using SO/Documentation so frequently which makes doubting my abilities

This may be not the most efficient way to solve your tasks.

Do you use any IDE? Do your colleagues use any? Because looking up those minute details can be delegeted to IDE's autocomplete feature. Using autocomplete is more efficient than switching your attention to browser and searching for an answer there.

If your colleagues use their IDE's autocomplete and you use Google instead then that could look unprofessional - not because you consult docs but because you are doing it inefficiently.

If your colleagues rely on their memory and you rely on autocomplete you'll be able to oupterform them in tasks that use some framework none of you are familiar with, which is not that rare in web.

Master your tools and show performance, that's professional.

  • 2
    How would autocomplete (a feature I personally loath) help you to figure out what a particular function does, or what its arguments are? – jamesqf Nov 30 '16 at 4:19
  • 4
    @jamesqf, when completion restricts itself to variables with compatible types for the argument at the cursor then you can pretty much just mash the keyboard and get viable code in no time after all. You can also speculate on function names and see if completion comes up with a non-empty candidate list. Again; mash, mash, build, and ship. Coding is so easy! – sh1 Nov 30 '16 at 9:17
  • 2
    @jamesqf with an inconsistent language like php particularly, just getting name suggestions and parameter orders is a large boast: imgur.com/a/lVFmA – Steve Nov 30 '16 at 11:16
  • 1
    @jamesqf > How would autocomplete help you to figure out what a particular function does That's not OP's question. OP has to deal with stuff like this and this and googles "PHP function that does XYZ” regularly. Well, just start typing what you remember about function's name and autocomplete will offer options. As for expected arguments, they are usually listed too. – Daerdemandt Nov 30 '16 at 21:38
  • @Steve This would only help if you already vaguely remembered the name of a function, and in particular what the name starts with (as in your example). As a comparison, suppose you are programming in C++ and you've forggen the name of the function that converts a character from lowercase to uppercase. The answer is 'toupper', but if you have forgotten this fact, autocomplete will not help you at all. – Brandin Dec 6 '16 at 15:21
19

Others have provided solid answers, but nobody really addresses this head-on; bold emphasis is mine:

The reason for asking this question is that I get mocked for using Stack Overflow/documentation frequently which makes others doubt my abilities.

Who are these people “mocking” you and how do you know it “…makes others doubt [your] abilities?”

This all sounds like garden variety (aka: common) hazing to me. If you are a junior developer you are naturally in a hierarchy where others will test you and push buttons as part of their own hazing behavior. This happens whether they are conscious about it or not; it’s just par for the course.

At the end of the day, every single person in the world uses reference tools to get work done. Heck, do lawyers and doctors not have tons of references and books they refer to constantly? Programming is no different.

Your job as a programmer is to bridge the desires of a project with the reality of the code itself. Your job is not to memorize arcane nonsense. and if you do get to the point you can remember—and even visualize—arcane nonsense, then congrats! But that doesn’t happen overnight and sometimes doesn’t happen at all for some.

FWIW I have been doing computer work for 20+ and it’s only in the past few years I can literally visualize solutions in my head without writing a line of code. It‘s a skill that one grows into and cannot be demanded that someone has on demand.

16

Although this won't make you look unprofessional to a professional (the vast majority of the time) you might want to use caution in front of a naive customer or manager. Just as you, with almost a year of programming experience, aren't sure if professionals need to look things up, so people with even less relevant experience might also be unsure.

In fact, I have defended other developers on a few occasions when a customer of a consulting engagement said something along the lines of "why am I paying good money for someone who can't even write code without looking it up on the internet?"

This has been rare, but of course I don't know how many people got a bad impression but remained silent.

  • 3
    It depends greatly how tricky the code is. Consulting standard library documentation? (Great!) Consulting examples of a variable assignment after years of using the language? (Hmmm....) A database developer copying and pasting SQL from a one-vote answer found on Stack Overflow after minutes of searching, just to do a "select distinct" on a few columns? (What in the HELL is going on?) (Note: These are all real examples. And yes, I do mean a database developer.) – Wildcard Nov 30 '16 at 16:37
  • ""why am I paying good money for someone who can't even write code without looking it up on the internet?"" - "a fool and his money are soon par..." – TessellatingHeckler Dec 2 '16 at 1:58
  • Because you do not have enough foundation to understand what is said on internet or dont have time to do so. – joojaa Dec 4 '16 at 22:36
  • I personally have a tendency to type whatever it is I'm using from SO. Mostly so that I've written it at least once, which helps with remembering it the second time I need to look it up. – Wayne Werner Dec 5 '16 at 18:19
14

It is certainly not unprofessional to look things up when you are unfamiliar.

However, if you are not retaining that knowledge and are continually looking up the same things, then there could be a problem. That is inefficient. It makes you slower and that could be the cause of the mocking. You need to learn the basics of your profession to the point where you do not need to look them up every time.

  • 3
    I'd say having documentation readily available causes people to memorize less of what's available in the documentation. It's like "well, that function was called something like.... yeap, here's its description with all the details I'd ever need". – sharptooth Dec 1 '16 at 12:01
  • True, though with the sheer number of frameworks, languages, packages, modules, etc. available, it's really impossible to remember everything. Even if I've built k-means clustering pipelines a dozen times in MATLAB for various data sources, doesn't mean I can implement it right away for a client in Python without looking through docs. – Daniel Dec 3 '16 at 5:28
  • Did I say know everything? I said know the basics ( things you use frequently). – HLGEM Dec 3 '16 at 20:29
10

It is far more professional to read the documentation and get your code right than to guess and get it wrong. This is especially true of a language like PHP, where the standard library is haphazardly designed, hard to memorize, and full of gotchas.

Take, for instance, the mail() function. Did you know…

  • additional_headers does not have mail header injection protection. Therefore, users must make sure specified headers are safe and contains headers only. i.e. Never start mail body by putting multiple newlines.

    If you aren't aware of that caveat, then you end up introducing a security vulnerability.

  • When sending mail, the mail must contain a From header. This can be set with the additional_headers parameter, or a default can be set in php.ini.

    That means that your application's behaviour could depend on a global configuration setting. That is useful to know, so that you can avoid writing code that seems to work correctly on one machine, but isn't portable to another.

  • The $to parameter must comply with RFC 2822.

    You've seen thousands of e-mails, so you think you know what an acceptable e-mail address looks like, right? Read the spec — you would probably be surprised.

Sure, you might be able to crank out more code by not reading the documentation carefully, but it would probably not be professional-quality code. There is no shame in checking the documentation frequently to make sure you are using the language and libraries correctly.

  • 11
    There's no shame in consulting documentation—true. There's just shame in using PHP. :D – Wildcard Nov 30 '16 at 16:38
7

Looking up things that you are not sure about saves time and also allows you to check for better ways of doing something. Getting stuck doing the same thing over and over again inefficiently when there is a better way just by checking the net isn't good.

4

As others answer provided, there is no such thing as being unprofessional for checking the documentation especially considering you are junior, especially considering programming is vast and there is always a detail you can forget and you have a mission for your code to be correct.

There is however cases I would consider being documentation abuses.

I have a collegue who is sometimes unable to come up with his own solution about a given problem. Therefore, he sometimes proceed on checking the web about how to solve his problem. Last time, for example, he checked how a web framework was architecturing validators and error counters because he had a seemingly similar feature to design.

This is a case where what you are looking for is far too abstract for the Internet to help you. Worse, you could find solutions that seemingly fit, but in fact don't, because they are applied to a different use case. By trying to grab some premade code/architecture/pattern he would have more or less injected code in our base that may have worked, but would be hard to maintain because written by someone else for a different purpose.

I don't look the documentation often because I write code that uses mostly core language features (no framework) and I am gifted with a reliable memory when it comes to code, but I do use the doc everytime I'm stuck on something trivial. However, if I'm stuck on something higher level, the good thing to do is to seek help from a more experienced collegue, you will get a much better answer.

4

There is a difference between "professional" and "knowledgable". If there is some information that I need to know, and I have the choice between stupidly sitting on my chair and being stuck, or to check the documentation, then I check the documentation. That's absolutely professional.

If that information is something that a knowledgable person in my position ought to know, then looking it up may show that I'm not as knowledgable as I should be, but it's still entirely professional - since the alternative is not knowing it, and not learning it. Which (the not learning part) is entirely unprofessional.

It would be daft to assume that you know everything you should know, because every day there will be something fresh that you should know, that wasn't there yesterday. Even if you know something, how do you know that your knowledge is the best possible one? You consult documentation to find out if there is any better knowledge out there about the same subject.

It's rare that there is a problem that I can't figure out myself. But it takes time. Given the choice between taking one hour to figure it out myself, and five minutes using Google, spending the hour is unprofessional.

2

You have a few good answers already, but let me add a little twist...

I like people using documentation and it is a great sign for your professionalism.

Not using documentation

I know enough programmers that stumble along without a real plan for long spans of time, trying this and that by chance, picking through old source code where whatever they want to achieve seems to have been done already (but hasn't quite) and so on. Frankly, I detest this kind of approach. They never get very far, often have to ask people, seldom take advice and prefer to continue like this forever, seemingly.

Only tutorials?

People frequently googling for tutorials or code snippets including SO, without ever referring to documentation, irk me to no end. This behaviour is a huge trap, in my opinion. It leads to a kind of programming fueled by half-baked, arbitrary, unsystematic "knowledge". Those programmers tend to end up with a lot of prejudices. This is where nuggets like "never use git rebase", "never use not in in SQL", "always do XXX", "never do YYY" come from. They will find it very hard to think out of the box, come up with new ideas, form intuition about how to structure their applications and all that stuff that makes up great developers.

I would urge you to solve any problem first by looking at the documentation/reference, and then look for SO or other snippets.

Of course, there are exceptions. If your problem is quite obviously something like a bug, or something very, very, very special which is unlikely to be handled in any sort of documentation (e.g., a special combination of libraries/modules etc.), then by all means go straight to SO.

If it is something that could easily be figured out by documentation/API, then I would suggest sitting down and working on that particular part of your programming language / libraries etc. so your knowledge gets tighter.

Documentation

The best kind, for me, is a programmer who, when encountering a new topic, takes the time to really sit down, dig into it, get a good overview and good technical understanding. This is most times achieved (again, in my experience, with the many programing languages I had contact with) by reading the good old documentation including API references and so on. This can, in my opinion, never be replaced by anything else.

I do not find it outlandish to read, for example, the old C++ classics (good old paper), the Gang of Four Design Patterns, the (online version of the) "Programming Ruby" manual, the extremely well done Perl manpages, the Git book, certain RFCs, the HTML/XML/etc. specifications and so on from front to back. I would do and have done that even in my spare time and would, frankly, expect it from any programmer worth his/her salt (depending on what they are working with, obviously). I am also thoroughly aware that I am (at least in the companies I worked in, in the past decades) quite alone with this opinion.

(N.B.: Obviously you do not need to memorize huge lists of API references, but at least gloss over them to see what's available and what the "spirit" of the API seems to be.)

After being thoroughly comfortable with the topic, then is the time to look at 3rd party code for inspiration, or to look at older SO questions (or ask new questions yourself).

You might also find that when you have absorbed one field like this, it gets very easy to find answers by zooming right into the meat of wherever you get your documentation from (man pages etc.). At this point, the autocompletion of your editor might also just be enough already. And you might as well pretty soon know when something is just not possible with the tool you are working with, saving a lot of futile searching.

  • 1
    he ? Only tutorials? I do match to that one and i'm not in any part of the gang This is where nuggets like "never use git rebase", "never use not in in SQL", "always do XXX", "never do YYY" come from. But I agree that there are quite some developers that just search "how to do X" and getting the code without understand what they're doing. Those are not specially a "Only tutorial" but more likely a It works on my computer and I don't give a shit about the rest – Walfrat Dec 2 '16 at 15:16
  • Exactly, @Walfrat. I tried to formulate that part of my answer quite strongly but not in absolute terms, I hope you can live with that. ;) – AnoE Dec 2 '16 at 15:35
0

Your skill as a programmer is about how you can take in the full picture and design effective solutions, not how many APIs you can memorize. The goal is to get the job done correctly and efficiently. If you had to look up every API and every detail, then I would say you have some issues. I would expect a good developer to be thoroughly familiar with everything used frequently, recently, and routinely, but not waste brainpower on things used infrequently when they can be easily looked up. If you visited stackoverflow more or less once a day, not an issue; if you're on it most of your typical workday, that would be an issue.

-1

I get kind of mocked for using Stack Overflow/documentation so frequently

Other people's opinions of you don't define you, they only define them

Does using documentation as a developer make me look unprofessional?

No... part of being professional is competence in getting the job done. You are being mocked because your colleagues are bullies, not because of anything you are doing wrong.

“A surgeon cannot read his books every time he has to operate on a patient.”

Why not? I'm skeptical of that assertion unless there's an unusual time crunch. Using reference material only takes seconds.

if I have to write code during an interview for another job I guess you shouldn’t use the documentation

Depends on the rules of the interview, some allow it, some don't. In particular, if it is a test it may be allowed. It's a good idea to check first!

  • 2
    This answer adds nothing new to the already existing answers. Please remember to not repeat others. – David K Dec 6 '16 at 15:11
  • @DavidK Disagree. Where does anyone else make the point "Other people's opinions of you don't define you, they only define them" – Brad Thomas Dec 6 '16 at 16:24
  • 2
    @BradThomas Take it from someone who also has gotten smacked down for repetitive answers......anecdotal wisdom is not considered additional information, when something is better left as a comment, leave it as a comment, – NZKshatriya Dec 7 '16 at 6:28

protected by Jane S Nov 30 '16 at 0:21

Thank you for your interest in this question. Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).

Would you like to answer one of these unanswered questions instead?

Not the answer you're looking for? Browse other questions tagged or ask your own question.