Ask HN: How to be senior software engineer?

11 points by throwaway1183 ↗ HN
Dear HN,

I am in the final year of my master's in CS. I have a workable background in graphics/vision. However, as I am approaching the end of my degree, the industry has changed a lot. Most of the work depends on NeRF and diffusion. Now, I can stay relevant by studying these methods, but I am too tired of running in the rat race. I want to focus my career to be a 3D software engineer. Where do I start? All my experiences so far are in applied research. I enjoy it but burnout is really high for me with these roles. How do I change to software engineering?

Before I had a clear goal to be a research scientist. Now it is about being a 3D software engineer. Do you have any tips to make the switch?

Thank you.

11 comments

[ 4.1 ms ] story [ 40.9 ms ] thread
Start by being an associate/junior. Then wait about 4 years.
Don't just "wait", work hard, deliver results, assist your co-workers with your presumably greater theoretical knowledge. Academic credentials are only valuable to the extent that you deliver a significantly greater practical contribution.
Answered about 100 times already but I’ll answer again. Senior software engineer doesn’t refer to something you are or a quality inherent to you. It refers to the degree of competence, leadership, and experience you bring to a project and team. If you plan to leave academia remember to leave behind the academic obsession with titles and credentials.
Having left academia (well, industrial research) for industry, I find industry is way more obsessed with titles and credentials than academia seemed to be. But that probably has to do with increased politics in the latter compared to the former.
Perhaps it depends on the field. The software business has no standardized titles or career progression. Many companies inflate titles or let programmers choose their own. You “become” senior when your colleagues acknowledge you as such.
We can choose our own title at my current workplace, but you are expected to know who the tech leads are even if they aren’t officially communicated information (I’m sure the managers have a list somewhere, but I have trouble figuring it out sometimes).

In research, I’d work with people who were super senior managers and…I’d never know and it wouldn’t matter.

Leadership is something you are, you can learn tricks to improve it and train yourself to be better but at the end of the day not everybody is born a leader.

Being senior is also about breadth and not just depth, and this is something else that not everyone posses.

I actually want to be technically senior without politics and bureaucracy. Technically capable like GeoHotz, Dean, Caramack, RMS, etc. The management part of the role can come later!
There's really not much advice to give beyond applying for relevant jobs and learning as much as you can for a few years at a junior level. Importantly, stay curious and try to understand the full stack to at least a basic level of competency.

"Senior" (at least in my opinion) just means you're not going to need hand-holding. If a company is hiring a "senior" dev they tend to mean someone who is competent enough to get on with things on their own.

As soon as you feel you don't need hand-holding I'd start applying for senior positions, but like I say you really need a decent competency across whatever your tech stack is to do that. If you can't use the Linux command line and struggle with Git, but you're a great 3D engineer you're probably not senior enough.

I find it's all the stupid little skills that make a good senior dev. We had a senior frontend guy come to work at my place recently and it was a disaster because he wasn't familiar with basic Git commands and couldn't get his dev environment set up on his own. To be fair with him those weren't "frontend" skills, but skills any good senior dev doing the kind of work he was doing should have.

That said, it's okay to ask a few questions and not know everything, but those should typically be higher level questions - "what's your Git workflow?" not, "how do I use git?", for example.

I am familiar with the tooling but what I lack is in the ability to quickly navigate a code base. Given a period of 2-3 weeks, I can disect a project into the relevant parts, but I feel like it is still slow.

Now the issue I have is contributing to these projects. I am fairly capable of starting on my own, however, if it comes to updating the existing base, that is where I fall short. Any tips on that? I tried open source and basically ended up with same result. Same thing happens when I try to answer to questions on stack overflow. I do not get the confidence to do so.

Split all your code into thousands of files, with nearly no content. Boast about it on twitter.