solvera logo

Career Planning in Software

Career Planning in Software
Career Planning in the Software Field

Hello everyone 👋 I'm writing this article to support career planning in the software field. I’ve compiled the topic from examples I've seen in professional life.

1 — Setting Goals

First and foremost, knowing what we dream of and want in this journey is crucial. The choices we make, the things we love, and our dreams directly affect our future.

When we start in software, we may not know which field to turn to. Our education, environment, or dreams play an active role in determining our goals. For instance: "I want to program games" or "I want to work at this company" can help us choose the field we want to turn to.

Follow the Employment Level and Expectations in Your Field of Interest

We should definitely look at job postings in the area we want to advance our career. In this regard, LinkedIn is one of the good assistants in the corporate arena. From job postings, we can easily learn which technologies are used and what the expectations are.

Generally, learning a single language may not be enough.

By looking at job postings, we can easily understand which language we need to learn, which design patterns and programming techniques, or additional technologies we need to learn.

It's important to consider the supply and demand balance.

If we have a few areas we want for our career, it may be more logical to make a choice according to the number of postings. For instance, there may be 200 job postings for web development while there are only 5 for game development. In this case, we may have trouble with job applications in fields with few or no job postings. Another issue is that due to the prolonged job search process, we may have to turn to a different field. If the training we received for the new field is insufficient, we may have to restart our training processes. This would return as extra time loss.

2 — Education

Our education life is one of the important stages in advancing in the software field. 🙂 In fact, at this moment, our career begins, but we are just unaware of it.

One of the generally mistaken thoughts in university life is, "The school will give/teach me everything, and I will be able to do everything after I graduate." If you think this way, sorry 😐. I didn’t want to give this example, but many people think this way. One of the legends I encountered was someone leaving university in the first semesters because "they don't teach software here."

What! They don't teach software?! 😱 I guess we've been scammed. (This last statement is a joke😅)

At this stage, there's another thought that is at least as dangerous: "University and education life are useless, I can do this without going to school." University is not just a place where we take software courses; it is where our culture and network begin to develop. Maybe the university won’t make us perfect software developers, but we learn many things academically on this path. The most important thing is that we learn how to learn.

Learning how to learn (Sounds simple, but unfortunately, there are many bad examples in this regard.)

University has another sociological gain. If you graduate from a good university, some doors open much easier for you. At the simplest, it can help you find an internship or make you stand out in job applications.

Competence is very important in the software industry. You may not graduate from a good university; at this point, increasing your technical skills will help you in this race.

Working While Studying Is Very Important

While continuing our education life, there are 2 important things we need to do;

After starting to take introductory software courses, we need to start developing projects in this field. In other words, we need to combine what we learn with our goals and increase our experiences. This process should continue until we graduate.

Internship is a very important topic; the place where you do your internship can be an incredible reference for you in the hiring process.

I will continue to detail these topics under the following main headings.

3 — Developing Skills

The skills we gain at school may sometimes not be enough to advance in our career. For example, you take a C++ course at school but want to become a C# web developer. If we are satisfied with what is given to us at school and do not try to learn the C# language ourselves, becoming a C# web developer may take a lot of our time.

The language we learn at school does not actually go to waste; it is useful for understanding the general logic or seeing the similarities. It also helps a lot in learning how to learn.

Our goal is set, and we are working on this path; we will develop our skills. We need to continue with the language we aim to learn well until we master it. Sometimes we may get bored, sometimes we may think we don't understand, but continuing without giving up is the most important thing.

Besides, starting to learn the side technologies that we can use together with this language will enrich the language we learned.

At the simplest, almost every application needs a database, so learning the SQL language will be beneficial at this point.

There are roadmaps prepared in this way. It covers topics such as where to start initially, what to learn. Similar technologies are written side by side; this does not mean that you need to learn all of them. You can choose one that is suitable and popular for you.

The road is long and arduous, don’t be afraid… you can succeed. 🔥💪

4 — Working on Projects

It's very important to work on projects, if possible, with a team. The projects we work on during our internship or graduation projects at school will serve as references when we enter professional life.

Generally, having a GitHub account and publishing your projects there will be beneficial for promoting yourself. When we apply for a job, the related company can check what we can do, our skills, the technologies we are proficient in, and the features of the projects we produced.

This actually allows us to showcase our skills without saying a word.

5— Internship and Work Experience

Internship is one of the most important elements. A well-done and valuable internship can be a key to entering the job. The first return of this can be the company where we did our internship.

In internship programs, if you do a 30~45 day internship, you can try to extend your internship duration by stating that you want to do a long-term internship. This provides you with both sectoral knowledge and opens the door to experiences you cannot obtain alone by working on real projects. If you have a long-term 3-4 month internship program, try to make the most of this period. It will add much more to you than a short-term internship.

The software industry is a prestigious sector. Compared to other sectors, companies value their personnel more. Human resources are one of the most important things in this job. Therefore, internship programs are an important criterion in personnel selection. Because the company can see your existing skills, learning curve, harmony with the team, the care you show to the given tasks, and your potential for the future during the internship.

In internships, there are still things like sending CVs as if applying for a real job. Therefore, from the moment you start learning software, you need to improve yourself outside of school and produce projects. These also play an effective role during internship acceptance.

Job experience gained while studying is very important. We should not think of this only as an internship. Many people work part-time in the software sector with the knowledge they have gained. It is not very difficult to do this, but it requires a serious infrastructure. If possible, targeting a career this way is healthier than leaving everything until after school.

6 — Job Interviews

In corporate companies, the hiring process usually cannot be completed in a single session. The hiring process takes place in several sessions. We can briefly summarize these processes as follows (these may vary by company):

  1. Opening of the job posting and gathering of CVs.
  2. Selecting the more suitable applications from the CVs for the job.
  3. Human resources (HR) interview.
  4. Technical interview.
  5. Arranging a tea or coffee chat with the team members to measure social harmony.
  6. Offering to the suitable candidate(s).

Generally, the HR meeting and the interview with team members are interviews to measure your communication and harmony with the team. These are not technical interviews, they are generally mutual introductions.

One of the important interviews here is the technical interview. In this interview, technical questions related to the job posting are directed to you to measure competence. Also, there may be questions about your additional skills, work experiences, and education life if mentioned in your CV.

Many technical subjects you have and have not learned will be asked as questions here.

At this stage, if you have applied for a title such as .NET software development specialist, it is likely to encounter questions on topics such as SOLID, design patterns, and the basic principles of object-oriented programming.

In the interview process, your salary expectation is usually asked. Leaving this to the company's initiative is wrong. It is not realistic for someone who doesn't know you to see you as suitable for a certain salary after a few interviews. It is better to state your own expectation.

7 — I Started, So How Should I Progress?

You have stepped into professional life and may be wondering what to do now. At this stage, we stick to the known path.😅

One common mistake is leaving the job without gaining full experience at the workplace. This can make it difficult for you in future applications as it creates an unreliable image.

Unless you have to, do not leave the job and try to gain experience by working at the workplace for at least 2-3 years. This will strengthen your hand in other job applications if you need to leave the job.

Working 6 months in one place and 8 months in another place neither gives you enough experience