I hear the phrase "learn to code" around the rat and postrat communities occasionally. From context I get the main argument, the income is good, the work isn't too difficult. Has anyone written a fuller argument for learning to code? Or what is your favorite version of the argument? I'm considering a career change and want to hear it out.

6 comments, sorted by Click to highlight new comments since: Today at 10:27 AM
New Comment

Here are some reasons:

  1. As you say, the pay is good.  But even having said that, I think most people don't understand quite how good, if you actually optimize for it (primarily in the US, though the rest of the world is catching up).  At the top decile, which isn't that hard to get to if you have some native talent and actually try, the pay bands look something like this:
    • Junior (0 - 2 years of experience): 150-200k/year
    • Mid-level (2 - 5 years of experience): 250-400k/year
    • Senior (5+ years of experience; no pressure to advance beyond this level): 350-550k/year
    • Staff (8+ years of experience): 500-750k/year
  2. The work is fairly heterogenous both across and within industries, companies, and roles.  It's not that hard to find "something else" to do if you don't like the specific thing (or type of thing) that you're working on at any given moment, though hopping across some domains can require a bit more retraining than others.
  3. If you like solving logic puzzles, you'll probably find the work enjoyable, at least until you grow your career to the point where you're doing less writing code and more "everything else".  At that point you typically decide whether you want to make the jump to the next level (from Senior to Staff) - you don't totally stop writing code at that point, but it's at most a small part of your responsibilities.  You don't have to make that jump if you don't want to; at most companies Senior is the "terminal" level at which point there's no expectation that you need to continue growing your skills to the next level.
  4. It changes the way you think.  Many of the common abstractions and patterns used in software engineering have obvious applications for real life tasks and decisions.  If you internalize the patterns in your day job, you'll start seeing them everywhere.  Oftentimes learning something on the job will feel like a fuzzy intuition you had clicking into place, as you realize there's a formal structure for it.
  5. It gives you a toolset for making your own life easier in a variety of trivial (and sometimes not-so-trivial) ways.  Not all data entry/scraping/etc is worth automating, but sometimes it is.  Custom browser extensions are something that can be very valuable if you have any sort of idiosyncratic needs or preferences in terms of interacting with the internet.

Jesus christ. If I made that kind of money I could literally retire in a decade and then do whatever I want

I learned to code in R pretty well during my PhD, and I do enjoy it. It's usually relaxing, solving the problem feels good when you get it. I'm better than my colleagues at debugging and problem solving our code (data engineering mainly)

To be clear, you are talking about the salary for software engineers. Is that a better ladder than data scientists or data engineers? (my skills are closer to either of those fields currently)

The software engineering ladder is wider, not taller, than Data Scientist - DS roles typically specialize to a domain earlier than SDE, and the variance in pay across companies and specialties shows more for DS than SDE.  Data Engineer usually implies a bit less independence and more well-defined problems, and pays a bit less overall.

The good meta-advice is to spend some effort thinking about your comparative advantage(s), and to recognize that taking a job isn't a life commitment - pick the one that seems promising, but after a year or two you should do your search again.  Especially in early years, changing jobs is likely a much faster path to promotion (and actual growth in understanding how different places do things) than staying at one place.

The ladders for data scientists and data engineers tends to be comparable at these kinds of companies. If you have a quantitative PhD with an emphasis on any domain that has transferable domain knowledge (i.e. anything math/CS/econ probably counts) then you might even be able to start one step up the ladder. But even if you just learned R to do data analysis in some other field that would probably make it much easier to pick up, say, python, and hop sideways.

I should note that the junior-level compensation is probably the most difficult to attain if you're coming in from another field, since the major pipeline is "college grad with several internships gets hired start into big tech company". By comparison it's much easier to get any sort of entry-level engineering role (which is still going to pay pretty well), get a couple years of experience, then go on to one of the big tech companies. (It's not impossible to get a junior role at a big tech company straight out of the gate; I know several bootcamp grads who have done it. It'll definitely be made easier by having a PhD.)

  • It’s fun
  • It’s useful even if you aren’t a professional software engineer. I taught myself some basic programming a few years ago and used it to automate tedious reports and processes for my job (which allowed me to spend time on less urgent but more interesting projects).

If you're into information then learning to code can help you acquire more information more easily and process that information in beautiful ways that could be laborious or impractical otherwise. That's probably the simplest explanation with the broadest appeal. At the risk of downvotes (maybe there are a lot of professional coders here), I'm not sure why anyone would want a job coding because then you risk the fun aspect for someone else's purposes in exchange for some tokens and quite a lot of your time. 

New to LessWrong?