shminux comments on Open thread, Jan. 12 - Jan. 18, 2015 - Less Wrong Discussion
You are viewing a comment permalink. View the original post to see all comments and the full post content.
You are viewing a comment permalink. View the original post to see all comments and the full post content.
Comments (155)
(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!
Looks like a wrong company. Try looking for something more structured. It's good to learn the proper requirements/design/coding/testing techniques before throwing them out the window.