New workers in company

What happened when newly graduated students join a software company? Are they welcomed by the experienced software developers? How long will it take for them to work as a team? How long will it take for new people learn what they need to be productive? Those were questions that I wanted to know so I spent several months visiting software companies in the U.S and Europe and interviewed people there. What I found were interesting so I like to share with you so you may be able to avoid mistakes others had made. I also believe that this issue must be investigated further to reduce frustrations from the perspective of a new employee and also from project manager hiring new people into project.

Many people told me that as new employees they were assigned “familiarization tasks” where they were given documents to read and update. Because they did not know much about the projects, they are confused and some had made mistakes that had to be corrected later by more experienced people. After several weeks of reading documents, they were given code for review and made small changes so they can learn from these “working codes”. After several months of fixing code they were given small programs to write as they were improving their knowledge, but it had taken a long time to understand how the company operated and what all of the software was for.

As new people join company, they all have different skills depending on what they have learned in schools and what schools that they came from. Some like to code first then ask questions later. Some want to discuss in detail before doing anything. Because most managers are very busy, they do not give enough attention to new workers. Many do not know what to do beside works assigned to them so some use company computers to search the web for “interesting websites”. Some even play videogames because of good internet connection, when they got caught they are disciplined and even fired. Because of different skills, new hires see problems in different ways and have different ideas of how they should be solved. It is always difficult in the first few months for every new hires because many good ideas were implemented in a clumsy and inexperienced way.

New people do not know how to work in team so they like to argue with each others to “show-off” their skills. Some discussions are trivial but others are more serious. A different opinion could easily end up in “Who know more” or “Which tool is better”. Some people are “Fact driven” which mean they do NOT agree with anything unless they have enough data. They like to know exactly what information there is before they agree to any solution. Many are “Fast and furious” and want to do everything now then fix them later, they have a lot of energy and want to prove to manager that they are “The bests” and know how to do things the “right way”.

The most common problem in many companies is the lack of training for new people and makes them feel welcome. Most software companies are small and busy so they do not want to invest in training new people or guide them accordingly. Many managers are so busy and they want their new hires to work as soon as they can rather than spending time to train them to become “Professional” or discuss life beyond work. Many companies have weekly meetings where people talk about issues but most are focusing on technical problems, things that they can not solve, or major decisions managers must make rather than how to bring newly hired programmer into the project.

As I interviewed software managers, many complained that new hires do not have skills needed by industry. The most cited example is the understand configuration management as many new hires do NOT know about revision control so they change code as they like without any formal control process. The second mistake new people frequently made are NOT following standard process. One manager asked me: “Does school teach “software process” today? Do students understand that they must follow company's standard?” This is a sensitive issue, especially to computer science students and students who are trained in vocational schools that do not have formal education in software engineering. Every company always has certain level of formality for their works or “Standard process”. Some are well documented but other may not be documented at all but people who work there know because it is the way the team operates. For example, testing could be very formal and must be designed early or it is possible just write test after coding as an afterthought. Depending on the kind of project and sophisticated of the company, it may require new hires to get familiar with what process that the project uses. It is very important for new hires to come to agreement with their team about what is the minimum acceptable formal process because each new person changes the productivity of the team. The new hires must learn to be as productive as possible as the whole team will be affected by having new people too. Part of the problem is different people have a different idea of what “productivity” means. The issue is the team used to doing things in particular ways and comfortable with them. There will be difficult for new hires to learn quickly sometimes the things that they learned in school will not work in the industry.

The main thing for new hires is to be patient and learn. Once they are confident then they can be accepted as part of the team. Teamwork is often a major issue for new hires as they are NOT taught how to work in team. They do NOT know how to ask for help, or how to ask questions as they are afraid that by asking too many questions, they may be judged as “Incompetent”. It takes a while to learn how the whole company operates and feel for how all components fit together. While it is important to start in one project but it is easy for a new hires to get caught up in that small piece and never see what their piece is doing for the whole company. Experienced people can help by explain the business of the company to new hires after a month or two of settling in, so that the business process do not get lost in the information overload of the first month. New hires need to know that while they are starting small, to be really useful they should at least know how their part of the project fits the “big picture” and should do more learning and questioning needed to find out about that.

Another complains that several managers told me is many new hires write “too much” code without checking the “Re-use” library. In most companies, there are places to store “Re-use materials” but new people rarely look into it. New hires will typically try to “re-code” an entire system in their first few weeks on the job. They are trained to code but not much in other aspect of software development, they have NOT take time to learn the code layout, the reasons for it, and who is using it. They just jump into “Coding” in a big way and make a lot of mistakes.

I strongly believe training and mentoring are better ways to bringing new hires into the company. If you are accepting someone new into your team, make sure you spend time talk to them about how things are done and support them so they feel welcomed in the project. This is the best investment a team could do to improve productivity and build teamwork.

Sources

  • Blogs of Prof. John Vu, Carnegie Mellon University