How To Find Your First Developer Job

Mateusz Sokola
codeburst
Published in
9 min readDec 11, 2017

--

The job market for developers is doing well. There are many more jobs than available developers to hire. Also, fresh graduates can easily find a job, however, the sad truth is that most of these jobs aren’t good opportunities. Often companies can’t provide challenges to push you towards learning new things.

I’m a Javascript Developer with 5+ years of experience. During my career, I worked for several different companies and also as a freelancer. Recently, I was looking for a new job and so, I wrote some tips for coders on finding the right employer.

These 5 pieces of advice will help you to find the best employer for yourself. Even if you aren’t at the start line of your career.

1. Start Early!

Learning programming is complex. Understanding version control systems, algorithms, operating systems, and design patterns are only a few of the things that every programmer needs to know. Learning all these things can take years, and most programmers never reach a senior level during their careers.

According to Malcolm Gladwell’s theory, man needs to spend 10,000 hours to master any skill. Dozens of researchers have questioned Gladwell’s theory because he based it on too small a group of people.

Spending 10,000 hours on coding won’t make a good programmer out of you. You need to learn the right things, besides writing code.

2. Find a Teacher

I attended the “Invisible Exhibition” in Warsaw, Poland. The exhibition is in a regular flat; furnished and fully equipped. There is one difference though — it’s completely dark. An unseeing guide helps you to discover the challenges of a blind person’s life. Unbelievable how hard it is just using common devices such as a washing machine when you can’t see anything.

Learning programming is similar. You can figure things out by browsing the Internet, but it goes much smoother when someone guides you. That’s why you need a teacher, someone to help you follow the right path, explaining the hard parts and showing the right direction.

Having a teacher speeds up your learning by a dozen times, however, finding one might be hard. Happily, you can even have a group of teachers instead of one; just find a company that hires a competent development team willing to teach newcomers.

How To Recognize a Competent Team?

All companies will claim they develop their software following best practices. Fresh graduates don’t know how to recognize the best employer or what questions they should ask during the interview.

Joel Spolsky defined the Joel Test to rate the efficiency of development teams. The test is so tough companies rarely pass it. It’s not likely that your future employer will. No worries — no company is perfect.

The following three things will help to shortlist your options.

The team uses a modern version control system such as Git or Mercurial. If they exchange files via e-mail, FTPs or network drives, don’t join them. You won’t learn how to build software there.

The team writes automated tests for every new feature. Most teams might not be there yet, but as long as they drive changes into automated testing — it’s fine. Not only unit tests but also integration and end-to-end tests.

Automated tests are faster compared to manual tests performed by testers. The biggest advantage of having them is they can be performed whenever a developer updates the codebase.

The team established the way of integrating changes into the codebase. Whenever a developer updates code in the codebase, an automated process runs quality checks and compiles the application. If the new code doesn’t meet the requirements, the process is failing — preventing other developers from integrating their changes, until the problem is fixed. Often people call it Continuous Integration (CI). This is the most important process from the developer standpoint.

Establishing CI processes is hard and takes tons of time. It’s ok if a company doesn’t have it yet, but they must be working on it. This situation is a good opportunity for learning.

3. Avoid Bad Jobs

I was working for a digital agency. We created websites for the largest brands in my country. When I started, I thought we would be working on the best projects, but I was wrong. The average project maintenance time was about 2 months, so code quality didn’t matter.

The most experienced developers in the company stopped learning a long time ago. At the beginning of their work, they created a framework to develop websites for our clients. The framework was kind of reusable, so for 6 years, they didn’t change it besides applying small changes to meet client needs. The work wasn’t challenging for them anymore, it was comfy and easy.

The oldest developers in the company worked there for about 8 years. Does that mean they gained 8 years of experience during their employment? I think they repeated the first year of learning 7 times.

After 4 months I left the company.

If you feel like your situation is similar — leave them. There is nothing worse than wasted talent.

My next employer was different. I joined a team of very experienced developers to work on a high traffic website (1,000,000+ unique visitors per day). All the developers were smart, they were constantly trying out new things. In my first 3 months, I learned more about software development than in my entire life up to that point.

4. Don’t Start From Freelancing

Since I can remember, my parents were self-employed. They didn’t have bosses, they worked from home, and they could work whenever they want. The freelancer life is perfect — I thought. After I graduated from University, I decided to follow in their footsteps and start my own freelance career.

During my studies, I was making money on the side by slicing websites for small businesses. One of my old clients gave me my first “big job” (one month). I was so happy because I made about 1,500 USD. The average salary in Poland then was about 900 USD per month.

The payoff was great, but… I made no money for the next two months. All companies slow down for Christmas and New Year in Europe and that’s why not so much happens in December and January.

Finding (good) clients is hard

All companies want to outsource everything that isn’t in their specialist area. The first things that go out to contractors are slicing e-mail templates and creating websites. These jobs are easy to find, but they aren’t paid well.

“Challenging” projects are also there, but getting those jobs is harder. Tons of freelance developers want to work on them, so a company can choose from long lists of candidates. If you have no references and no experience, it isn’t likely you will get these jobs.

Building a reliable revenue stream might take even 2 years. Don’t start a career as a freelancer if the only advantage you have is a discount.

You are the boss now

f you are self-employed you are your boss. Taking care of acquiring new clients, healthcare, pension, and salary is a part of your job description.

The average employee works 40 hours per week. A freelancer works much longer, mainly because they have to do many other things besides coding. Often, from Monday to Friday they work on their clients’ projects so, during weekends it’s time for sending offers to new clients and doing bookkeeping.

The client acquisition is the hardest part. I was investing tons of unpaid time on searching, and results were poor. If you are a fresh graduate, don’t follow this path.

5. Don’t Waste Time

When I started coding I wanted to do it right. I was reading dozens of articles on the tools and skills that the best developers need. Recently, I finally understood it was a waste of time. The following list contains things that don’t matter, but we love to waste time on them.

Searching for the best IDE

An IDE is a code editor on steroids. It contains tons of nice-to-have features and can be customized in whatever way you want. Every developer is looking for the best IDE for their programming language, but spending too much time on it is very common.

In daily work, you only need a few features such as:

  • conflict resolver to resolve merge conflicts (version control system),
  • intelligent code completion to write code faster (often called autocomplete),
  • automated code formatting and highlighting,
  • splitting editor tabs — displaying two files next to each other.

That’s all.

I’m using Intellij or Webstorm made by Jetbrains. Jetbrains makes the most convenient tools for developers, everything works out-of-the-box with almost no configuration. Unfortunately, their tools are expensive. If you want to use a free code editor, go for Atom or Visual Studio Code.

Custom configuration

Installing themes, plugins, and creating custom configuration is a waste of time. It takes hours to set it up, and all your improvements will save up to 5 minutes per day. You are spending more time on drinking coffee or talking with your work buddies.

Often, I do pair programming with testers and other developers. Usually, we do it on their computers, especially if they are less experienced. It’s important to guide them to the right solution instead of solving it for them.

Life happens — computers break or need to be replaced. Believe me, it doesn’t look professional if you get a new machine and you need 2 weeks of configuration to start working on it.

Learning hotkeys

Hotkeys are great, but you don’t need to know all of them. Focus on essentials — learn the hotkeys you need most times per day, such as renaming, switching tabs, and opening files.

Don’t use silly plugins to teach you every hotkey whenever you click something on your IDE. They are distracting, and they slow you down. These plugins are switching your attention from problem-solving to learning hotkeys.

Naming convention

Have you heard of Spring Framework? It’s a Java framework for building large enterprise systems. This is the poetry of design patterns in Object-Oriented Programming. Just by reading their commits on Github, you can learn a lot about designing complex applications.

However, their naming convention could be better. The longest class name is SimpleBeanFactoryAwareAspectInstanceFactory. Based on this name, it isn’t possible to say what this class does. In the end, the bad naming convention isn’t a killer — consistency is the game. So, don’t spend tons of time on figuring out the best way of naming things.

Code style

The code style doesn’t guarantee a high quality of code. The correct design does — focus on following design patterns and their correct implementation. Discussing what is better — whitespaces or tabs? doesn’t matter. Keep it consistent at least on the file level, and move on!

Don’t reinvent the wheel from scratch. Use code styles defined by other development teams. I’m always using guidelines defined by Airbnb. Why? They prepared everything I need to set it up in my project. It takes less than 15 minutes. You can find it here.

Don’t know something? Ask!

Fresh developers feel stupid when they have no knowledge of a problem they are solving. They think their questions are silly, that they should know all these things. They prefer to spend 5 hours on google instead of asking their colleagues.

A lack of knowledge doesn’t mean that you are incompetent. It means you’re facing this problem for the first time, and maybe someone around you solved it before. Ask them about it. The most experienced developers are asking questions constantly. Often on obvious and silly things. Do the same — ask questions, because it saves time.

Summary

I wrote this article to share advice I would love to have got when I was starting my career. My way was sometimes hard and had sharp edges, but I don’t regret that. Through those 5 years, I learnt tons of things on software development. I hope it will make your life easier :)

All companies have legacy they need to deal with. Don’t run away if they say it isn’t possible to upgrade tools to the newest version now. They know what they are doing. Help them to develop solutions instead of pointing out problems with your fingers.

PS. Recently, I started to write articles on Medium. I submitted them to several different publishers, so please follow me on Medium to be notified about new articles.

Medium: mateuszsokola
Twitter: msokola
GitHub: mateuszsokola

--

--