You're looking at Less Wrong's discussion board. This includes all posts, including those that haven't been promoted to the front page yet. For more information, see About Less Wrong.

Risto_Saarelma comments on Open thread, Jan. 12 - Jan. 18, 2015 - Less Wrong Discussion

6 Post author: Gondolinian 12 January 2015 12:39AM

You are viewing a comment permalink. View the original post to see all comments and the full post content.

Comments (155)

You are viewing a single comment's thread. Show more comments above.

Comment author: Username 14 January 2015 04:14:12AM *  6 points [-]

(request for guidance from software engineers)

I'm a recent grad who's spent the last six years formally studying mathematics and informally learning programming. I have experience writing code for school projects and I did a brief but very successful math-related internship that involved coding. I was a high-performing student in mathematics and I always thought I was good at coding too, especially back in high school when I did programming contests and impressive-for-my-age personal projects.

A couple months ago I decided to look for a full-time programming job and got hired fairly soon, but since then it's been a disaster. I'm at a fast-moving startup where I need to learn a whole constellation of codebase components, languages, technologies, and third-party libraries/frameworks but I'm given no dedicated time to do so. I was immediately assigned a list of bugs to fix and without context and understanding of the relevant background knowledge I frantically debug/google/ask for help until somehow I discover the subtle cause of the bug. Three times already I've received performance pressure, and things aren't necessarily looking up. Other new hires from various backgrounds seem to be doing just fine. All this despite my being a good coder and a smart person even by LW standards. I did well in the job interview.

When I was studying and working in academia, I found that the best way to be productive at something (say, graph theory research) is to gradually transition from learning background to producing output. Thoroughly learning background in an area is an investment with great returns since it gives me context and a "top-down" view that allows me to quickly answer questions, place new knowledge into an already dense semantic web, and easily gauge the difficulty of a task. I could attempt to go into more details but the core is: Based on my experience, "hitting the ground running" by prioritizing quick output and only learning background knowledge as necessary per task is inefficient and I'm bad at it.

At the moment my only strong technology skills are the understanding of the syntax and semantics of a couple of programming languages.

Am I at the wrong company? Am I in the wrong profession -- should I go back to academia, spend four years getting a PhD, and work in more mathy positions? Thanks!

Comment author: Risto_Saarelma 15 January 2015 05:02:32AM *  3 points [-]

Programming with other people, working with large codebases and working with multiple libraries and frameworks are basically all software engineering realities that education gives minimal training for. If you can view the job as a learning experience, it's probably a good one even though it is frustrating on multiple levels right now. If you're scrupulous about needing to pull the same weight as the other members and are thinking about switching jobs because of this, you could just talk about it to your manager. They might concede that yeah, you're not a good fit, and then you can go find a less miserable place to work in, or say that they think you're actually doing fine, in which case you can go back to considering the learning experience perspective.

Can't advise on the taking the time off to do a PhD instead, but I don't think you should give up on programming just yet. Like others said, there are many companies, and bigger companies have more resources to spend for training and mentoring. Also, the current mode of mixing together a bunch of frameworks developed in the last few years nobody really understands and rushing to the market with a minimum viable product chock-full of technical debt is probably just an artifact of the web as an application platform still being a reasonably new thing and people rushing to figure out all the simple things they can do with it. If the technology stabilizes, there's going to be more opportunity for mastering long-lived technologies.

On the other hand, becoming a specific technology expert in programming is a gamble. Technologies just plain up die sometimes. Math domain expertise is probably a lot more durable, but it's probably also trickier to get a nice math job than it is to get a nice programming job.