9 ms·
As a coder I don't think I can do anything without the internet. Even if one specific site (maybe there are two actually, SO and GH) were down, it would wreck m
by lordnacho 5y ago
As a coder I don't think I can do anything without the internet. Even if one specific site (maybe there are two actually, SO and GH) were down, it would wreck my day and many of yours.
My style of coding is very intimately connected to having access to online resources. I regularly search for things like how to concatenate strings or the syntax of a for loop in some language. I also use the internet for higher level things like how memory management works on some system, or how something like an ECS architecture works. I also spend a lot of time looking for the right components to put into my own systems, so if GitHub were down it would bother me.
Basically I'd be useless without the internet. The coding tools themselves, all the examples of how to use them, and all the actual knowledge about how everything works is on there.
Perhaps the only thing that's actually my own input is the judgement about what things are important, which sources are reliable, and which people are authorities.
- TigeriusKirk 5y agoThe best thing about the world now is that I can develop software for purposes I know nothing about using tools I know nothing about.
- mostertoaster 5y agoAnd sometimes it is knowing what you don’t know that makes one a good developer. Leet code interview question where I could just find the answer in 5 seconds with a google search, might actually be good interview questions if they just let me use a google search. You still have to know what to look for. Being good at word problems in math I think are the only place where “being a math whiz” is what it takes to be “able to code”. How you setup your equations to solve a simple algebraic word problem, can make solving the word problem super simple, or more complex. My kids do Singapore math, and holy crap does it force you to think about other ways to approach solving problems, a valuable skill.
- MonaroVXR 5y ago> My kids do Singapore math, and holy crap does it force you to think about other ways to approach solving problems, a valuable skill. Do you have any resources yo share? about Singapore math in English?
- PebblesRox 5y agoThe name is misleading - Singapore Math is an English-language-based math curriculum popular among homeschoolers: https://www.singaporemath.com/faqs/ https://www.singaporemath.com/faqs/
- mostertoaster 5y agoThough they’re not homeschooled. Well they were during covid year but we did Singapore because their school does Singapore. I’m always trying to solve the damn problems with an algebraic equation that is way more complicated, and my kid draws a bunch of bars and things and effectively does algebra but with what ends up being actually a simpler equation.
- carlmcqueen 5y agoWhen I worked for a major financial institution in a data science / analytic group there were a lot of very, very smart math types who couldn't code. They'd ask how I'd gotten my code working and I'd never lie, that many parts of it I'd fixed using SO. This was 2012-2015 when a lot of the machine learning wasn't in helpful R packages or python libraries pre-written. Many would ask to see the page I'd read and I'd show them and they would ask how I got my code working from an example that had nothing to do with what our task was. I think there is a lot of value to looking at a SO answer, generalizing it and making it work in your code and doing it quickly. Knowing which SO articles are junk and which ones are gems is something many take for granted but is actually something close to having the right 'gut' feeling.
- musingsole 5y agoThis is very similar to academics and published papers. Most other labs aren't really working on things that similar to another lab, and so techniques have to be modified and not just directly lifted. Some point to that as an aspect of the replication crisis, but it's really just the nature of identifying and abstracting common elements out of specific goals.
- lordnacho 5y agoAbsolutely true. A lot of people think "cut-n-paste" is how people get code written, but the truth is you almost never find a snippet that is exactly what you want. It might be trivial like changing the name of the variable, or it might be some very small piece of a snippet you need, but the superpower isn't being to search for things, it's making sense of them and being able to reason about how to adapt it for your own case.
- 8note 5y agoI find SO gets contrasted with RTFM(read the manual) frequently, But i dont know which manual to read untill ive seen some SO answers
- Gigachad 5y agoThe difference in effort in inventing a solution vs verifying a solution is correct. Most of the stuff on stack overflow or the suggestions from copilot are wrong, but its the fact that you can usually read and know if it is correct and then you have been saved the time which would be starting from scratch.
- mandevil 5y agoAs someone who started working for pay before SO and GH (damnit I'm old) what I remember is that syntax errors took longer to figure out (and more trial and error), but the biggest difference to me is honestly that it is so much easier to find the right library. Back in 2005 I was coding up pretty much everything from scratch myself every time (I even remember a heroic attempt at an XML parser in C++! Backwards linking and processing directives and everything) because finding the right library to use was such a pain in the neck. If it wasn't in STL or Boost, it was like it didn't exist. Maybe it's that I'm older and more experienced (and know not to try and write your own XML parser because of all the complexity inherent in that), or maybe it's that SO and GH facilitate library discovery (with SO providing the pointers and GH providing the actual code) so much better than what came before (SourceForge etc.). I'm not sure, but I suspect it's that it was the technology improvement more than it was my improvement.
- tomrod 5y agoI think most of us operate these days like this. This allows for consistent breadth. While you may have deep expertise in a specific language, coding paradigm, or other technical area, the shared resources of the Internet allow you to operate more efficiently and broadly. Your "depth" in this breadth space is by having an efficient operating model that weeds out spam, bad input, and similar gaps when the "broad" knowledge base is incorrect. I believe this is the real reason spam-answer/grifting sites are so bad. They pollute this shared commons of freely available information. From a policy recommendation I certainly hope these free resources are kept in place, timely, and free from spam/SEO farming.
- deleted 5y ago[deleted]
- asdff 5y agoI usually turn to SO in hopes of a quick and easy answer, but a lot of the time your specific use case isn't going to be well covered as the stackoverflow threads sometimes have some bespoke requirements from the asker. What I find is that it can be faster to just look at the documentation that comes with the tooling. Usually a good stack overflow answer is just regurgitation of something that's already covered in the documentation that the asker clearly didn't read a lick of. When you start using a new tool, just skimming the documentation end to end can but you at such an advantage and set you up to get working with the tool in the correct way with a decent understanding of some of the caveats that might be at play with your particular use case (which is rarely something that can be gleamed from a terse stack overflow answer). Even just a pdf covering a language can be handy to thumb through the chapters and revisit common patterns like for loops that can vary in different languages, once again its easier to trod down a familiar pdf textbook than it is to try and trench up something relevant from google search these days.
- jmchuster 5y agoIt's coming at the problem from different directions. The documentation gives you the general bottom up approach, but lacks details and examples. SO shows what it should look like at the end, and adds details on edge cases that the documentation just glosses over. But you can never find exactly what you want, so you combine those two, a working end result, then modified using the documentation, to get what you want in the end. If you already have a working pattern that you're just modifying, you might get away with just looking up documentation. If you already have a strong foundation and know exactly what you want to do, then you're just looking up the syntax. Maybe another analogy might be, learning vocab to better express your thoughts, vs looking up the exact spelling of a word you already know.
- asdff 5y agoPersonally I've replaced a lot of my stack overflow usage with hacking along with test cases and using the documentation to help develop those tests. Imo, its a lot easier to figure out how something works by figuring it out with your two hands fiddling around vs hoping you find someone who writes well and understandably about this specific niche thing on stack overflow. Sometimes on stack overflow the answer is a very lazy "just install another package" vs developing a solution with the base tooling that's probably more performant anyhow, if a little bit more verbose.
- forinti 5y agoIt's inevitable, really. Things have became so complex and dynamic that you can't hope to have all the reference material you need at home. We used to have these little folded cards with the complete syntax of Pascal or C and that would be enough. Nowadays, you don't even know all the languages and libs that are in a given stack.
- ghaff 5y agoPre-web, you basically had a lot of reference books, used external libraries very judiciously (and there were relatively few of them anyway), and generally kept software stacks pretty simple. And, yes, probably took a lot more time. More generally speaking, most people today would be incredibly frustrated getting information about anything generally if they were plopped down 30 years ago. When I was a product manager back then, we paid consulting companies large sums of money to get the most basic competitive information faxed to us because you couldn't just look it up.
- lordnacho 5y agoWhat did you when you got stuck on some small thing that wasn't obvious from the docs? Say some interaction between two concepts? Nowadays I've always discovered that I'm not the first person to ask.
- IncRnd 5y agoYou thought it through, investigated the issue, came to a conclusion, created a hypothesis, and tested a solution. Now, the cycle seems to be read a problem ticket, see what other people have done, copy code, close ticket.
- rkhassen9 5y agoAnd tbh, you beat your head against the wall until you managed to find the solution...somehow.
- ghaff 5y agoAnd sometimes just find some other way to accomplish what you needed done.
- dylan604 5y agoWhich might be after you've gone home and just stopped thinking about it. Mine usually comes the next moring in the shower. Sometimes pulling an all nighter and beating your head on the wall is less productive than just stopping to take a break and coming back at it with a fresh mind. FAANG PMs don't get this and probably think less of you because your Zen like approach is anathema to their fast paced do or die approach now. You can't be productive if your butt isn't in the chair.
- IncRnd 5y agoIt used to be that senior or staff level coders would intimately know the platforms, languages, and algorithms they used.
- dfxm12 5y agoPerhaps the only thing that's actually my own input is the judgement about what things are important, which sources are reliable, and which people are authorities. This is more or less what I got out of the 2nd half of my higher education. Plus I got a ton of reps in, so to speak, to really refine my judgement and ability to research. It's the old adage about learning how to learn, teaching one to fish, etc. I'm sure this all applies to many fields, but especially one like ours that changes rapidly. Thanks to this education, I feel like I can switch careers pretty easily. I make no mistake about it. I don't feel like I know what I know without the help of the Internet; I feel like I'm just some bloke who is good at sussing out what's important and how to apply it to my job. I think this is a skill that is missing from a number of my colleagues though.
- bruce343434 5y ago>and many of yours. I'm fine with the built in `man` command, and of course offline documentation for almost everything. It's actually kind of weird that our first instinct is to waste internet bandwidth while we probably have a copy right with us.
- MonaroVXR 5y ago> I'm fine with the built in `man` command, and of course offline documentation for almost everything. It's actually kind of weird that our first instinct is to waste internet bandwidth while we probably have a copy right with us. Exactly, yesterday I wanted to to have DNS over HTTPS and if you're going to search for it, you have to do a lot stuff. When there's the manual and literally and says that you need to add two lines and uncomment the specified comment. I'm happy with man.
- air7 5y agoMandatory XKCD: https://xkcd.com/1168/ https://xkcd.com/1168/
- Barrin92 5y agoI used to write code like this for a long time but I honestly felt like I was never actually internalizing anything. So at one point I just turned autocomplete off, stopped searching immediately and forced myself to remember and I think it's had a hugely positive impact. When I had to actively memorize I paid way more attention to what I was doing. I think the online search multitasking is honestly very bad for sustained attention and very passive. As an alternative I started to look up library code directly and just read and I feel like I learned more about how python worked in a few weeks than I did in months or so of just typing things into google.
- Hextinium 5y agoI feel like there is a inflection point of having the time to be able to study a new language vs just brute forcing your way through with SO. If you know you will be using python for long enough then it would be worth reading the docs, else just SO all the way.
- marginalia_nu 5y agoI think how you learned to code does sort of shape your coding. I'm very much from the opposite camp. I learned to code in C in vi and didn't really have anyone to ask other than the manpages and the K&R book, I'm pretty sure I didn't even use syntax highlighting. I do think this has shaped my programming even later to where I stubbornly stick to boring but stable programming languages like C, C++ and Java, and these languages I've used for in some cases almost 25 years and where I virtually never have to look anything up. It's not like I haven't dabbled in other languages and paradigms, like python and haskell and whatever; but it's not those languages I use when I need to build something. I just don't see the value in constantly learning all this flavor-of-the-month stuff. When the dust settles, most hyped upcoming programming languages become footnotes when the history of programming is written.
- dylan604 5y agoI learned to program in a similarish vein (different languages), but with monocolor screen and reference books. However, now when I login to a system where vi is not mapped to vim so that the syntax highlight is not brightly colored, I quickly exit, create that alias to vim, and go again. Coding without syntax highlighting is caveman style to me. It can be done, but I really don't like how it slows things down now. I do agree that quickly jumping to an online reference because you can't remember the order of the parameters for a particular method is a crutch that if you were forced to remember would remove that slow down. But at least I'm able to remember the correct method vs having to search for which method is needed and when.
- tpoacher 5y agoThis is partly not your fault, however; the manner in which documentation is provided (or not provided, to be exact) is also complicit. E.g., there are languages where the offline manual covers 99% of all your needs. I include bash and c, octave, matlab in this category. Then there's languages that feel the offline docs are best left ad an afterthought, and focus most of their effort either towards funky online documentation websites, or effectively relegate it all to stackoverflow.
- planck01 5y agoThat also holds for me, which I suppose makes me a slow coder. I imagine that coders like Thorvalds or Carmack don't have these issues and that's why they are fast. In my head its like typing. I 'type' with 2 fingers and always looking. They 'type' with 10 fingers and blind.
- benlivengood 5y agoIn the 'old days' there would be a shelf of programming books nearby and man pages on useful operating systems. It was slower, but fairly similar in principle.
- jolmg 5y ago> Basically I'd be useless without the internet. The coding tools themselves, all the examples of how to use them, and all the actual knowledge about how everything works is on there. I know it's sometimes easier to google particular questions and that some projects lack documentation, but many if not most programming tools include very good documentation in the same package. And many include their source too. I think saying you'd be useless for lacking online access to that knowledge is an exaggeration. Not being able to pull new dependencies is more problematic, in my opinion.
- nneonneo 5y agoHah, I’ve answered enough questions on SO that every once in a while I end up having to consult SO just to copy some code I wrote myself an answer. I guess in these cases I directly offloaded my own knowledge onto the Internet :) The “own” snippet that comes up the most often for me is a binary-search implementation of integer cube root in Python - I know how to do it but the edge cases trip me up enough times that my pre-written answer is faster than trying to write it from scratch.
- firecall 5y agoThat happened to me recently! I Googled a problem and then found my own answer from years ago! Old me was much smarter apparently! :-D
- ratww 5y agoSometimes I code without the internet (on vacation, on trains and planes, etc) and it's not too hard. The major difficulties are indeed around the things you mention, but one solution for that is having a few large projects open in another IDE window so you can search for functions, idioms, algorithms, patterns. I guess I got used to it because I started coding professionally before Stack Overflow. There was Expert Sex Change, but it sucked, so I avoided it like the plague. It was mostly C#, so the combination of Static Typing + Intelisense also helped me not needing internet. Before C# I coded in Perl, so seeing other people's code wouldn't help anyway ;)
- jiveturkey 5y agoi wish there were a good way to interview candidates that reflects this as being the way to being a high performer
- joe_the_user 5y agoThe thing about the situation is you have a wide variety of knowledge types. Notably some knowledge can be verified pretty easily and some knowledge (or claims) is quite hard to verify, it rests on experiments, hard gain expert knowledge or the testimony of single individual. Programming information tends to be easily verified so organizing it's skill around filtering google, stackoverflow and so-forth is fine. The resulting program can be tested fairly easily. Uncritically taking in other sorts of claims can be very problematic.
- mmcdermott 5y agoI've fought with this on and off. It is true that my work tends to be as internet dependent as anyone's, but I've experimented with an offline-first type of workflow. I think it's entirely possible to work offline first and foremost. You'd need the documentation for everything local. Operating system, programming language, libraries, frameworks, etc. Mass storage makes this more practical now than ever. A lot of projects don't provide very downloadable documentation which would make it harder and, of course, you'd miss out on knowing when the documentation is lying. The biggest problem with it is probably nothing intrinsic, but the fact that you'd be swimming upstream doing it.
- cozzyd 5y agoman pages can be very helpful, but mostly only for C libraries. I remember when I was at the South Pole I had to queue my internet queries for when the satellite was up.
- bitexploder 5y agoJust sharing some perspective. I got started in the early and mid 90s. I became obsessed with MUDs as a teenager. I needed a compiler, discovered Linux. Painstakingly downloaded and installed it using over a dozen floppy disks. My Internet was a 28.8-56k modem in that era. I got extremely good at C because that is what CircleMUD was based on. I had a pile of reference manuals, man pages, and Usenet. Occasionally things like Beej’s guides were useful. I also wrote a decent amount of Perl. If I wanted to learn something, like Regex, it was source code, man pages, info pages or an O’Reilly book. Internet hunting was secondary to trusted resources (books, etc). Certainly some things were harder and slower, but if forced you to use your brain more and think through some types of issues. You rarely got instant gratification of reading someone else’ solution to your weird problem or error. It forced you to really look through the source code and think things through from first principles. To understand your runtime (C programs barely have a runtime really, but it still exists in complex programs that must run for long periods like a MUD). It forced a deep knowledge of your tool chains and made you really good at them. It forced you to be more narrow but also creative and deep. From a first principles perspective it taught me ways of working that are different to younger programmers, and even modern me. Often looking something up is right. But sometimes you are best served by learning something for yourself, through source code and such. I learned so much looking at other code based and constantly asking “why?”. Why is this code this way, etc. I can’t say if it’s better or worse, but I got really good at MUDs and it turned into a long career in tech with no degree :)
- gstipi 5y agoOh the memories, I also learned C (using Power C http://mixsoftware.com/product/powerc.htm http://mixsoftware.com/product/powerc.htm) to hack on DikuMUD in the mid 90s. I briefly ran a PK-focused MUD (hosted on Wolfpaw) and remember being amazed at having 15 players online simultaneously. I was ultimately forced to shut down the MUD by my parents, because working on it started negatively impacting my preparations for final exams.
- bitexploder 5y agoI went the opposite way, heh. I had a pretty popular MUD as well. I learned so much and made a few friends along the way. Took me about 5.5 years to finish high school from all the Kate nights and ignoring my studies. I just dropped right into software dev after that in the professional world. So it goes :)
- tomc1985 5y agoYou might want to work on that. There's something to be said for mastery and it seems risky as fuck to require the presence of the cloud, let alone a few websites, to be able to work. It seems like mastery and knowledge just for the sake of it is less of a priority these days. Why bother wiping your ass when the cloud can do it for you?
- cbsmith 5y agoMaster != memorization Relying on a reference as a guide is not necessarily a sign of a lack of mastery any more than not using a reference is a sign of mastery. Sure, there is always the possibility that a reference won't be available when you might need it, but for the obvious exception, perfect recall is not what mastery is about.
- tomc1985 5y ago> Master != memorization Memorization is not all of mastery but it sure is a large part of it. Like, I get it, I can't memorize for shit and I rely on Google/SO to an uncomfortable degree for programming, but that is more because they are the most convenient. If you can't function because Google is down, when you should be looking in an offline reference like a local copy of the docs, library code, a man page, or a book, then I would consider that to be a pretty crucial gap and weakness in technique. Resourcefulness is another component of mastery, and, frankly, even more important than memorization in my book. It's the same thing for so many other parts of life... just because you use Google Maps to navigate doesn't mean you shouldn't also know how to read a map and navigate on your own.
- cbsmith 5y ago> Memorization is not all of mastery but it sure is a large part of it. Not at all. Memorization is a common side-effect of mastery, just like mastering a lot of physical activities tends to have a side-effect of improved strength, endurance, etc. No question there's a lot of correlation between memory and mastery, but that's not the same as being an essential component of it. An elderly master of a physical activity might well have a significantly deteriorated physique and still have mastery, and dementia patients can retain mastery of musical instruments, jigsaw puzzles or contract bridge (even if they can't name the suits, let alone articulate simple bidding rules) despite severe deterioration of their memory as applied to those specific skills. > If you can't function because Google is down, when you should be looking in an offline reference like a local copy of the docs, library code, a man page, or a book, then I would consider that to be a pretty crucial gap and weakness in technique. You might consider it a crucial gap and weakness. I might frame it more positively, that it's a great advantage to NOT have to rely on a reference tool. However mastery does not preclude weakness. Heck, master writers like Robert Caro, J.K. Rowling, Neil Gaiman, Joyce Carol Oates, Stephen King, Danielle Steel, and Don DeLillo have spoken in detail about being dependent on their old school tools and are unable to take advantage of the benefits of modern writing tools, and there are other writers for whom the reverse is true! No one suggests they are anything less than masters of their craft. Certainly, resourcefulness is an important skill, and a resourceful person with poor memory will have lots of ways of getting by without having to remember things. However, there's a bit of a limit to what's reasonable and important for mastery. Sure, a resourceful soccer player can still apply their craft without a ball or a field, but really, how useful is their skill? In distributed computing, people often absurdly complain about how an application node behaves when the network is down, which raises the interesting question of what work the node might be expected to do in that scenario. Similarly, when a software developer can't function without a working computer, or if their network connection is down, that's not great, but might not be all that important if the development work they are doing is entirely dependent on those tools anyway. > It's the same thing for so many other parts of life... just because you use Google Maps to navigate doesn't mean you shouldn't also know how to read a map and navigate on your own. This is a good example, and not just because reading a map and using Google maps are different skills. It's a good example because one can have mastery of map reading without necessarily having memorized a single map or geographical layout. Heck, maps have legends specifically so you don't have to remember much about them in order to use them effectively. Memorizing geography would be a distinct form of mastery separate from map reading.
- jl2718 5y agoI started coding in the disconnected/RTFM era, and had a hard time with the poor documentation, bugs, and general over-complexity of most modern programming platforms. StackOverflow seems to fill the void, but not efficiently. So, maybe don’t feel so bad because it’s not really learnable the way it used to be.
- TheBigSalad 5y agoI think you are selling yourself short. The things you find on Google are trivial things. A lot of this you'd reference in a book back in the day. You'd be slower for sure, but not out.
- wiether 5y agoNot actually related to your post, but as a non native English speaker, it took me a lot of time to remember the meaning of "SO" on mainstream Internet. I don't know why, but I kept forgetting it and wasn't able to infer its meaning, so each time I had to look for it. Nowadays it's ok, to the point that reading your comment I was able to understand that it was not the mainstream "SO" you were talking about, but another one more related to HN. Anyway, what I found funny in this is that I can think as "SO" being my "SO" because I 100% relate to what you shared.