Showing posts with label career. Show all posts
Showing posts with label career. Show all posts

9/12/2019

How do you know that you are working for the right company? - How to build up your career

Introduction
One of the most difficult things in life is to find your proper partner. There are a lot of things what should match and the worst is that often you don’t really know what are these things exactly. If you find a candidate you have to decide after a while: “do I want to marry this person or not”. So you can only say yes or no and you have no idea about the other candidates. Maybe the next one will be better, maybe not.
To find your proper job at a proper company is almost as difficult as finding your partner. Here the only advantage is that you can change it easily whenever you want. But it is still the same: really often you don’t know what you are really looking for, you can always just say yes or no for an offer, but you have no idea what is coming in the future etc.

Collect your expectations

First of all before doing any change you have to collect what are your expectations. Of course your expectations can change from time to time based on your private life situation or by collecting some experience, so it is a good practice to update this list every year. Just as an example as a single you are glad to do a lot of business trips, but if you have small children most likely you will be looking for a job with as less business trips as possible.
I collected some ideas what can you consider on this expectation list:
  • Tasks which you would be glad to overtake (doing pure development, being a manager, support sales, do testing etc.)
  • Your salary expectations
  • Your preferred working hours
  • Amount of business trips
  • Used technologies
  • Overall topic of the project
  • Level of responsibility
  • Location
  • Work environment
Regarding all these points consider what would you prefer and what can’t you accept at all.
If you have such a list that makes it much easier for you to find a proper position or making decisions.
Based on my experiences each and every company and position has its advantages and disadvantages. You will never find a job where all your expectations are properly fulfilled. But you can find one which is more or less covering the points which are the most important for you.

Be the best in an average team or average in an outstanding team

You should also decide what kind of team and what kind of challenges are you looking for?
The first option, which is proposed for the ones who are still in the first part of their career is to find a team/place where the others are technically very good, so that you can learn from them a lot.
The other option is to find a team or company where things are not going so good and you think you could help them. Join them and try to improve things there. I propose this option if you are well-experienced and you are looking for something challenging. While fighting to make a place better you can learn a lot. And you can also take over higher level positions very fast in this way. However I don’t suggest such an opportunity for people, who don’t have enough experience, because they can not really improve themselves in such an environment.

Plan the next steps

To be able to make a good career you have to always think about your next steps: what would you like to do, which new responsibility would like to overtake etc. Be always open, check regularly the open positions at other companies, but even the internal jobs at your current company. So that you should always know what are your choices as a next step. It is also good to know which direction you are pushing your career. But don’t stick too much to your plan.

Summary


It is difficult to find a good job, but it is not impossible at all, focus on your goals and you will find the right path.

2/14/2019

Possible career paths as programmer

During the previous weeks I was writing a lot about the career possibilities of programmers. First in the article “How to choose the right company for you?” I tried to give on overview about the different kind of companies. After that in “Levels of freedom as a programmer” I wrote about the opportunities of independent working as a programmer. This time I would like to summarize the career opportunities as an employee inside a typical company.

If you are working at a company and you are developing yourself and getting better and better sooner or later you will reach a point where you need to choose the direction of your carrier. These career paths are existing at most of the big companies, however it can be that they have a different name. If identified three main career path: team manager, project manager and technical expert. But next to these three I would like to mention about some less other possibly positions as well: these are the quality manager, technical sales colleague and the trainer. I identified these ones as main orientation opportunities. In case of smaller companies it can be that these are not strongly separated. I also tried to give a short description to each of these positions to help you to decide which is the most fitting one for you.

The technical expert

The usual development of a programmer is something like: junior developer, senior developer and what is coming here? Usually this is the point where you need to decide if you would like to keep on programming or rather concentrating on something else. If your decision is next to programming then technical expert can be a good path for you. Technical experts are often overtaking the role of software architect as well. That means they are designing the new software modules and taking the whole development under control from technical point of view: doing code reviews, supporting technical decisions, supporting other colleagues in technical problems. Quiet often technical experts are also going deep in one topic and getting real experts in that field and supporting colleagues in the special field all around the company world-wide.
But you need to know that technical experts are also not coding all day long: they need to attend several meetings, do discussions with others, support the project managers etc. If you would like to stay technically deep in the topic this is the right path for you, but don’t forget: next to great technical skills you will also need good soft skills.

The project manager

About the role of project managers I have already written in article How to understand the managers?. They are responsible for time and cost planning and tracking of the project. They are communicating with all the stakeholders (customer, high management, developer team etc.) and they are creating a lot of documents (mostly plans and reports). They need to attend usually a lot of meetings. The life of a project manager is typically stressful, since you are responsible of a whole project or subproject. You will need really good communication and stress handling skills. The most typical programs you are using for your work will be Excel and PowerPoint. Usually the project manager is not deeply involved into the technical topics, but it is useful if the manager has a rough understanding of the technical aspectives of the project. At the beginning most likely you will be only responsible for a smaller subproject, but later on you can either overtake a project or all projects of a specific customer. In this case you won’t have any direct connection with the developer team anymore.

The team manager

About the role of the team manager I also wrote in article How to understand the managers?. They are responsible for having a technically fit, well-motivated project which can successfully overtake all projects. For that a team manager needs to attend interviews, 1:1 meetings with the team members, need to define a vision and goals for the team and track them, next to that it is also needed to be in connection with the project managers and with the higher level management. What I see here as the biggest challenge is to communicate in a way with all of your team members which is giving the a good motivation and inspiring them for self-development and for a good quality work. For that you will need really good interpersonal skills. Although the team manager is not deeply involved into the development it is also needed to have a high level understanding about what the team is doing. If you are choosing this direction most likely first you will be responsible only the a small part of the team (5-6 persons), later for a whole team (15-30 persons) and later on you have chance to step one level higher and be responsible for a bunch of teams or a whole department.
If you think you can resolve all conflicts between people it is the right choice for you.

The technical sales colleague

The sales of a software company is responsible for extending the business of the company. To find new opportunities and new projects. Furthermore to figure out the correct price for the projects to be done. For that kind of activity they will need some technical support who can identify the technical strength of the company, who can understand the technical content of project opportunities and propose further features and who can do a good high level estimation of needed development time and needed skills for the projects. These are usually the tasks of a technical sales colleague. If you have more interest in business, but you still want to use your technical knowledge this is also an opportunity for you, however this as a career path is not highlighted at most of the companies.

The quality manager

The quality manager is someone who is responsible for the quality of the products. To be able to do that the quality engineer needs to support the optimization of the development process and take care about that that all developers team are following the process, especially its quality related parts (reviews, documentation and testing). To be able to do that the quality manager is in connection with different development teams usually through the project manager and regularly control the project documents. For this position you need to be precise and quality oriented enough.

The trainer


Most of the big companies have their training sessions for the employees. They are either done internally by colleagues of the company or by an external company. In both cases these trainings are held by professional trainers. The topic of the trainings can be either technical or soft skill oriented (communication, time management, stress handling etc.). This is also an opportunity to orient yourself into this direction and become a professional trainer. It is not taking 100% of your time in every cases, so you can do it next some other activities (like next to being a technical expert).

2/07/2019

Levels of freedom as a programmer

As developer we are different and we like different kind of challenges. Some of us likes to concentrate only on the technical part of the development, other ones like have an overview on management, sales and marketing topics as well. Up to that what you prefer you have several opportunities to be employed. The scale is wide: from the absolutely employee status until leading your own business. But between them there are several steps which are maybe fitting better for you. In common what I can tell that there are ways to be employed with less freedom. In this case your tasks are simple given to you and you have a fix salary. And there are ways to be employed with more freedom. In such a situation you are also responsible to find the next projects to be done, to find new business, sign new contracts, to communicate to the customer and you have much higher level of responsibility for the successful delivery. Usually in such cases you need to handle multiple topics (development, management, sales, marketing etc.) in the same time, you have a higher risk, but you can also achieve a higher salary. In this article I’m describing you what are the different steps of freedom as a programmer and what are their advantages and disadvantages.


  1. Internal developer at a product/service developer company

    I think this is the most comfortable option for the ones who would like to concentrate on the pure development. You are working for a company on their own product or service and that’s it. As advantage you have a fix monthly salary and fix amount of payed holidays. Independently from the success of your projects you get the same money. You don’t need to deal with project contracts etc.That also means that even if the product is really successful and it is earning a lot of money for the company, you are still getting just your salary and maybe a small bonus, which is absolutely not as much as the benefits of the company. So in this case you have low risk, low possible maximum profit. In this case your company is taking the risk (risk of you are producing less as your costs).


  1. Working as external for a product/service developer company

    In this working model you are employed by a company, which has a contract with a product/service company. You are working there like the internals of the company, so you are working in their office, together with the internal colleagues of the company, there are certain tasks assigned to you. The product company is paying on a time base for the employer and you have a monthly fix salary. So from salary and holidays perspective it is the same as working directly for the product company. The only difference is that you can be any time moved to an other company to work, based on the needs of your employer. That’s a good opportunity to get familiar with different technologies, processes and working cultures. It is also a good chance to extend your professional network. Here you are still working with low risk for not such high salary. In this case the company contracted with your employer is taking the risk, since your employer is payed time based.

  2. Working at a consulting company, developing service based for different customers

    In this case your work is provided to other companies by your employer, but your employer is not payed on time base, but on result base. The price can be paid after each small task or after a whole project. You are always focusing on one project, you are not in every case onsite at your customer. You may work in a team of colleagues employed by your employer. Up to the working culture of your company you can also take part in searching for new project opportunities. You still have a fix salary. In this case you are typically changing projects often, you are working on different topics for different customers. Your risk and potential profit is still low, your employer is taking all risk. In this case your employer is taking all the risk. I think it is a really good position to learn about business without taking any risk. It is a good step before starting your own busies.

  3. Working time based as a freelancer


For me being a freelancer means, that you don’t have a long term contract with a company, you are always just signing contract for a shorter period (some months) or for a project. You are either working at your customer on site or from home. One way of this kind of working is to be payed time based. So you are signing contract for a fix period and for fix price. In this case still the company is taking the risk, but you need to always looking for new projects and for that you need to have a really good reference. That means your previous customers needs to be really satisfied with you to be able to win well-paying projects. To reach here a good salary rate you need to be really good in your area and you need to build up a good marketing for your self. It’s good to take part in open source projects, networking on social portals and technical forums, write your own blog and to write technical articles. Pay also attention on the fact, that in this status you don’t have payed holidays or payed sick leaves and you need to take the costs of all you hardware and trainings. You need to calculate with these costs.


  1. Working as a freelancer result based


The next step of freedom is to work as a freelancer on result basis. That means you are asking a fix price for finishing a certain project or task. If you can achieve it fast you can have a high profit, but if you are going out of time you can also have a really bad profit. In this case you are taking all the risk, but that also means if you are good you can reach much higher profit than as a normal employee. Marketing yourself, networking and searching for new projects is also part of your daily routine. In this case you are usually working from your home or from your own office.

  1. Working as a freelancer on your own product

    The idea is here to figure out your own product or service which can be for example a mobile application or anything else. Develop it and try to sell it. In this case your risk is really high. It can happen that your product can not been sold at all, so you are working a lot for nothing. But it also can happen that with a pretty easy program you are earning millions. Just remember on AngryBirds or Facebook. In the case you need to concentrate on topics like marketing, market researching etc.

  2. Leading your own company
The highest responsibility is of course if you are not only responsible for your own work, but also for the work of others. That means if you are building up your own team or company, the company can either build an own product or work for other companies on time or result basis, but you are the one who is responsible to sell their work in a well-profiting way. In this case usually you are not really working as a developer anymore. You need to really focus on sales, marketing and management topics.

Hopefully all of you will find the most fitting way of be employed and if you are getting bored from the current working mode feel free to do a change in your career any time.

How I prepared my first online course

Since long I didn't publish anything here. It's because I was busy with some other topics, but now it's time to share the result...