from Hacker News

Ask HN: Greybeard cowboy coder looking for advice on being more professional

by madmonk on 11/19/22, 4:45 AM with 27 comments

I've been a self-taught web developer for 16 years and am currently in the job market. I've been getting some take home coding assessments that don't look like anything I've encountered in my career so far. I've always assumed that there were holes in my knowledge due to the way I taught myself, which was essentially develop the logic in my head and then look online on how to manifest that logic in the language the project uses. It's gotten me pretty far, but I believe I've hit the limit and feel that I'm stuck as a intermediate developer. I think it's time to take a few steps back and "relearn" web development.

I've just purchased several udemy courses on computer science and various languages. Can anyone suggest any other ways to fill the gaps in my knowledge? Specifically, I'm looking for:

Books

Blogs

Podcasts

Online Courses

Any other tips

Thanks!

EDIT: The "Professional" descriptor in the title isn't referring to corporate office professionalism. I'm more referring to professional proficiency.

  • by nivertech on 11/19/22, 6:30 AM

    I think being a "Cowboy Coder" is problematic in a professional environment.

    Being on the both sides, I know how hard is to work with the cowboy coders / lone wolfs, especially if they're introverted.

    Inheriting a project written by a cowboy coder might be a nightmare.

    Obviously I don't know your background and skillset, so the stuff written below may not apply to you.

    You need to learn how to communicate clearly and collaborate with the management and the team members.

    You need to learn modern SDLC methods and techniques (basic project management such as Kanban, documenation, clear commit messages, Pull Requests, TDD, CI/CD, IaC[1]/DevOps, etc.)

    Coding assignments should be the easy part.

    --

    1. Infrastructure as Code

  • by nvln on 11/19/22, 7:37 AM

    Here is one idea:

    Have a look at some of the problems that are surfacing in the tech community or new products that are being launched.

    Examples: Twitter, all the stable diffusion front-ends, etc.,

    Find a stack that lies at the intersection of demand and your preference. (Flutter, React/React Native, Remix or SwiftUI / Kotlin) and get your solution done. Showcase that on Github, Hacker News, your resume.

    1. This will bring you up to date and renew your self-confidence as you have something tangible to say that your knowledge has been filled. 2. Instead of doing a myriad of take-home assessments, you can lead with this project and its open source code. If the company's stack is similar, it would be silly for them to assess you again and if they do, you are already prepared for it.

    ----

    It is rare to find a team without a cowboy coder. In most teams they are assets as long as they are not asshats as well.

    Good luck.

  • by 95014_refugee on 11/19/22, 8:46 PM

    First: congratulations, you've done the hard part (accepting there's a challenge that you need to overcome). Seriously, you probably feel like you're at the bottom of a very deep hole, but that acceptance gives you the opportunity to start climbing. Also, 16 years is not "greybeard" territory. At all. You have plenty of time.

    Second: you're looking at a journey of continuing self-discovery. There is no "one technique fits all". Don't judge yourself for not reacting well to any particular thing; use it as a way to better understand yourself - your current strengths, your biases, your blind spots, etc. Was the thing annoyingly obvious? Did you feel like the presenter was patronising you? Did it all go 'way over your head because you couldn't work out the basic premise?

    Going wide, especially while you are trying to find yourself, may help you find a thread, or a style, or a philosophy that resonates with (or delightfully challenges) you.

    With that said, I am a big, big fan of Plauger's 'Programming on Purpose' books. Nothing is perfect, but he does a remarkably good job of laying out basic principles - building blocks - that can help you go from programming intuitively ("cowboy style") to making software in a deliberate and intentional way. Because the books are collections of magazine columns, they're easily digestible in small pieces - good for reading on transit, over a cup of coffee, etc.

  • by AnimalMuppet on 11/19/22, 5:09 AM

    The coding challenges are only worthwhile if you're going to interview at a place that interviews that way. Otherwise they're mostly a waste of your time. If they "don't look like anything I've encountered in my career so far", that's telling you something - that as professional development, they're not getting you anywhere that's actually useful in your career.
  • by gsatic on 11/19/22, 5:42 AM

    Its easier if you are working on some specific problems. There are too many tools. Too many framework. And most of them do exactly the same things. Once you know how one works its not that hard to understand what the others are doing.

    So pick a popular well known open source project and take a look at their github repos. Almost all will have their website code on github as a separate repo too. Look at the issue list and dive into the code to try to fix it. If you get stuck ask a questions framed as 'how do i do x its not documented can you guys explain or give me a link etc'. Once you have some interaction going, it will pull you in.

  • by jpoesen on 11/19/22, 10:36 AM

    Check out The Impostor's Handbook: 2-parts on various CS concepts in human-readable language.

    Also, I'd look into modern practices around the tech stack / programming language of your choice: code linters, debug tools, static analysis tools, refactoring tools, various command line tools, build/packagement tools, etc.

    Also familiarize yourself with the CI/CD tools/approaches in your field.

    Lastly, find one or more opensource projects with decent QA practices and start contributing to get into the habit of following prescribed tools, code standards, automated testing, etc.

    Good luck.

  • by cratermoon on 11/19/22, 7:06 AM

    In no particular order:

    Code Complete, Steve McConnell

    The Pragmatic Programmer, Andy Hunt and Dave Thomas

    Programming Pearls, John Bentley

    Peopleware: Productive Projects and Teams, Tom DeMarco and Timothy Lister

    Structure and Interpretation of Computer Programs, Harold Abelson

  • by trh0awayman on 11/19/22, 8:45 AM

    What kind of challenges were you given? Might help if you can point specifically to where the gaps are.
  • by hnthrow10282910 on 11/19/22, 9:08 AM

    These comments are great, but to get a job, you can’t casually read Code Complete.

    1. Cracking the coding interview 2. Leetcode 3. System design

    CTCI will give you the key of the land. The following two will you get a job.

    Timebox 60 days. I got FAANG offer doing this and some other offers.

  • by knightofmars on 11/19/22, 7:21 PM

    What type of organization have you been applying to? (E.g. Google, Netflix types? Enterprise business types? Start-ups?)

    What type of work have you been doing the last 16 years? (E.g. PHP web dev, Enterprise Java/.Net, etc.)

  • by vaidhy on 11/19/22, 6:59 PM

    I do not understand what you mean by "cowboy" coder. Can you also talk a bit about what tech stacks are you familiar with and where you want to specialize? That would help getting a more useful path.
  • by djgribbin11 on 11/19/22, 1:53 PM

    Highly recommend the online courses from “Frontened Masters.” The courses are exceptional and provide modern templates, tooling, and workflows. Other courses focus on solving specific problems while these courses teach you how to build a modern application end-to-end solving problems along the way and providing a broader context as to <i>why</i> a particular solution is appropriate.
  • by f0e4c2f7 on 11/19/22, 6:10 PM

    CS50[0]

    Some good book recommendations[1]

    [0] https://www.youtube.com/watch?v=8mAITcNt710

    [1] https://teachyourselfcs.com/

  • by cratermoon on 11/20/22, 3:56 AM

    I forgot one book. The Elements of Programming Style, Kernighan and Plauger