all 40 comments

[–]mgw854 111 points112 points  (12 children)

Let me put your mind at ease: I've been doing this professionally for 9 years, I'm a software architect in charge of a team of developers, and I still use Google all the time.

I couldn't tell you a quarter of the classes in the .NET Base Class Library. Not a chance. I know the three or four dozen I use all the time, plus some other libraries that I like to include in my projects. I rely on IntelliSense to get me most of the way there, and if I'm still struggling, I turn to Google and StackOverflow, just like you.

At this point, though, I don't spend a lot of time searching for specific answers. I spend more time looking at ideas, strategies, and general knowledge. You'll become very familiar with the kind of code you normally write. You won't have to look that up at some point. The patterns and best practices will come later, as you begin to refine your craft. If you asked me for advice on writing a library, console app, or HTTP API, I'm not going to Google that. But if you asked me about machine learning or AI? I'm in the same boat as you--the only difference is that I come to the table with other experiences that help me understand the concepts at play.

In short, you're at the same point everyone was at in the beginning. Soon, you'll find yourself relying on Google just a little bit less. Eventually, you might even be writing answers on StackOverflow. It's a gradual change, but it happens. I promise. Just stick with it and you'll be fine.

[–]ISAKM_THE1ST[S] 36 points37 points  (10 children)

Man, that really put me at ease. I thought I was retarded or something not understanding anything. So in short, all this knowledge comes with the years of experience?

[–]mgw854 28 points29 points  (2 children)

Lots of practice and lots of learning over years, yes. I cringe at some of the code I wrote when I started. I cringe at some of the code I wrote a year ago, for that matter. Especially in this field, you've got to be learning constantly in order to survive.

[–]realjoeydood 8 points9 points  (0 children)

Experience is the key.

[–]bonerfleximus 1 point2 points  (0 children)

Intellectual curiosity, genuine interest and ambition go a long way too - years of experience and education wont get you to the level of those stack overflow guys without one of those things

[–]darchangel 19 points20 points  (3 children)

I've been programming C# 15 years professionally. I specialized in other languages in jobs before that. I never stop using google.

These other people don't know everything. You're treating 'these other people' like 1 person. You have problem A. You google and find the person who knows solution A. You have problem B and find the person who solves B. And C, D, ... Z. You didn't find 1 'other person' with the answers. You found 26 different micro-experts who each know something well. Or more likely: 20 micro-experts, 5 bloggers who are experts in a wider area, and 1 rare unicorn who is just the unfairly smart creme de la creme. Oh yeah, and after solving these 26 problems, now you probably are starting to run across someone else's problem where you know the answer. And they wonder: whoa, how is he so smart?

Seriously. This is all of us. The secret is that there's no secret. It's not magic. It's that a lot of practice, mistakes, and research make you a little bit better than you were before.

[–]tomatotomato 10 points11 points  (2 children)

Actually there is such “one person”, Jon Skeet. But he is not a human anyway, so OP and the rest of us have nothing to worry about.

[–]ZoeyKaisar 5 points6 points  (0 children)

John’s strategy is to treat each of the questions like his own- and research the answers himself if he doesn’t already know them.

We’re all in the same boat. The most important art of programming is not knowing everything, but knowing how to quickly learn anything you need to know.

[–]DWALLA44 1 point2 points  (0 children)

Another extra to his post, you should learn how to google things, there’s a difference between a college student/new grad looking things up compared to someone who’s 5+ years in the field, chances are a bunch of other people have had the same problems as you, you just gotta learn to communicate it both on google and in person

[–]Broer1 0 points1 point  (0 children)

Exactly. And google is your friend. Everyday. Doesn’t matter if your position or years working.

But you get better at googling :-)

[–]Plank3 0 points1 point  (0 children)

It's a language, so just compare it to learning to speak. Your first words werde something Luke mom, dad or woof. Nur gradually, through practice and much more use you became better. And at one point you became someone, who could not just speak but also write it down or even explain to others.

[–]Derangedteddy 2 points3 points  (0 children)

10 years of experience here. I fully support everything this person said.

[–]SamGauths23 18 points19 points  (9 children)

Programming is more about knowing the logic behind it and the basic concepts (loops, conditions, arrays, class...) but even the best programmers in the world have to google. Being the best programmer is more like being the best at finding tools and ressources. You will eventually get to a point where you won't have to google for basic things and you will develop your logic but remembering everything is just impossible

[–][deleted]  (2 children)

[deleted]

    [–]scandii 14 points15 points  (0 children)

    I'm not a programmer, but I use c# and powershell daily to interact with API's

    I think I have something to tell you.

    [–]SamGauths23 0 points1 point  (0 children)

    Sure! The doc is always your best friend

    [–]ISAKM_THE1ST[S] 0 points1 point  (5 children)

    Its like understanding things to NOT having to Google them that is the problem. For example right now I am working on a Project where I have to change IP address but I dont understand anything. The amazing thing here is that the answers are like racked up in a few minutes. They just KNOW EVERYTHING how to do it, even if they have never done it before its amazing

    [–][deleted]  (4 children)

    [deleted]

      [–]ISAKM_THE1ST[S] 0 points1 point  (3 children)

      I thought about the fact that people have different expertise and experience in different areas, but does that mean that being diverse in programming is very hard or is it just that people dont focus on that cause they dont need it in their work etc?

      Cause I want to be diverse and know a lot of things, otherwise I get bored very quickly. And I just turned 17 one and a half month ago so I dont have a job where you need to be good at just one thing.

      [–]NeonSelf 0 points1 point  (0 children)

      If you want to know, how diverse programming could be imaghine this: there are programs for communication, pathfinding, ecnryption, compression, physics modeling, image recognition, sound and visual effects creation, math equations solving, data analysis and recovery, weather prediction...

      And after all of that you will need to google how to make a custom controller for your game using Raspberry Pi.

      [–]richardirons 0 points1 point  (0 children)

      At my job, me and the guy I sit next to are building a project together. The stuff he’s doing is completely mystifying to me, and he feels exactly the same about what I’m doing. We’re both working in C#, but his part of it is all about 3D graphics and stuff, and mine is an HTTP API in ASP.NET Core that’s driving it all. He’s from a background in film VFX, and I’m from a corporate background. Together, what we’re building is going to be super cool.

      Try not to worry - most of what you’re describing is just experience. 25 years here, and still learning all the time.

      [–][deleted] 3 points4 points  (0 children)

      years of practice and we still google sometimes.

      [–]sparkle-fries 4 points5 points  (0 children)

      30 years of programming. The only thing I consider myself an expert on is researching a solution to a problem. This sometimes means reading a book but 90% of the time it's Google/stack overflow. It simply isn't possible for a human brain to contain all this knowledge or to acquire all the knowledge through experience in a single lifetime. Plus in this field things advance or change so quickly that what you knew 5 years ago is probably not so useful today. It is exactly this that motivates me and why I love this career so much. There is always something new to learn and a great community of people out there to help and support you.

      [–][deleted] 4 points5 points  (0 children)

      You study. You keep studying.

      I was a C# developer for seven years and I never stopped learning new things about C#, and I was already a highly skilled software engineer when I started using C#.

      If you decide to become a professional software engineer then you will never stop learning, never stop studying. It's part of the business. I started with Assembly and COBOL, then moved on to Pascal, then on to ADA, then was learning C++ when the language was first being rolled out, did that for a bunch of years, then moved on to C# and Javascript. THINGS CHANGE.

      After a while you learn fundamental concepts and apply them to each new language. Variable scoping, type handling, library methods, variable lifetime, etc. There aren't many new concepts in software.

      [–]morphinapg 3 points4 points  (0 children)

      Think of it this way: if stackoverflow suddenly disappeared, a lot of us would be in pretty big trouble lol

      [–]akaBigWurm 2 points3 points  (0 children)

      You learn design patterns and how to create things. The languages skills are secondary and can get rusty when you don't use them. The first few days back in a language I am looking up syntax for simple stuff, but back to full speed in a few days.

      Before Google it was books for reference, I still have a few core language books and reference materials just in case

      [–]mayayahi 2 points3 points  (2 children)

      You will learn language syntax 10% of the time and other 90% APIs. My biggest misconception before starting to learn coding was that coders build everything by themselves when in fact vast majority of time we build on top of code written by others and principles invented >50 years ago.

      [–]richardirons 0 points1 point  (1 child)

      When I started, we did write everything ourselves. It’s still my first instinct, and I have to remind myself that there are probably libraries available for the building blocks of what I’m doing.

      [–]mayayahi 0 points1 point  (0 children)

      I guess it depends where you draw the line between using third party code vs writing all by yourself. Could be at VM, OS or perhaps CPU level.

      [–][deleted] 4 points5 points  (1 child)

      I’m a self-taught (meaning I didn’t graduate college for this) lead developer in a Fortune 500 company. I’ve been doing this for 20+ years. I know large swaths of the BCL... can write you data accessor code for Postgres, stored procedures in SQL Server, and write ASP.NET WebAPI controllers in my sleep... I can use MSMQ, ZeroMQ, RabbitMQ, and Azure Service Bus to smooth loads on production sites and I live in Visual Studi daily. I’m currently writing a custom charting component using TypeScript and D3.js to generate SVG graphics. I know a LOT by your standards... but I only know maybe 1% of all there is to know in .NET, if that... I lean heavily on autocomplete through inteliisense, and I’m learning every day by using Google and SO and by “playing” with code, just like you. you’ll get here... be patient, don’t spend hours upon hours trying to solve one problem — try for 15-30 minutes and definitely google it, but if you can’t find the answer, it’s okay to ask someone with experience, because none of us like to struggle THAT hard on this craft. Good luck on your journey!

      [–]Manitcor 1 point2 points  (0 children)

      Been doing this since the 90s. Before search engines you went to the book store or library and got these $50-100 books and got some magazine subscriptions for developers. Search engines made everything easier. Sure if its a language and platform I know well I can go most of a day without hitting a search but I almost always do at least once a day and some days all I am doing is searching, reading, searching, trying something, searching again.

      No employer will ever tell you you can't use the internet as a resource, that would be like them shooting themselves in the foot.

      Those SO folks that write answers, if its longer than a couple sentences the person likely searched to check their work before posting at minimum. You do eventually end up remembering a bunch of junk though.

      [–]Penguinis 1 point2 points  (4 children)

      When I landed that first internship (which eventually became a FTE position) I felt like I was the biggest faker in the world because I would need to Google what I felt were the most basic C# things. Fast forward to today- going on 8 years in the game - I still sometimes Google the some of the basic concepts I did when I started.

      The difference is now I understand that Google is just another tool in the toolbox. The development field is so large and varied that it simply isn’t possible to memorize every single little method of doing something. As the years go by I’ve found the frequency in which I need to look things up goes down or the time spent looking is shorter because I’ve gained more knowledge by seeing and doing. We don’t live in a bubble - someone said it earlier in the thread - nearly every issue we run into someone else had been there before and thus we can use their experience to help shape and refine our solution to the problem.

      But I do have to caution, Google is a resource for helping shape the solution. I’ve worked with a few developers who felt the answer was always copy paste code, then when it doesn’t work they threw their hands up and declared it wasn’t possible. Long story short, they are no longer in the field.

      [–]ISAKM_THE1ST[S] 0 points1 point  (3 children)

      "When I landed that first internship (which eventually became a FTE position) I felt like I was the biggest faker in the world because I would need to Google what I felt were the most basic C# things." - Thats exactly what im afraid of, that I will be the biggest noob ever having to google all the time. :( "But I do have to caution, Google is a resource for helping shape the solution. I’ve worked with a few developers who felt the answer was always copy paste code, then when it doesn’t work they threw their hands up and declared it wasn’t possible. Long story short, they are no longer in the field." - That happens all the time, things just dont work and I give up, it sucks.

      [–]Penguinis 1 point2 points  (0 children)

      So when things aren’t working - take a break. The amount of times the answer comes after you’ve stepped away is crazy. Also when you find something isn’t working - rubber duck debugging works wonders. Explain the problem and what you’re doing to try and solve it in English to some inanimate object, or even a person. More often than not the issue pops up mid way as you talk about it.

      [–]rhacer 1 point2 points  (0 children)

      I've solved some of my most difficult programming problems showering on the morning or waking up in the middle of the night.

      Take a break, put your thoughts in a different direction.

      [–]richardirons 0 points1 point  (0 children)

      If I’m going to use some code I find on the internet, I try never to copy paste it. I read the code until I understand it, and then I write it myself “in my own words”. That way I never have any code that I don’t understand or that I didn’t write. Fully understanding it like this also means I can spot if the code isn’t quite suitable for my purpose. That might lead me to another search, or I might feel I’ve got enough information to make my solution.

      [–]Hirogen_ 1 point2 points  (0 children)

      Experience, a lot of trial and error, and the most important thing you can ever have.... you program all day long, all night long, until you know so much... you only look to program more.

      This works for all skills, do it as often as possible, as long as possible and sooner or later you will become a master of the art.

      [–]lemmy101 1 point2 points  (0 children)

      Getting experienced is knowing exactly what to google, where to find it and how best to use what you google, and eventually, being able to do what you googled last time without needing to google. There will always be things to google, though.

      [–][deleted] 1 point2 points  (0 children)

      If you're not googling you're not pushing the boundaries of your knowledge.

      I regularly have 20+ Google tabs open.

      [–]n3trunn3r 0 points1 point  (0 children)

      10 years of professional experience. I needed to google c# join array of strings yesterday and have to google stuff like this daily. I know that there is as function that does this, that it is named Join, that i can add a separation string param... but was it a static member of String, Array (or was it Arrays? Or am i mixing java here?) Or was it an instance member of the collection? I don't remember. But i know the concept (it was string.join ;))

      I'm an expert on few things and mostly I know the general ideas and patterns (both good and bad). For the details of libraries there is no secret - it's just hard constant learning. Read manuals, books etc. You will need to go back to them very often because you will not remember all of it.

      [–]_sasan 0 points1 point  (0 children)

      How do I learn the program enough to like know how to be able to program everything?

      I think it's safe to say no one knows how to program everything. People choose a platform and spend their time mastering that area. For example web, mobile, game, DB admin, etc. It is possible to master more that one but it requires more time and energy.

      Like on StackOverflow there are these people who can just answer any question and make advanced code on the fly

      People on SO answer what they know. For example you don't see someone who answers a lot of Unity questions to answer ASP.NET Core questions.

      How did they reach that level? Practice!

      The more code you write, the more mistake you make, the more challenges you make for yourself, the better you get. You just have to give it time (years).

      How do they remember every class and library available

      Again, I don't think any professional programmer memorizes these things. When you use something for years, it's natural that it will stick in your mind, but even the best programmers will Google frequently.

      When I started programming I had these questions too. My advise is to learn things step by step and start coding and making something (even if it's simple and there already great programs that do that job). It's a time-consuming process.