The beginning of a junior developer’s career is not one of the easiest. How can you get your first job to gain experience when the vacancy already requires previous experience? How do you know when you’re ready to start working?

One of the topics that has caught my attention on Twitter and other social media are new professionals trying to get their first job. I imagine that the problem has several facets or parts: illusion, lack of preparation, and shock with reality.

Illusion#

Part of it is the illusion that programming or system development is a profession accessible to everyone. This view has spread in our profession and I mentioned it a bit in another post: Programmers. Programming is accessible and there’s abundant material available for study, including courses, videos, books, and training programs. I still think that the best way, especially for those just starting out and are very young, is to follow a technical course or university program. Trying to learn everything on your own without a guide, mentor, or friend who already practices the profession is very complicated.

Everyone tends to look for the easiest path and this happens in studies as well; you end up focusing on things that shine and are easier, not necessarily the subjects you need to learn. This applies to everything, from math to computer science.

Many companies have proposed “get rich quick” schemes. Bootcamps are also famous in the United States, where in 3 or 6 months, a person is already hired with six-digit salaries. If you study 8 hours a day for 6 months following a specific program, I believe it’s possible, but I doubt very much that you’ll be hired at such a high salary right away. Being senior in one or two years is also risky. You need time to get used to the new profession; you can’t rush things.

Another trap of studying alone is taking multiple courses with almost identical content and not finishing any of them. How many online courses have you started and not finished? How many books have you read this year? Don’t be fooled; if in 3 or 6 months, you think you haven’t progressed, talk to someone and seek guidance; don’t waste your time.

Lack of Preparation#

And how ready are you to start working? What baggage do you bring to the first job?

Each company will define the minimum required for a junior. But to be a programmer or developer, you need to be prepared. Knowing only one programming language may not be enough.

Items:

  • Programming Logic
    • Loops, assignment, variable types, accumulators, counters, functions, logical and relational operators.
  • Mathematics
    • At least a good command of the four operations, ideally comfortable with high school subjects. Proportions, arithmetic and weighted averages. Those going into data science need to prepare much better, not only in mathematics but also in statistics.
  • Portuguese
    • If you don’t write reasonably well, seek to improve. You don’t need to write long texts, but you should avoid basic mistakes. Writing also helps clarify doubts more efficiently in groups.
  • English
    • At least the basics to read a website (where to download programs) and preferably enough to read a technical text. There are several websites that can help increase vocabulary, as well as instant translation and online dictionaries.
  • Data Structures
    • Lists, queues, stacks, files, understanding of complexity.
  • Databases
    • Knowing how to query a database via program and graphical utility, knowing how to insert data into the database and also update fields.
  • Utilities
    • Git, Docker, a compressor/decompressor, a text file reader, a spreadsheet, text editor.

You should be able to perform some tasks:

  • Modify a program, make small changes.
  • Combine two programs.
  • Create a report.
  • Update a table in the database.
  • Test if the program is working.
  • Explain how and when an error occurred, even if you don’t know how to solve it yet.
  • Know the difference between asking for help and searching content on your own.
  • Continue studying after receiving help.

If you’re still not confident in performing these operations, you probably need to prepare better.

Shock with Reality#

The junior needs to be useful to the company. I imagine a junior as someone who has done 3 years of technical school or has equivalent experience. It’s not easy starting out today; I’ve seen many people complain that some job requirements seem like entire books. But don’t be fooled; the company expects something from you, they’re not just hiring juniors to pay less.

Even at the beginning of your career, you need to generate value for the company that hires you.

The idea of hiring a junior is:

  • To free up seniors and plenos from simple tasks that take time.
  • To start training professionals for the future of the company/project.

On the other hand, what the junior should have:

  • Supervision on what they’re doing; a senior who analyzes the code and shows how to improve it constructively.
  • Support to ask questions and guide the development required by the company/project. Tips on what to deepen and study more.

What the junior shouldn’t do:

  • Take on projects alone, it’s too early for them to assume responsibility, juniors are apprentices.
  • Work extra hours. Extra time should be used for fun and studies.
  • Confuse their personal career choice with what the company needs. This point is important because not always what the company wants is best for the employee. You can very well work in a company using Visual Basic, gaining experience, but being fully aware that technology has become outdated and preparing for other things. Fábio Akita talks very well about not outsourcing your decisions in this video

Conclusion#

There’s a shortage of people in the market; there are job openings. The problem was always having more vacancies than qualified people, it’s a very hot market. One problem is that some places can’t pay well, they’re small companies that need someone just to keep things running. When you manage to program something good, usually in big companies and even public institutions, it’s an opportunity (those job openings are the most contested). Salaries haven’t evolved much either; I left Brazil in 2006 and still see job openings paying R$1,500/2,000 per month, just like there have been for more than 20 years ago (and prices/inflation have increased a lot, I think everything is very expensive in Brazil). Today we have the luck of being able to work remotely for companies abroad without having to leave Brazil, but English limits many people 😞. Nonetheless, remote work can be perilous for juniors; it needs to be planned.

Also, be careful not to be exploited. Some companies promise a lot and deliver very little. The junior needs to work, generate value, but also needs the company’s counterparty of learning/training at work so that it makes sense. Junior PJ should not exist, avoid this type of job opening.

Don’t expect to build a career in two or three years; you’re entering a marathon profession, you need to think about 5, 10, 20 years. It’s impossible to know today what you’ll be doing in 20 years; the best we can do is evaluate at least once a year how our career is going and correct its course if it doesn’t please us. Make learning something new every year your goal and always try out new programs, languages, and libraries. Don’t get comfortable with just one option, everything changes very quickly.

Take advantage of studying and learning as much as you can, but don’t fall into the trap of “learn in 24 hours,” being senior in one year, or other things that don’t need to be studied or tried hard to achieve. Another thing, don’t learn only one programming language; you can very well learn to program in Python and see a bit of JavaScript/TypeScript or even C#. If there’s no job opening in your city, look for remote work or even move to another city. The market always has preferences, and this changes from place to place.