Live data from Hacker News

Ask HN: How can I prepare for my new job as a software developer?

news.ycombinator.com

1–10 of 45 posts

Ask HN: How can I prepare for my new job as a software developer?

#1
Hello,

In September I will start my first real job as a software developer (mainly backend) in a great company. What's the best thing I can do to prepare for it (i.e. to quickstart instead of having to learn everything on the job)? Study algorithms and refresh some of the stuff I studied in my CS courses? Or learn the stack they use on a daily basis in depth (e.g. frameworks, DBs, etc.)?

Thank you!

Re: Ask HN: How can I prepare for my new job as a software developer?

#2
Learn the stack they use, play with it, make sure you understand it. Also, find out what version control system they use and get comfortable using it - source control's vital stuff when working in a team and something that you may well have not really used so far in CS.

Re: Ask HN: How can I prepare for my new job as a software developer?

#3
If the company is profitable, study up on what the company does to make money. Look at the business side of things rather than the technology side. As a software guy, your job is to create stuff that people will buy, increase productivity, or reduce expenses.

Re: Ask HN: How can I prepare for my new job as a software developer?

#5
Depends on the job, but algorithms and stuff in the real world are highly technical matters and rarely successful companies will put youngsters against them.

The best way to make a good impression is to learn their stack and be familiar with their tools.

For example, if they use 'Docker' try to get familiar with Docker. If they use git, rails, MySQL and Redis try to familiarize yourself with basic concepts. Try to create a similar setup and re-create the environment at home, etc. Play with it, try to read a few tutorials about it, learn the slang quickly.

However, don't be afraid to ask. Do your homework and when not sure ask, the more specific the question, the better. Especially in the beginning asking (even stupid questions) could save your day.

Re: Ask HN: How can I prepare for my new job as a software developer?

#6
post #3

If the company is profitable, study up on what the company does to make money. Look at the business side of things rather than the technology side. As a software guy, your job is to create stuff that people will buy, increase productivity, or reduce expenses.

This is sound advice. The technical side of things is important, but do not focus on it myopically. As you are no-doubt already relatively strong technically, it may be worth making a little time to improve your understanding of the business, improve your negotiating skills, etc.

Another useful skill is the art of software project estimation: see e.g. _Estimation Games_ [1] by Rob Thomsett, or Dadhacker's _Keeping Sharp_ [2].

[1] http://www.thomsett.com.au/library/item/estimation-games

[2] http://www.dadhacker.com/blog/?p=2267

Re: Ask HN: How can I prepare for my new job as a software developer?

#7
If you already got hired, I would just relax. Get some exercise, find a couple good books [1] you can read later when you want to take your mind off work.

Then, when you start work, pour over the source code. Understand it. Ask or research anything you don't understand. Make a list of things that suck about it -- there likely will be a lot of technical debt, but who knows...

If you want to get ahead, combine working harder than anyone else with the concepts you will absorb by reading The Power Broker [2].

[1] I say a book instead of NetFlix or games, because if you read at night, with a red light, you'll become sleepy and get a good night's rest, but watching TV or playing games will keep you up, and you'll go into work tired.

[2] Don't mistake this book for some self help or business genera, it's page-turning biography by one of the best journalists of our time.

Re: Ask HN: How can I prepare for my new job as a software developer?

#8
In addition to learning the stack, you will also need to learn their processes for basic stuff like making changes: how do they match up the reason for a change (new requirement, bug etc) to the actual delta in their repository. Do they use Git? Learn Git. Do they use Jira? Learn that. These are tools you will use for work every day, but they are often not covered in CS courses.

Re: Ask HN: How can I prepare for my new job as a software developer?

#9
It would've been useful if you'd at least posted the language. My recommendation is this: be pragmatic. I've been asked plenty of times to forgo software development principles to get a product out the door ("hardcode this", "copy/paste that"). I never copy/paste, but I have hardcoded things to get a product shipped on time. You may have a better idea of how to do a lot of things, but only bring it up when you understand the full implications of your changes. Initiative is good, careless prattle is bad.

Groking business logic can ultimately make you more valuable than your software development skills, and nobody hires you for software development alone. Be humble (I myself sometimes fail this when I word something too strongly), be honest, be malleable.

Honestly, without some sense on the stack, size of the codebase, type of company and team size, that's about as much advice as I can give you

Re: Ask HN: How can I prepare for my new job as a software developer?

#10
Learning their stack is good advice. You'll impress folks if you can hit the ground running.

Another area that I'd recommend is start to learn the business domain. If your company builds accounting software - start to learn some basic accounting principles. If your company builds healthcare insurance software, start to learn about the relationships between healthcare providers, insurance providers, health plans, etc. Software systems are built to model business domains, account for constraints in the domain, and deliver value for users in that domain. Knowing the ins and outs of the domain will make it easier for you to learn about the software when you first start, but also will allow you to grow into an engineer that can solve problems and deliver real value to your employer.

I've had the luxury of working on software in domains that were highly technical (nuclear reactor inspection and repair) and unique (military command and control over tactical networks). Understanding the domain at hand has always been crucial to my success.

Post reply on HN