[-] funbike@programming.dev 3 points 1 year ago

When learning on my own, I I prefer to learn things that will last decades rather than years or months. Examples: Linux (bash, core utils, containers), CS (algorithms, data structures), compilers, other paradigms (functional, logic, oop), hardware architecture (logic gates, cpu design, assembly), encryption algos, Vim, etc.

Stuff that I think will only last a few years I will learn as needed on the job or at least on the clock.

[-] funbike@programming.dev 1 points 1 year ago

I think the answer is obvious. Start looking for another job NOW. Work is out there, if you can code.

[-] funbike@programming.dev 1 points 1 year ago

You will lose the best candidates with an onerous coding challenge.

Our process, which has been heavily influenced by debate on r/experiencedevs on reddit involves a short phone screen, a 30 MINUTE coding challenge, a tech interview consisting of pair programming, and a non-tech interview with management. Very light.

The coding challenge is a FILTER only. It's not to evaluate who to hire, but instead it's to filter who not to continue interviewing.

You learn a lot during pair programming in a short period of time, including personality and team fit. We let them drive and we just watch and discuss. The assignment is to fix a bug, and refactor the code the caused the bug.

[-] funbike@programming.dev 1 points 1 year ago* (last edited 1 year ago)

Yes, but it's a very rare event. Maintaining state (form fields) makes it less of an issue. As I said, most deploys are at 4am at extremely low usage (usu zero), and even then a refresh is only needed if the backend has had breaking changes. A severe bug requires a mid-day deploy, but in my experience most severe bug fixes are only a few lines and therefore aren't a breaking change so don't require a refresh.

Our way wouldn't work well if you had 24 hours of heavy load, but most apps I've written have been US-only with low nightly usage (HR, K-12 admin, power grid, medical).

[-] funbike@programming.dev 0 points 1 year ago

Zero downtime deployments can get very complex for heavy usage apps, such as blue-green deployment.

We decided to avoid the complexity with some practical workarounds.

  • Most deployments happen at 4am. "develop" branch merges deploy at 4am, and "master" branch merges deploy immediately.
  • We force browser refresh if the front end detects the back end has had breaking changes. We attempt to re-populate form field values.
  • During database migrations, we send 503 with Retry-After header in response to POSTs. Our client code knows to wait for that time and try again. If the time is too long, the user gets a friendly message that it will try again in X seconds. GETs are handled by an available read-replica, if possible.

funbike

joined 1 year ago