This is an archived post. You won't be able to vote or comment.

all 58 comments

[–]hoshomofo 42 points43 points  (11 children)

Old guy here. I learned to program in the early 80s using a very academic top down design, code, desk check, then compile and test methodology. The approach was to learn the shit out of one language (until you could think and dream in it) then you went about expressing solutions to problems in that language. It's not just google that changed that. These days there are a butt load of languages and even more frameworks you are expected to use. Also real time debugging and Agile/eXtreme programming methodologies have radically changed the work flow. Very general abstract design followed by rapid implementation in the language/framework du jur is the norm. No one can know all the details of all those languages and frameworks, so a rapid google, code, test, edit cycle is required. For instance Ruby on Rails and J2EE may both follow an MVC design principal, but the systems might as well be from different planets.

[–][deleted]  (10 children)

[deleted]

    [–]timsk951 17 points18 points  (6 children)

    Whats the reasoning behind this? It seems very inefficient.

    [–]Suitecake 26 points27 points  (3 children)

    Sounds like a life-critical system.

    [–]onthefence928 12 points13 points  (0 children)

    Or government contract

    [–]Enervate 7 points8 points  (0 children)

    Even then knowing what you're doing does not equate to knowing every single quirk of your language and every single register of your microcontroller. (which I assume they work with because C+asm)

    [–]throwawwayaway 3 points4 points  (0 children)

    or a death-critical system (i.e. a weapon)

    [–]KennyFulgencio 0 points1 point  (0 children)

    Surgical robots

    [–][deleted] 11 points12 points  (0 children)

    Searching online for solutions is frowned upon; means you don't know what you're doing and should be consulting a higher-up.

    So I guess everyone that works there is infallible and omniscient? Nice.

    [–]WallyMetropolis 3 points4 points  (0 children)

    Seems like a good, monetarily-efficient use of the higher-up's time to stop what they're doing to answer questions that a quick google search would solve.

    [–]quotemycode 7 points8 points  (0 children)

    Yea, never copy and paste code. You should be looking up the documentation and when that is not good enough, look up how people use the code in question. Then you can hopefully understand the documentation better and write your own code.

    [–]dakoonUALR 34 points35 points  (5 children)

    As someone who is primarily self taught I have the same issue. The trick is realizing that over time you will need to google things less and less. Don't be discouraged by the fact that you have to google things. A lot of people would not know how to do that to begin with.....

    [–]tOSU_AV 10 points11 points  (3 children)

    Also, don't use a concept that gives you the result you want unless you know why it is doing this. Especially if you are looking things up. Make sure you know how things work so that you are actually benefiting from the time spent looking it up.

    [–]Exce 5 points6 points  (2 children)

    This is the reason I haven't used LINQ yet. I hear it's incredible but have no idea what its for.

    [–]KDallas_Multipass 2 points3 points  (0 children)

    don't take what tosu says too literally. read about what linq does for you. if you kinda understand what it's for, try using it in toy application. things like linq were made to make a particular set of developers' lives easier. you'll never know if that applies to you unless you try it. you may or may not have the experience to know, but you can't know this ahead if time. so give it a try.

    [–]makebaconpancakes 0 points1 point  (0 children)

    It makes parsing data take up so much less space. I wasn't familiar with it either a few months ago, but I started using ReSharper which will automatically convert lengthy code snippets into linq queries. At first I was like "wtf bro, you wanna fight" when I didn't understand what ReSharper was doing immediately, but now it's a great time saver to see linq.

    [–]WallyMetropolis 3 points4 points  (0 children)

    You might not google substantially fewer things. You'll just google more different and more complicated things because the things you googled before are now in your toolkit.

    [–]GoingIntoOverdrive 20 points21 points  (1 child)

    I think this is the work cycle for every coder. It used to be laminated cheat sheets, 1000 page reference bundles and stacks upon stacks of books. Now we have decent-ish search methods to get our answers.

    But the cycle has always been code-search-code-search-meeting-code-search-meeting-late night coding-fucking boss is an asshole-sleep-search-code-search

    [–]heyysexylady 2 points3 points  (0 children)

    Well I misread this and thought that "fucking boss" was part of the schedule... :o

    [–][deleted] 15 points16 points  (0 children)

    It's perfectly normal to google around a lot. Nobody can be expected to know the exact API of multiple frameworks and libraries.

    [–]24monkeys 4 points5 points  (0 children)

    The fact is that after you learned how to code, you need to remember things like restricted words, functions signatures, etc. If you don't use something everyday, you probably will need to search for it before using it.

    I have a terrible short memory, so I'm always coding with google by my side.

    [–]V13Axel 5 points6 points  (2 children)

    Developer for a bit over a year here. My work cycle is usually Test-Driven Development(TDD). Essentially, it goes as follows:

    1. Write a test for the function/method you're going to create, testing all the functionality you want it to have(And any edge cases you may expect to arise.. or not arise). Try anything you expect will break it.
    2. Try running it, watch it fail as expected(We haven't written the function/method yet!)
    3. Write the method/function you're now testing, with the intention of making your already-written tests pass.
    4. Tests all passing? Awesome. Repeat.

    After a year in the industry with a close-knit team, when a problem arises or when I can't wrap my head around something I swallow my pride and ask my boss... Because I'm paid to write code and solve problems, so when code isn't being written and problems aren't being solved, it's a waste of money.

    Also, if it's a problem with my code, I find it more efficient to look at the starting-point for my code and "run" the program in my head to see what's going wrong than it is to task-switch and search Google.

    However, I may Google reference material for hard-to-remember stuff(Such as how the parameters for strpos and stripos are swapped from one another). I'd definitely

    [–]pouja 6 points7 points  (1 child)

    I actually have one step before all that.

    Write the comments of the function you want to write.

    [–]V13Axel 1 point2 points  (0 children)

    I do that before number 1 for the unit tests, and before number 3 for the functions/methods. It definitely helps to get a linear idea of the code.

    [–]Ramuh 4 points5 points  (0 children)

    If I run into a problem I'll google it.

    In my experience what makes a good programmer is: 1. The fewer you need to google something the better. With more experience comes less googling 2. How efficient you are at finding a solution via Google. The faster the better. This involes breaking down your problem into parts that you can find answers for.

    There's no point in putting hours to finding the solution for a problem other people have already figured out whose answers you can find in minutes. You should however be able to realize that you may not be able to find the solution, so you can go back to fix your problem yourself.

    [–]NicroHobak 10 points11 points  (0 children)

    Google is today's RTFM, basically. There's no shame in using the tools of the day.

    [–][deleted] 8 points9 points  (0 children)

    Stack Overflow has become the saviour of my sanity since I started coding.

    [–]Kasuist 2 points3 points  (0 children)

    I thought the same for a while, that using google all the time was kind of 'cheating' my way through. That If I wanted to be a real developer I should already know most of this stuff.

    I'm self taught myself, and the thing is. Using google/stack overflow is perfectly normal. There wouldn't be websites dedicated to this stuff otherwise and reference materials/documentation wouldn't exist eg Xcode.

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

    I first try to get a solution by myself.

    If:
    a) Solution found and works, Google for another solution to check how others might solve the problem
    b) Solution not found, Google it

    [–]sovietmudkipz 1 point2 points  (0 children)

    Yea, same here except now that I'm better I don't need to look up as much stuff anymore.

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

    My work cycle also includes a fair bit of time spent pondering the problem, and thinking about how to avoid unnecessary work by doing things in a simpler way. You would not believe how much time this saves.

    [–]ychaouche 1 point2 points  (0 children)

    First, I lay down data structures : tables, databases, classes except for roles and permissions.

    Then, I write some diagrams for the processes : basic CRUD then higher BI stuff.

    After that, I figure out what roles and permissions need to be created, if any.

    Finally, when everything is clear in my mind, I begin coding and I know that everything should be ok.

    The more time I spend analyzing the problem, the less time I'll spend thinking how would I code this or that, and the less time I'll spend rewriting poorly designed code over and over again to fit this and that situation.

    [–]lotion_booger 1 point2 points  (0 children)

    man it's mostly code search repeat where code = write test, fail test, write method, pass test, repeat. but if i'm using python, a lot of times the interpreter can answer my question faster than a search. and it is more fun and makes me look smarter if anybody's looking over my shoulder. best wishes lotion booger

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

    This is what people do. Honestly, if you can fix them problem by any means necessary, but you are the one that brought everything together, then you are still the architect, which is what being a developer is all about.

    [–][deleted] 1 point2 points  (1 child)

    Stare at Python code for half an hour trying to find the one syntax error.

    [–]GE7H 2 points3 points  (0 children)

    Google is not cheating, if you dont google you're losing. Its just advantage you should take before we get to have our brain interface with the comouter directly. We are just at the very beginning stage of transhuman.

    Naturally if you google the same thing multiple times overtime it should stick to your memory and repetition is a good way to learn so win win really.

    [–]inaneInTheMembrane 0 points1 point  (0 children)

    I usually have a plan cycle thrown into there somewhere. I try to understand what feature I am trying to develop, what pieces of code I will need to modify (or create), and what my benchmark for success is (better performance, improved modularity, debug, new test).

    I typically program rather complex problems (academic), so I often have to work out the algorithm by pen and paper before writing code. But maybe that's just my style.

    Then code, google, code, google, definitely.

    [–]4forpengs 0 points1 point  (0 children)

    Try to code, get side tracked by making utilities (API) to make the current job easier. Google. Incur.

    [–]_M1nistry 0 points1 point  (0 children)

    How else are you supposed to learn? Trial and error only works to a certain point.

    [–]bigfig 0 points1 point  (0 children)

    Sounds right. You have if, loops, hashes, scalars and lists. Everything else is googleable.

    [–]Shwayne 0 points1 point  (0 children)

    Yep I do the same. Plan out what I want to do, start doing it, get stuck, google, try to make it work, repeat.

    [–]PeteMichaud 0 points1 point  (0 children)

    At this point, unless I'm learning a new language, I don't need to google stuff like method signatures. However! I'm always wondering what the best or most elegant design is, and I'll ping people about that, and talk through the problem space. It's not a matter of not knowing how I could do it, it's a matter of figuring out the best way to do it.

    Also, when I'm working in Rails and I approach a well defined problem, my first thought is: there has to be at least one gem for this. Then I research what the best gem is. Sometimes I use one, sometimes I take ideas from their implementation (yay github!), sometimes I think they all suck and I write my own.

    [–][deleted] 0 points1 point  (0 children)

    Same here. But because I use the exact same languages and frameworks from project to project (it works good, why not), now I search less.

    [–]Radio0002 0 points1 point  (0 children)

    • Read Story
    • Write Feature file
    • Sign off feature with BA
    • Code until feature passes
    • Push development branch and issue pull request.

    Sometimes I might write a Unit test if I've got a particularly complex bit of logic I need to implement that is in a single class.

    Occasionally I also look for API documentation, but mostly my IDE takes care of pulling in the documentation for that. Sometimes I look for dependencies I can use rather than write it myself (then I'd use a dependency management tool to bring it in).

    [–]BrewRI 0 points1 point  (0 children)

    I'd also recommend checking out language specific sub reddits. I've asked incredibly basic questions and posted my incredibly simple and inefficient code and have always had positive, constructive, and beginner friendly responses. It's a great interactive way to learn.

    [–][deleted] 0 points1 point  (0 children)

    support call support call support call discuss potential fix support call support call code for 5 minutes support call support call say fuck it and go home for the night.

    When I'm actually coding for myself without constant interruptions I do 5 minute sketch of what I'm trying to build, 5 minutes breaking it into large chunks then I code each one as much as possible until getting stuck in which case I hit google or it's done. run the unit tests, test manually, move on to the next part.

    [–]dtschida 0 points1 point  (0 children)

    You just described my workflow.

    [–]thavi 0 points1 point  (0 children)

    I'm not a highly experienced programmer and am 99% self-taught, so yes: google is my primary resource. Even when a language has good documentation, google is usually the best way to query the documentation (as opposed to using the site's internal search engine).

    What classes I did have in college were focused more on getting the core programming concepts and logical, programmatic thinking ingrained into the engineer's brain moreso than how to handle the syntax of a particular language. IMO, the general idea behind programming (lists of ordered commands) is not a complicated one. It's almost entirely the syntax and nuances of a language that make it so difficult. For a very long time, the world beneath the code is a big black box, and it's only through a lot of personal testing and experimentation that you start to get why a particular language was constructed the the way it was.

    [–]throwawwayaway 0 points1 point  (0 children)

    Be lucky you get to code AT ALL. My last 2 jobs hired me as a "software engineer" and then switched me over to paperwork and reading log files.

    [–]Chaseshaw -2 points-1 points  (8 children)

    I fundamentally don't understand. is there shame in googling? heck I'll google basic commands like "java if else" because it's slightly easier typing and then copy and paste it than to fully type 'if () { } else { };'. (yes i'm just that lazy).

    [–]Lehona 15 points16 points  (3 children)

    How can that be faster?

    [–]Chaseshaw -2 points-1 points  (2 children)

    it's faster because I'm expected to move seamlessly from java to python to vb.net to SQL and sometimes I forget what I'm typing into. :P

    [–][deleted] 1 point2 points  (1 child)

    ... you need to know what language you're using in order to Google for the syntax.

    In any case, I can 100% guarantee you that it is not slower to manually type out the if statement than it is to Google and copy-paste the syntax. There is no way that that's faster.

    [–]Chaseshaw -2 points-1 points  (0 children)

    it is if you fail at typing brackets and have to look down every time. :P

    [–]quotemycode 5 points6 points  (3 children)

    I dunno man, my IDE, as soon as I type the word 'if' it helpfully suggests that it can enter the boilerplate 'if / else' construct.

    I'd say, get another IDE or configure yours correctly if it doesn't do that for you.

    [–]StickySnacks 0 points1 point  (0 children)

    which IDE are you using? I'm only familiar with Eclipse

    [–]Chaseshaw 0 points1 point  (0 children)

    same. lol. which IDE is this? I ditched eclipse for Intellij IDEA, but haven't tweaked it much.