I would not be surprised if even Professional Web Developers cant do it. Especially if you include deployment.
This isn't the old days of FTP, Perl or PHP anymore. There are too much information I cant memorise every single bit of it. And I dont think you should either. Especially in the age of Google. My memory capacity has its limit, and there are things I just decide it is not important enough to memorise when I could easily search for it. ( Or if I am relying on Heroku )
I have long thought of Directing a video, where we have famous Developers, or developers from a pieces of software that normal people would have heard of, filming them doing work, looking up silly things in Google. Starring at the screen for hours and absolutely dont have a clue what the code is doing. Not typing any code for hours. Sort of like Reality TV shows for Programmers.
Hollywood Movies and Anime has made the perception that proper Software programmers should be super fast touch typist and typing code with insane speed. It makes people uneasy when they learn programming. It turns out they have to constantly look up some manual, googling, copy and pasting and for most of the time not typing anything. They thought they are just not any good at it and many simply gave up.
The reality is, hopefully the video would show, even top level programmers dont know everything. And it is perfectly normal to look things up.
I'm reasonably sure I could write a basic site, make it look as good as I can make things look given my sense of design, without searching.
If I was allowed to look at what I already have on my machine I could even set up a build process for my site. If not allowed then no build process.
But it would probably be pretty slow to write this, depending on how basic the site was, and it would not be as good as if I could look things up when I needed to.
But I wouldn't be able to deploy without searching.
Yeah, so the big problem is every software project has some initial parts you only have to do once and then 99% of the project is just extending and improving the project using the same flow over and over.
I don't see the value of memorizing somethings you just do once.
That said you're right, even the 99% of work still involves a lot of fiddling and sometimes research outside of writing code.
Some developers already livestream on YouTube as they program up web apps or other software. George Hotz for example used to livestream on YouTube/twitch. You can find many others.
>I would not be surprised if even Professional Web Developers cant do it. Especially if you include deployment.
I'm pretty sure I could do it depending on our definition of basic web app. With something Rails it's not even really that hard. Rails g scaffold [Model] gets you 95% of the way there.
Using documentation is fine. You aren't going to solder stuff only by eyeballing the component packaging either.
On-line information? That's another question entirely. This would be a more interesting test: can you make a basic webapp (or other type of app representative of your experience) without Internet access?
If you're dealing with an older stack and toolkit, you probably have many books' worth of manuals already installed. Unless you're unlucky and didn't notice the documentation isn't installing along with your tools. Or you're on Windows[0]. You can use them to work out most of the problems you're facing.
Newer tools though? There's this annoying trend of under-documenting things, and relying on people on StackOverflow to fill in the gaps. Or even worse, setting up a Slack/Discord for the project, and getting people to help each other there.
Maybe I'm just old, but when I'm working with computer tools, I prefer to solve the issues myself, instead of chasing around the Internet and talking to people. I also like to be able to continue to work when my Internet dies, or I'm out of range, or the site hosting the docs dies (happens more often than one would expect).
And to answer my own question: yes, I can write basic apps of the type I work on (and bunch of others, including games) without Internet access, as long as you let me use my computer - where I have access to heaps of off-line documentation and lots of prior source code to supplement it.
--
[0] - Someone at MS had the bright idea to ship PowerShell without help for its commands by default, so that the first thing Get-Help tells you is to download the man pages...
> Using documentation is fine. You aren't going to solder stuff only by eyeballing the component packaging either.
> On-line information? That's another question entirely. This would be a more interesting test: can you make a basic webapp (or other type of app representative of your experience) without Internet access?
I would suggest that the type of information is important, rather than the medium. It is not that solving the issue yourself is better than talking to other people. It is a matter of ensuring the validity of the information as well as it's suitability to the task. That is more difficult to do without referencing language or library documentation, and I suspect that it is not being done at all by most of the people who rely upon searching the Internet.
While the quality of books is better (on average) than online information, one still has to be selective. The market is flooded with books that offer shallow explanations or are simply a rehash of what dozens of other books have discussed. Not only does the latter limit the breadth of knowledge, but the nuggets of insight offered by any given author are usually so deeply buried that they are easy to miss. Sometimes it is more productive to scour the Internet because of that.
I second re docs. VS Intellisense has served me very well for known tech (ASP.NET etc); for new tech I rely on official docs or nutshell style books to be with me. I've created ASPSecurityKit.net [0], that sets up a new web app [1] (API/MVC) with user account related workflows; adding the business features then is easy for me.
In my initial days of programming in school/college, I relied almost entirely on local MSDN library installation (during VB6 days, it used to come in three CDs), to learn VB6 and build apps. With that, I built a multi-lingual word processor, a screen reader and some other nice tools that got me hooked with coding.
It was around 2003-2006 and I used to only search on internet whenever I needed to add something not supported out-of-the-box in VB6 like Win32 APIs etc.
I take a completely opposite view. If I get stuck on something, I go straight to StackOverflow etc to ask for a solution or at least get more information. Then, I can keep tinkering myself or switch to a completely different task. I am far more productive when I leverage The Hive Mind.
Plus, these questions give me a great reference for next year when I am doing something similar but have forgotten the details.
This approach probably works well because I know how things work at a high level; I think it would be disastrous to do this without any real understanding.
Even if I could, I would not call that an achievement. In programming, we are expected to understand concepts, not memorize documentation of a library. Of course, if you are too specialized working with few libraries/frameworks, you will naturally end up knowing its methods by heart. But that doesn't mean searching things up online is a bad practice. In fact, I believe it is more useful to keep updating yourself from the web on better ways to write some piece of code than what you have memorized from a year back old doc.
Also, eventually, what matters is how you connect the bits and pieces you take from online and integrate them into your software. How you design and shape your software so that's its scalable, optimized and reliable is in your hand and that's what matters the most!
I learned to write java code (structure, basic io (terminal, file, datastructures) blind like in word or notepad and it would run without errors for a google interview; It is not that much you need to know actually but when you learn it once, it lingers around for quite a long time and it gives you a different feeling of confidence that you actually know java (i was writing java code for 6? years before that already so i do know java).
Its very similiar to my personal experience with doing push ups: If you never have done them you don't have any muscles at certain areas; Now after going from 0 to 15 push ups over a few month, i gained a general better physiology on upper body strenge and it still lingers around.
Non of both are critical in a day to day scenario but both experiences were fun/interesting and this base is now here where it was not before.
It brings me, mentally speaking, closer to really get something like java.
Does it actually matter if I can? Is using reference material a bad thing?
Edit:
I know the article touches on that idea briefly but my argument would be "of course it doesn't matter".
Sure, I could develop slightly faster with a more encyclopedic memory but I really doubt it would make an observable difference in the long-term.
Most of my time isn't spent referencing libraries or syntax but instead I spend most of my time thinking out the logic and higher level relationships of my code. I suspect that is largely the case of any development even remotely non-trivial.
I was thinking about a situation similar to that in web development. But if there’s no internet, a web application doesn’t make that much sense does it...
Something that has dramatically reduced my reliance on outside resources is an editor that can lookup symbol definitions.
I’m using Django and I used to use Sublime Text without any plugins which meant (at the time) it couldn’t automatically show me the definition of a function or object from a library, forcing me to search around for its documentation.
Switching to PyCharm/IntelliJ meant I could now just Command-Click (Ctrl-Click for Linux & Windows I believe) and see the actual definition and logic of the underlying function without having to rely on the online documentation. This of course works recursively, so I can repeat this process again and again up until I eventually reach the core standard library which is in C and isn’t introspective (at this point I can rely on my knowledge or some trial and error to figure out its behavior).
I'd argue that's just having Google-lite built into your IDE.
Personally I think that focusing on how you solve the problem loses sight of the fact that the only important thing is that you can accomplish the mission. If you can't build a basic web app on your own, but you can while salsa dancing w/ a mountain gorilla, I'll pay for your subscription to Spotify so you can stream Havana Kings while tearing up the dance floor w/ a Silverback (must provide own gorilla).
I thought this was a joke until I realized you were serious; I was expecting that as I read further into the list it would get to "-develop without using my hands" and "-develop with my eyes closed" (which are legitimate situations for disabled developers, btw) but which would be absurd for anyone to practice under conventional conditions.
I used to program with 6 thick reference books around me. Has memorizing SDKs, APIs, libraries ever been a thing? Or is this just the daily "everything is bad nowadays" post?
Can I knock up a site with some PHP/HTML/CSS without references - sure.
Can I knock up a standard server side app - sure, but I'm gonna want to look up certain functions and what arguments they take.
Can I put together an SPA without? Probably not.
I know what I need to do, but I'm not going to remember which packages I need to install,
or how they are configured, or if package x works with webpack4 or if I have to have Vue2 because a certain thing I want to use doesn't support 3 yet etc.
There are so many moving parts now for an 'app' that it is not feasible to keep it all in your head. Thats why there are so many starter-packages for things, because people forget what they did the first time around, so just create a new git repo with the skeleton to get going again ... only to be replaced in 6 months.
It was perl and flat file site counters when I started, and now I have to google how to make webpack work nicely :D
Yeah I guess I can crank out a basic CRUD-App without looking up anything. All depending on what app means. If I have to work with new technologies I clearly look up the best practices and different solutions to common problems but on my hometurf? I look into the source code to know my way around. It's quicker most of the time. Or I ask in the forums - is this allowed?
When I run a technical interview for a dev role, I make a point to ask the candidate to Google their way to a solution since I figure that's probably one of the top skills they'll need on the job.
This specific case, and the norm of interviewing without access to references is not that interesting.
But it is kinda like a specialized version of a fun party question, "With what you know now, if you were sent back in time, how far could you go and usefully employ your knowledge of the future?" (E.g. I know chemical fertilizer is a big deal, but I definitely do not know how to make it. I studied heat engines in a physics class, but could not spark the industrial revolution a century earlier.)
Maybe the midway point between these is something like, "if you were sent back to an earlier era in computing, how far back could you go while usefully applying your current knowledge?" E.g. I work with the jvm constantly and I know that it was a big deal for a popular language to have an actually described memory model, but I couldn't build it myself in the 80s. Maybe I could build MapReduce or Spark in the 90s?
It's _hard_ working without the informational resources you're used to, but there are so many more fun ways to explore that gradient than web apps.
The going back in time question is actually really good. What are the fundamental concepts you need to kickstart stuff? Those fundamental insights are still going to be relevant today, which is why they sparked revolutions and major changes to the landscape.
I can, but it will be basic! I might have to use a JSON file for the backend because I probably can't remember any database libs well enough to use without documentation.
However, lots of programming is much closer to plumming than to.. programming.. any time you're using a lib or api, you're just looking up what kind of fittings that comes with and what length of pipe to attach to it.. So don't worry about not being able to do anything really useful without looking in the docs :)
Now, if you have to look up basic language syntax for the language you use every day, I'd say its bad and you probably need to practice a bit ^_^
You should be able to learn at least one language deeply enough that, given sufficient time, you could do just about anything without libraries or external dependencies, and therefore without needing additional documentation. Aspiring to and eventually developing that level of language mastery is, IMO, one of the core signs of maturity for a Software Engineer.
However, that would be wildly impractical in our day to day work, which is more about connecting pieces together in the right way, and hence is a lot about reading the manual for those pieces, understanding what it is they do and how they should be assembled together, and then actually assembling them together and testing that it all worked as expected. "Googling things" is an essential step in that process, but you could substitute Google for "read the manual" in an earlier era and it would be the same thing.
Perhaps what is sad is how many things these days ship without good manuals, because Google makes it easy enough for people to stitch together scanty release notes, comments in the source code, blog posts, Stack Overflow questions, etc. that you can actually get away with not having a manual.
Of course people’s projects can be unique, and my work may not be representative of the readers work, but I guess this raises the question: what does “using Google” mean? I frequently use “lots of things” on my computer: man pages, other installed documentation, will browse source code of libraries I’m using, or indeed my own previous work. I can do this if, say, I have no Internet connection, but that doesn’t mean I’ve got a fully-formed bug-free implementation of my goal floating around in my photographic memory.
A basic app? I've been doing this for years and of course I can.
For the things I've mastered I hardly use google anymore, and even that is mostly to check if things have changed since the last time I used them and if there's a new way I didn't know about.
Using notepad or your systems equivalent? I notice a lot of developers rely heavily on autocompleters and syntax hints in the editor, but deny that they need "documentation."
I don't know how many people are aware but https://devdocs.io/ has been a life-changer, runs locally as PWA and caches all the docs you need to use, instant search across all interfaces - so yes you can write even a complex web app without googling at all.
Well there is this quote, often attributed to Einstein himself: “Never memorize something that you can look up.”
I don't know whether he really said or thought anything like that, and I also don't actually agree with the literal meaning. There are some things that it pays to memorize, in my opinion. As I keep reminding my daughters: times tables (or math facts as they seem to be known nowadays) are important forever.
The principal behind the quote, however, I'm fully behind. I live in the docs. Even if it's something that I know pretty well, I often like to check to make sure I understand exactly what's going down. There are too many little details that are easy to forget. If it's important and you aren't sure, look it up!
Finally, I could probably claim to be able to write build a simple web app without using google, but I'm sure I would lean heavily on my editor to remind me of argument order, syntax, etc. Maybe there is a little bit of difference there: if my editor/IDE can tell me what I need to know, it's probably just that bit faster than searching for it in a browser.
I know for a lot of people coding is all about fun and lifestyle, but at some point it becomes a job and you just need to get shit done without being fancy, cool, hardcore, eXtreme, 1337, agile, lean, mean, whatever.
It’s like how people equate rattling of facts as being smart. When you’re effectively carrying the equivalent of all human knowledge with you at all times, memorizing facts and historical dates seems obsolete.
Now it’s about filtering out the “noise” facts and figuring out which facts or dates are relevant.
I have identified this issue during whiteboard interviews. I was not able to write code on a blank piece of paper/plastic. It turns out I have delegated part of the coding activities to tools like IDE and Google.
I made a conscious decision to fix this.
I have switched from Java to Go, effectively lowering the level of abstraction. Then from IDE to Vim, getting rid of autocomplete.
I turned off syntax highlighting, allowing my brain to parse and interpret code more effectively. Last but not least was starting to use embedded documentation `go doc {{ package }}` via terminal and reading language sources to learn how internals work.
It was hard at the beginning, and my productivity dropped for some time. Later, when new neural connections were created in my brain, things started to improve.
Some of the benefits that I enjoy now are a better understanding of the code, improved knowledge of language libraries and interfaces.
I have tested this approach by coding in planes and trains without access to the Internet, and it works well.
Did it fix my problem with whiteboards? I do not know, but I am happy with the new skills.
It matters if you're applying for a job and the people interviewing or the hiring manager think you should.
People like Mike Acton and Jonathan Blow give incredibly condescending speeches about "practice" like you should be able to just make a Win32 API app that calls DirectX (or some other comically absurdly bad API) from memory. Blow in particular loves harping on this and loves saying that web developers are incompetent and wasting their time creating awful products.
How much time do you spend making new apps on long-lived projects? At many companies, the answer is zero. These same companies may think you suck shit at programming if you can't remember command line options you never have to use in day-to-day work.
An interesting approach would be try to code something with only the official documentation and source code of the libraries your are using. No internet except for the git clone.
I like doing that as an exercise. It trains you well for a very common situation for professional developers. You have to work on a project, poorly documented, the original developers left long ago and no one really knows how it works, except maybe for one guy who don't have time to answer your questions. Of course it is internal stuff, so the internet is no help. It is a valuable skill, literally, companies are ready to pay good money to people who can do that.
[+] [-] ksec|5 years ago|reply
This isn't the old days of FTP, Perl or PHP anymore. There are too much information I cant memorise every single bit of it. And I dont think you should either. Especially in the age of Google. My memory capacity has its limit, and there are things I just decide it is not important enough to memorise when I could easily search for it. ( Or if I am relying on Heroku )
I have long thought of Directing a video, where we have famous Developers, or developers from a pieces of software that normal people would have heard of, filming them doing work, looking up silly things in Google. Starring at the screen for hours and absolutely dont have a clue what the code is doing. Not typing any code for hours. Sort of like Reality TV shows for Programmers.
Hollywood Movies and Anime has made the perception that proper Software programmers should be super fast touch typist and typing code with insane speed. It makes people uneasy when they learn programming. It turns out they have to constantly look up some manual, googling, copy and pasting and for most of the time not typing anything. They thought they are just not any good at it and many simply gave up.
The reality is, hopefully the video would show, even top level programmers dont know everything. And it is perfectly normal to look things up.
[+] [-] colecut|5 years ago|reply
[+] [-] bryanrasmussen|5 years ago|reply
If I was allowed to look at what I already have on my machine I could even set up a build process for my site. If not allowed then no build process.
But it would probably be pretty slow to write this, depending on how basic the site was, and it would not be as good as if I could look things up when I needed to.
But I wouldn't be able to deploy without searching.
[+] [-] kosievdmerwe|5 years ago|reply
I don't see the value of memorizing somethings you just do once.
That said you're right, even the 99% of work still involves a lot of fiddling and sometimes research outside of writing code.
[+] [-] joshspankit|5 years ago|reply
Maybe a “Big brother season 1” style. I’d watch that.
[+] [-] wffurr|5 years ago|reply
Things are more complex, but a lot of documentation is also now online instead of printed or distributed on floppies.
[+] [-] scruple|5 years ago|reply
Granted, this assumes that the deployment target is ready to receive the deployment payload...
[+] [-] cvhashim|5 years ago|reply
[+] [-] treis|5 years ago|reply
I'm pretty sure I could do it depending on our definition of basic web app. With something Rails it's not even really that hard. Rails g scaffold [Model] gets you 95% of the way there.
[+] [-] forgotmypw17|5 years ago|reply
I can make a basic web app without googling.
[+] [-] TeMPOraL|5 years ago|reply
On-line information? That's another question entirely. This would be a more interesting test: can you make a basic webapp (or other type of app representative of your experience) without Internet access?
If you're dealing with an older stack and toolkit, you probably have many books' worth of manuals already installed. Unless you're unlucky and didn't notice the documentation isn't installing along with your tools. Or you're on Windows[0]. You can use them to work out most of the problems you're facing.
Newer tools though? There's this annoying trend of under-documenting things, and relying on people on StackOverflow to fill in the gaps. Or even worse, setting up a Slack/Discord for the project, and getting people to help each other there.
Maybe I'm just old, but when I'm working with computer tools, I prefer to solve the issues myself, instead of chasing around the Internet and talking to people. I also like to be able to continue to work when my Internet dies, or I'm out of range, or the site hosting the docs dies (happens more often than one would expect).
And to answer my own question: yes, I can write basic apps of the type I work on (and bunch of others, including games) without Internet access, as long as you let me use my computer - where I have access to heaps of off-line documentation and lots of prior source code to supplement it.
--
[0] - Someone at MS had the bright idea to ship PowerShell without help for its commands by default, so that the first thing Get-Help tells you is to download the man pages...
[+] [-] II2II|5 years ago|reply
> On-line information? That's another question entirely. This would be a more interesting test: can you make a basic webapp (or other type of app representative of your experience) without Internet access?
I would suggest that the type of information is important, rather than the medium. It is not that solving the issue yourself is better than talking to other people. It is a matter of ensuring the validity of the information as well as it's suitability to the task. That is more difficult to do without referencing language or library documentation, and I suspect that it is not being done at all by most of the people who rely upon searching the Internet.
While the quality of books is better (on average) than online information, one still has to be selective. The market is flooded with books that offer shallow explanations or are simply a rehash of what dozens of other books have discussed. Not only does the latter limit the breadth of knowledge, but the nuggets of insight offered by any given author are usually so deeply buried that they are easy to miss. Sometimes it is more productive to scour the Internet because of that.
[+] [-] TriNetra|5 years ago|reply
In my initial days of programming in school/college, I relied almost entirely on local MSDN library installation (during VB6 days, it used to come in three CDs), to learn VB6 and build apps. With that, I built a multi-lingual word processor, a screen reader and some other nice tools that got me hooked with coding. It was around 2003-2006 and I used to only search on internet whenever I needed to add something not supported out-of-the-box in VB6 like Win32 APIs etc.
0: https://ASPSecurityKit.net 1: https://www.youtube.com/watch?v=TmUO90JNlvs
[+] [-] pharmakom|5 years ago|reply
Plus, these questions give me a great reference for next year when I am doing something similar but have forgotten the details.
This approach probably works well because I know how things work at a high level; I think it would be disastrous to do this without any real understanding.
[+] [-] unknown|5 years ago|reply
[deleted]
[+] [-] rajarsheem|5 years ago|reply
Also, eventually, what matters is how you connect the bits and pieces you take from online and integrate them into your software. How you design and shape your software so that's its scalable, optimized and reliable is in your hand and that's what matters the most!
[+] [-] Pampleti|5 years ago|reply
I learned to write java code (structure, basic io (terminal, file, datastructures) blind like in word or notepad and it would run without errors for a google interview; It is not that much you need to know actually but when you learn it once, it lingers around for quite a long time and it gives you a different feeling of confidence that you actually know java (i was writing java code for 6? years before that already so i do know java).
Its very similiar to my personal experience with doing push ups: If you never have done them you don't have any muscles at certain areas; Now after going from 0 to 15 push ups over a few month, i gained a general better physiology on upper body strenge and it still lingers around.
Non of both are critical in a day to day scenario but both experiences were fun/interesting and this base is now here where it was not before.
It brings me, mentally speaking, closer to really get something like java.
[+] [-] sosodev|5 years ago|reply
Edit: I know the article touches on that idea briefly but my argument would be "of course it doesn't matter".
Sure, I could develop slightly faster with a more encyclopedic memory but I really doubt it would make an observable difference in the long-term.
Most of my time isn't spent referencing libraries or syntax but instead I spend most of my time thinking out the logic and higher level relationships of my code. I suspect that is largely the case of any development even remotely non-trivial.
[+] [-] tlarkworthy|5 years ago|reply
I took 50GB of wiki resources mirrored in my pocket.
[+] [-] easton|5 years ago|reply
https://kapeli.com/dash
[+] [-] MattGaiser|5 years ago|reply
[+] [-] baxtr|5 years ago|reply
[+] [-] antpls|5 years ago|reply
[+] [-] dvdbloc|5 years ago|reply
[+] [-] Nextgrid|5 years ago|reply
I’m using Django and I used to use Sublime Text without any plugins which meant (at the time) it couldn’t automatically show me the definition of a function or object from a library, forcing me to search around for its documentation.
Switching to PyCharm/IntelliJ meant I could now just Command-Click (Ctrl-Click for Linux & Windows I believe) and see the actual definition and logic of the underlying function without having to rely on the online documentation. This of course works recursively, so I can repeat this process again and again up until I eventually reach the core standard library which is in C and isn’t introspective (at this point I can rely on my knowledge or some trial and error to figure out its behavior).
[+] [-] devoutsalsa|5 years ago|reply
Personally I think that focusing on how you solve the problem loses sight of the fact that the only important thing is that you can accomplish the mission. If you can't build a basic web app on your own, but you can while salsa dancing w/ a mountain gorilla, I'll pay for your subscription to Spotify so you can stream Havana Kings while tearing up the dance floor w/ a Silverback (must provide own gorilla).
[+] [-] gebt|5 years ago|reply
I enjoy to develop without Googling; really enjoy!
I tried some other amazing things:
- developing without using touchpad or mouse.
- debugging without running code until the end.
- developing with turn offed WiFi.
In general, I'm always trying to reduce my needs.
I think this practices would help me to be more accurate, more independent, and become able to live in a post-apocalypse situation as a geek.
I said post-apocalypse, I remembered lcamtuf article "Disaster planning for less crazy folk": https://lcamtuf.coredump.cx/prep/
[+] [-] aerovistae|5 years ago|reply
[+] [-] karlicoss|5 years ago|reply
[+] [-] theonlybutlet|5 years ago|reply
[+] [-] paxys|5 years ago|reply
[+] [-] bennyp101|5 years ago|reply
Can I knock up a site with some PHP/HTML/CSS without references - sure.
Can I knock up a standard server side app - sure, but I'm gonna want to look up certain functions and what arguments they take.
Can I put together an SPA without? Probably not. I know what I need to do, but I'm not going to remember which packages I need to install, or how they are configured, or if package x works with webpack4 or if I have to have Vue2 because a certain thing I want to use doesn't support 3 yet etc.
There are so many moving parts now for an 'app' that it is not feasible to keep it all in your head. Thats why there are so many starter-packages for things, because people forget what they did the first time around, so just create a new git repo with the skeleton to get going again ... only to be replaced in 6 months.
It was perl and flat file site counters when I started, and now I have to google how to make webpack work nicely :D
[+] [-] number6|5 years ago|reply
[+] [-] jrickert|5 years ago|reply
[+] [-] abeppu|5 years ago|reply
But it is kinda like a specialized version of a fun party question, "With what you know now, if you were sent back in time, how far could you go and usefully employ your knowledge of the future?" (E.g. I know chemical fertilizer is a big deal, but I definitely do not know how to make it. I studied heat engines in a physics class, but could not spark the industrial revolution a century earlier.)
Maybe the midway point between these is something like, "if you were sent back to an earlier era in computing, how far back could you go while usefully applying your current knowledge?" E.g. I work with the jvm constantly and I know that it was a big deal for a popular language to have an actually described memory model, but I couldn't build it myself in the 80s. Maybe I could build MapReduce or Spark in the 90s?
It's _hard_ working without the informational resources you're used to, but there are so many more fun ways to explore that gradient than web apps.
[+] [-] Olreich|5 years ago|reply
[+] [-] dusted|5 years ago|reply
However, lots of programming is much closer to plumming than to.. programming.. any time you're using a lib or api, you're just looking up what kind of fittings that comes with and what length of pipe to attach to it.. So don't worry about not being able to do anything really useful without looking in the docs :)
Now, if you have to look up basic language syntax for the language you use every day, I'd say its bad and you probably need to practice a bit ^_^
[+] [-] burlesona|5 years ago|reply
You should be able to learn at least one language deeply enough that, given sufficient time, you could do just about anything without libraries or external dependencies, and therefore without needing additional documentation. Aspiring to and eventually developing that level of language mastery is, IMO, one of the core signs of maturity for a Software Engineer.
However, that would be wildly impractical in our day to day work, which is more about connecting pieces together in the right way, and hence is a lot about reading the manual for those pieces, understanding what it is they do and how they should be assembled together, and then actually assembling them together and testing that it all worked as expected. "Googling things" is an essential step in that process, but you could substitute Google for "read the manual" in an earlier era and it would be the same thing.
Perhaps what is sad is how many things these days ship without good manuals, because Google makes it easy enough for people to stitch together scanty release notes, comments in the source code, blog posts, Stack Overflow questions, etc. that you can actually get away with not having a manual.
[+] [-] bch|5 years ago|reply
Of course people’s projects can be unique, and my work may not be representative of the readers work, but I guess this raises the question: what does “using Google” mean? I frequently use “lots of things” on my computer: man pages, other installed documentation, will browse source code of libraries I’m using, or indeed my own previous work. I can do this if, say, I have no Internet connection, but that doesn’t mean I’ve got a fully-formed bug-free implementation of my goal floating around in my photographic memory.
[+] [-] viseztrance|5 years ago|reply
For the things I've mastered I hardly use google anymore, and even that is mostly to check if things have changed since the last time I used them and if there's a new way I didn't know about.
[+] [-] radium3d|5 years ago|reply
[+] [-] mike_d|5 years ago|reply
[+] [-] stagas|5 years ago|reply
[+] [-] trey-jones|5 years ago|reply
I don't know whether he really said or thought anything like that, and I also don't actually agree with the literal meaning. There are some things that it pays to memorize, in my opinion. As I keep reminding my daughters: times tables (or math facts as they seem to be known nowadays) are important forever.
The principal behind the quote, however, I'm fully behind. I live in the docs. Even if it's something that I know pretty well, I often like to check to make sure I understand exactly what's going down. There are too many little details that are easy to forget. If it's important and you aren't sure, look it up!
Finally, I could probably claim to be able to write build a simple web app without using google, but I'm sure I would lean heavily on my editor to remind me of argument order, syntax, etc. Maybe there is a little bit of difference there: if my editor/IDE can tell me what I need to know, it's probably just that bit faster than searching for it in a browser.
Shoutout to lsp-mode.
[+] [-] FriedrichN|5 years ago|reply
I know for a lot of people coding is all about fun and lifestyle, but at some point it becomes a job and you just need to get shit done without being fancy, cool, hardcore, eXtreme, 1337, agile, lean, mean, whatever.
Or maybe I'm just becoming grumpy and old.
[+] [-] omarhaneef|5 years ago|reply
But then cheap and ubiquitous calculators changed all that, and what it meant to be a good mathematician was solving complex chains of problems.
But then cheap computers changed that, and what it means to be a good mathematician now was just setting up the right equation.
[+] [-] acwan93|5 years ago|reply
Now it’s about filtering out the “noise” facts and figuring out which facts or dates are relevant.
[+] [-] bilinguliar|5 years ago|reply
I made a conscious decision to fix this.
I have switched from Java to Go, effectively lowering the level of abstraction. Then from IDE to Vim, getting rid of autocomplete. I turned off syntax highlighting, allowing my brain to parse and interpret code more effectively. Last but not least was starting to use embedded documentation `go doc {{ package }}` via terminal and reading language sources to learn how internals work.
It was hard at the beginning, and my productivity dropped for some time. Later, when new neural connections were created in my brain, things started to improve.
Some of the benefits that I enjoy now are a better understanding of the code, improved knowledge of language libraries and interfaces.
I have tested this approach by coding in planes and trains without access to the Internet, and it works well.
Did it fix my problem with whiteboards? I do not know, but I am happy with the new skills.
[+] [-] henning|5 years ago|reply
People like Mike Acton and Jonathan Blow give incredibly condescending speeches about "practice" like you should be able to just make a Win32 API app that calls DirectX (or some other comically absurdly bad API) from memory. Blow in particular loves harping on this and loves saying that web developers are incompetent and wasting their time creating awful products.
How much time do you spend making new apps on long-lived projects? At many companies, the answer is zero. These same companies may think you suck shit at programming if you can't remember command line options you never have to use in day-to-day work.
[+] [-] GuB-42|5 years ago|reply
I like doing that as an exercise. It trains you well for a very common situation for professional developers. You have to work on a project, poorly documented, the original developers left long ago and no one really knows how it works, except maybe for one guy who don't have time to answer your questions. Of course it is internal stuff, so the internet is no help. It is a valuable skill, literally, companies are ready to pay good money to people who can do that.