On getting the first developer job

CheckiO asked me how I got my first job as a developer and I decided to keep the post here for future reference.

My first job happened accidentally. During my sophomore year at the university, I was offered to be a part-time web developer at a local news agency. It turned out later that my classmate told her brother who was an employee at the agency at the time that I was great with Pascal and HTML/CSS at school and those should be probably the same skills needed to build and deploy a website.

Because the way I got my first job is not very helpful, I have a piece of advice or even a few for the beginners:

  • It’s easy to google “How to X in Python” and that’s totally fine but I think that as a beginner, you need to get familiar with the official documentation. Navigating the doc helps understanding and predicting design decisions, reveal caveats, discover language features and learn best practices. The discomfort of searching an answer at the beginning will pay off.
  • Learn to work with feedback. Although everyone keeps saying that you need to ask for feedback, which I strongly agree with, there are a lot of ways to make it more efficient for both sides. Compare “What do you think about my solution?” and ”Can you see a performance bottleneck in my solution?” or “I did it this way because X” and “What is the best way to do it?” I hope you can get the idea. Also, don’t take feedback personally and respect other people’s time.
  • While playing at CheckiO, don’t focus on your solutions too much. It won’t be perfect anyway. The way you learn here is by reading and understanding other solutions. After you solve the task, open 3 top solutions from each category (i.e. Clean, Fast, Puzzle) and try hard to grasp what the code does. Also, don’t hesitate to ask for explanation of a particular line.
  • After getting comfortable with syntax and basic algorithms, you could try to reinvent the wheel [1]. It’s fine if you choose a small Python package, understand its purpose, implement it yourself from scratch, learn from origin sources and throw it away forever. This practice helps to discover a domain and reveal the importance of proper design decisions.
  • At some point you need to learn how to collaborate with other developers and what git, issue, PR is. I think the best way to do it is by contributing to an open source project. Some of them even have issues labelled “for beginners” [2].
  • Apart from coding advice, I want to add something about your first job. I believe that the best way to jump on the career track is to find an internship in a tech company where you can work with smart and probably nice people. If you find such company, it’s worth sacrificing salary, location, title and benefits on the early stage of your career.
  • Don’t underestimate the importance of the basics. To make your life easier, I would recommend to invest in learning how popular algorithms, computers, compilers, operating systems and networks work.

[1] Never use one in real world systems for your own safety

[2] http://up-for-grabs.net/