Ask HN: As an entry-level developer, what's expected of me on the first job?
Quite honestly, I'm a weak programmer and it takes me a long time to do things, but I do take pride in having the perseverance to push myself hard to accomplish things. During the interview I didn't know how to solve any of the technical problems, but through a step-by-step discussion with the interviewers I eventually arrived at the solution. Possibly what got me the job offer was my enthusiasm for what the company is doing. Its in the field that I'm very interested in, and am incredibly fortunate to have gotten this position.
I start in a couple weeks, but I can't help but feel like I'm going to hardcore struggle and that I somehow fooled the interviewers by making them think I'm smart when in reality I'm just a mediocre guy and they'll be pissed when they found out...
Will I be expected to hit the ground running and be a rockstar coding ninja? Will I have a mentor to help guide me through their massive code base and answer my questions? Will they patient with me if I'm slow? So many questions...
17 comments
[ 2.0 ms ] story [ 49.7 ms ] threadAs a rule of thumb anyway, if you are new, you are not going to be in charge of a critical piece of the infrastructure for years to come. Likely you'll be giving relatively straightforward tasks, and once you'll have proven to be reliable you'll be given harder and more challenging tasks.
It depends on the place, but I would say that 80% of software development is rather mundane and "easy". And for the time being the harder decision will be taken by more senior people. So actually, starting is pretty comfortable and easy most of the time.
One piece of advice, do not hesitate to ask questions. We expect people to have generic CS knowledge, but it is often not enough to understand 20 years old spaghetti code. The worst recruits are the one that are too paralyzed to ask any question, and as a result you have to spend twice as long to train them because you have to guess what's wrong first.
Personally, I don't mind answering question or mentoring new people, I see it as a form of investment. Sure I am "wasting" a few hour today, but your contribution will save me countless hours in a few weeks.
Related information: https://en.wikipedia.org/wiki/Rubber_duck_debugging
This method helped me alot as I found myself explaning a problem to a colleague finding the solution through the indepth explanation, wasting both of our time and focus.
No.
Will I have a mentor to help guide me through their massive code base and answer my questions?
No.
Will they patient with me if I'm slow?
Yes, but only within a certain latitude. You'll be allowed to make mistakes, but only once - if you repeat the same mistake that's definitely considered a bad thing. You'll be expected to learn from your experience, from code reviews, and from what other developers tell you.
While that might sound scary it's also worth noting that you'll probably be given relatively simple tasks, like building forms and fixing bugs, so there's nothing to worry about. You should be able to do what's asked of you because anyone who has the confidence in their ability to even apply for the job should be able to do those things. Being "mediocre" is OK. Developer ability fits a bell curve - most developers are "mediocre" in the sense that they're in the middle of the curve rather than "great" or "awful" at the top or bottom ends.
Follow the company's practises, think through things, listen to other people, and find what you're good at, and you'll be fine. To be honest, I'd rather work with a junior dev who knows they're not a rockstar coding ninja but wants to learn than a junior dev who thinks they are, even if they actually are.
Another piece of advice related to that. If I am giving long, complex and detailed explanations to a new guy, and he is not taking any notes.
I have to assume that :
1. He has a good memory, and he will remember everything tomorrow (and I am totally fine with that)
2. He is totally oblivious of what I am talking about, and he will ask the same question tomorrow.
So please, never put yourself in category 2. Be a genius, or take notes. And always taking notes, especially the first week, is useful because you'll get a lot of information in a short time. It is good to be able to process it a bit later on.
For bonus point, if this is actually some process we have not documented and should be, take this opportunity to create a reference document for the next guys, it will be appreciated by your co-workers. You have a fresh look on things, this is valuable.
I'd expect to prearrange terms for how the file(s) would be stored (encryption etc) and hard limits on how long they'd be kept.
You will probably feel overwhelmed on your first day, probably in your first week too. That's normal. It takes time to get used to how the company works, how the codebase is structured, who's responsible for what in the organisational structure.
If it's a good company, there should be someone who you will be able to ask anything you need, no matter how often you need it. I've run multiple projects with perhaps a dozen programmers, and I try to make it very clear to new recruits that they are never bothering me. They don't usually believe me at first, but I mean it! Any significant codebase has a huge amount of knowledge and structure known only to its developers, and new guys save so much time if they can just ask a quick question than dig around for themselves. So don't be afraid to ask questions incessantly. Definitely form your question sensibly, but don't sit around feeling stuck.
Honestly, I feel the most important thing you can learn in your first day/week is who is the best person to ask about each part of the code that you'll be using, and a bit about the general structure of the code. You shouldn't expected to produce anything straight away.
Also, have fun! I still really enjoy programming after doing it full time for 15 years and hopefully you will too!
Being passionate about learning helps a lot, even if the focus of your work is dry.
I work in the insurance vertical and it is pretty dry!
Also: taking longer than others isn't the same as being weaker, especially if you do a better job. I would happily pay 50% more (in time) for 15% fewer bugs, or better performance, most of the time.
Edit: typo.
Very few companies do a good job nurturing and guiding new hires.
However, you can take ownership of managing the process. Read George Bradt's book New Leader's 100 Day Action Plan, while geared towards mid-to-senior level executives, you'll find many solid take-aways on managing up > http://www.goodreads.com/book/show/16775717-new-leaders-100-...
On Mentorship-- the best mentoring relationships grow organically. Regularly seek out the advice and counsel of senior colleagues, go as high-up as you can. You'll know the ones you click with. The best senior execs will actually welcome a reverse mentoring opportunity. There may some things you're able to help them on.
() Don't write code that takes the site down.
() It's ok to take a bit longer to finish something, just try to make sure it's tested well. If you release something and there's a problem, make sure you write a test for it.
() If you screw up, admit it, and let your boss know what you've done so that mistake won't happen again.
() Chill out and get hacking!
Learn everything you can from code reviews. If you are not humbled in code reviews then the reviewers are doing it wrong.
Get good at the non-programming parts of the job too. You'll be surprised at how much of your day will be spent on configuration, builds, etc. Try to learn this just like you would with programming instead of asking the senior dev to set something up for you.