Hacker News new | ask | show | jobs
by jamesbrewer 4245 days ago
You should focus on contributing to open source projects. A good open source project is almost identical to what you will be doing as a software engineer and is the best experience a non-professional software developer can get. That means triaging and fixing bugs, getting familiar with a (possibly) large codebase, and occasionally shipping features or enhancements.

If you like Python and Django, then both Python and Django are great open source projects and I recommend starting with them.

You should also create your own open source projects. Do this before, during, and after working with an existing open source project and remember to look back at your old code each step of the way. It will blow your mind how far you've come.

Let's also go ahead and get this out of the way, because it will come up at some point: Do not work for free unless it is on open source projects. Working for free makes you a commodity. You are not a commodity. You have a skill set that can make a company millions of dollars. Charge every penny that you are worth and don't ever feel bad for doing so.

Becoming a good software engineer will not be easy. You will probably get fed up and want to quit. Frankly, that's a good thing. As an engineer, you will spend a lot of time feeling incompetent. You should get used to it now and embrace it, because that means you are constantly learning. If this sounds unappealing, then maybe you aren't cut out to be an engineer. You probably wouldn't enjoy it even if you became a professional. There is absolutely nothing wrong with that. Don't waste your time on something that isn't appealing to you.

On the other hand, it's an incredibly rewarding career if you join the right company. Hard problems, happy customers, and true innovation make for a happy engineer.

Your salary is, to some extent, correlated to where you live. Here in the Valley, we can demand higher salaries easily because the cost of living is ridiculous.

Here is an unsolicited piece of advice: Turn down your first three job offers. I wish I had done this when I started. One of the hardest things to do as an employee is judge whether the company making you an offer is the kind of place you want to work. If you accept your first offer, then you have only one data point to base your decision on. That is not good.

If you have more specific questions, my inbox is open. You can find my email on my profile page. Please do not hesitate to reach out.