47

Not having finished any education, and writing code during interviews.

I have a pretty nice resume with good references, and I think I'm a reasonably good & experienced dev.

But I'm absolutely unable to write code on paper, and really wonder how some devs can just write out algorithms using a pen and reason about it, without trying/failing/playing/fixing in an IDE.

Education I think.

I can transform the theory on a complex Wikipedia page about math/algorithm into code, I can translate a Haskell library into idiomatic python... but what I haven't done is write out sorting functions or fibonacci generators a million times during Java class.

I don't see the point either... but I still feel utterly worthless during an interview if they ask "So you haven't even finished highschool? Can you at least solve this prime number problem using a marker on this whiteboard? Could you explain in words which sorting algorithm is faster and why?"

"Uh... let me fetch a laptop with an IDE, stackoverflow and Wikipedia?"

Comments
  • 4
    @Nanos The problem I have with this is that it requires considerable practice for a skill which is only useful in niche situations.

    My brain seems wired to store pointers to information, not to memorize details... it seems inefficient.

    I really do need to work on some demo apps or libraries though, my current interview portfolio is too empty for two decades of programming.
  • 4
    @Spikey I started out with a C64... that might have been my problem.

    I might have been one of the few 80s kids growing up like a millennial, with just a computer in my bedroom. I'm too used to a keyboard and learning-by-trying.
  • 4
    @bittersweet I'm not sure why, but that never was an issue for me.

    Back when i had no laptop and was only coding on my PC I was partially writing code on paper when I had spare time and no computer available.

    It contained a few syntax errors, of course, but I could do debugging later.

    At university, this is actually more of a math than a programming thing, imo.
    You learn to do mathematical arguments and most algorithmic problems you do on paper a quite mathematical - and very often pseudo code.

    Only in tests you might write a few realistic functions on paper.
  • 2
    Maybe it's just a matter of personality and personal mindset. I always tended to think rather abstract and philosophical.
  • 3
    @AlexDeLarge I'd say, that depends. For developing programs, you're definitely right.

    But it might find a lot more application for developing actual algorithms and patterns which don't necessarily yield an executable product in the end.
  • 4
    @theCalcaholic I'm a big fan of academically jerking off about theoretical optimizations, perfect type systems and codegolfing to make the shortest, fastest or most elegant pathfinding function.

    But even with math... I can carry a calculator, and prefer to clean up my brain and forget the exact formulas and implementations, all I need to store in my memory are vague pointers to terminology so I can find the information when needed.
  • 1
    @bittersweet You're not working with numbers for that kind of maths, so a calculator isn't of much help. ;)

    It's about mathematical arguments/proofs (not sure about the cost english term) - so how only dealing with logic.
    Of course you're using calculators, but most of what you're doing is either text or pseudo code.
  • 1
    @AlexDeLarge They are the basis upon which actual projects are built on. E. g. If someone hadn't designed the merge sort algorithm and calculated its complexity on paper, you probably wouldn't have it available in your libraries.

    Another example are cryptographic algorithms. I'm pretty sure noone creates them by just starting to code.
  • 1
    @theCalcaholic I just mentioned "calculator" as a concept for automating numeric math — the point is that I'm very good at finding, understanding and then automating, but quite bad at memorizing or deducting information on the spot.

    Take category theory: There is some corner of my brain remembering that hylomorphisms and metamorphisms are kind of each others duals, but the memory address storing which is which and how the rest of F coalgebra fits in, has a label "who cares" and a big pointer to a wiki.

    And that brain cleanup happens at all levels... I write JS, PHP, Go and Rust daily, and really need an IDE with autocompletion and red squigglies to remember the syntax of loops and callbacks and type signatures in each.
  • 2
    "Oh, you expect me to code on the whiteboard? Well, I am sorry to inform you that this won't be a fit. I wish you the best on your further search. Where was the door again?"
  • 2
    @bittersweet Yeah I'm totally on your page in terms of actual applications.

    "Coding" on paper is only relevant for research, specifications, etc.
  • 2
    Try competitive programming?
  • 1
    " if you are nothing without this IDE, you shouldn't have it "
  • 1
    Totally agree with you @speedForce.

    If you can't express the idea that you have in mind with a pen and paper, in a simple way, then you simply haven't understood it well enough. Practice ;)
  • 3
    @ParkCity Yeah because carpenters still use hand drills as well.

    I'm fine using either intellij or vim with some language plugins... but the Crockfordian attitude of "you shouldn't need syntax highlighting if you are a good programmer" is baffling to me. Why would you make your life harder on purpose?

    I prefer keeping my mind clear and free from distractions so I can spend my time writing clean, well-tested composable code, instead of having to hunt for a forgotten semicolon or a spelling error.
  • 1
    @ParkCity I understood that reference
  • 2
    @Nanos That last part, exactly.

    I kind of go through the junior-to-senior growth spurt every day between 9am and 11am, then someone interrupts me with a different subject and I have to start over again.

    When left uninterrupted, I become temporarily super productive, work through the whole sprint in 3 days, and then reach the stage where at 3:30am I have multiple bugfix PRs on the github pages of the tech stack we're using, and covered in bits of stripped wire and dremeled plastic because my keyboard needed a built-in unit-test led strip indicator.
  • 1
    Speaking of programming on paper...

    https://hackaday.com/2018/01/...
  • 1
    Next time simply respond:

    "I'm sorry. If you expect me to create your next great product with that 'IDE'... Well, then I'm out..."
  • 1
    I really hate some random HR test people's coding skill on paper. Do you ever need write code on paper during work? If no, why bother. I know high school coding competition ask write code on paper but that's not real world.
  • 0
    @irene I agree, but fully knowing isn't always necessary to be able to practically apply it.

    For many things, it's good enough to have an intuition on how it interacts and behaves. That way you can build a broader "knowledge" with lots of pointers, instead of wasting time on learning lists of exact details.

    I mean, take history: I think it's more important to have a rough feel for the whole scheme of things, the dance of all events and why they happened, instead of learning the exact birth/death dates of all kings and generals. Those, you can look up.
  • 1
    @bittersweet In my opinion you need to create the draft for a software solution on paper (e.g. in the form of pseudo code), but you don't need to be able to write a syntactically correct program in a given language.

    The reason for this is, that the first task shows if you are able to solve problems and design algorithms - something which requires more than just being able to research. For some software development positions this kind of skill set might not be required, but for most it is to different degrees.
Add Comment