I’m developing software as a part of the team, or as a manager. My goal is bringing the best value and satisfaction to the customer, company, and the team. Through this work, I have come to conclusions and values:
The Development Team is one of the most important values of the company.
An Inspired, Satisfied and Professional Team can bring more value and satisfaction to the customer and company than just professional Team or group of independent employees.
Teams are over documentation, tools, and other organizational structures where company expertise and processes are stored.
The skill to act as a Team Player is essential for employees.
Team & Employee Satisfaction is no less important than Customer Satisfaction
Being a part of a Team,ownership of its work results, with the ability to invest and get value from it, is one of the best ways to make employees motivated, engaged and pay attention to quality.
Team Management & Leadership is an essential part of any Software Development Management
It’s in review and will be enriched. Later I’ll also add some principles.
For a long time I work with teams to create some processes/workflows/guidlines across different groups of employees and structures (project, department, company, communities etc) .
Finally processes we create are spread across multiple places:
Task Management System (like Jira)
Knowledge Base (like Confluence) with process definition/guidlines/policies
Learning Management System (like TalentLMS)
Custom Automation tools (internally developed)
Personal Checklist tools with my personal reminders or todo’s (like Todoist)
Just Brain of some employee 😉
As a result, each time we build a process with such approach we meet the same challenges:
It’s hard for employees to follow process spread in different systems. It creates several useless efforts to check how process was done, identify and repeat forgotten steps.
When the process documented as text it’s hard for employee to go steps by step and nothing to forget. It’s hard to stop and proceed later.
It’s pretty hard to build single, clear and continues process flow in different systems. Especially it’s hard because not only one employee involved in the process, but many from different departments, organizations. The process flow should jump from employee to employee with using of several rules/roles. Usually it requires some automation or just manual work of assistant (if you have them)
It’s hard to support and extend process in different systems. You need to keep it in mind the whole process to not forget something.
Finally, if company have no approach/culture how to build a processes it creates some kind of mess which produces pretty big administrative efforts and impacts on quality (depends on company size). It creates a case when company is focused to make process work, but not the goal of the process, which is more important.
My idea that many of challenges from above can be fixed if company will have some kind of Process Development System which depends on size of the company. As far I understand, it’s a sub set of Business Process Management (BPM) Systems.
Based on my experience, many companies/projects/organizations doesn’t require complicated systems.
In my opinion it can have the following features:
Process flow should look as a set of not complicated Checklists linked together in flow based on input and roles (something similar like Jira ticket flow).
Checklist is a core node of process. It should contain information to proceed or direct links to materials where to find these details.
Checklist item can have ability to save result for step (text, image, set of documents)
Process should have ability to be assigned to user better if automatically on some action/schedule or information (e.g. based on some info from Identity Provider)
Process should have ability to setup due dates for checklists (“steps”)
It should be ability to track Processes state and statistics(current step, how long in this step, estimation of completion)
It should be a ability to communicate inside of processes (steps) with all involved users
Process can have sensitive data. It would be great if it will be possible to set visibility for some conversations, checklist results, checklist and process in general
User should have a dashboard to see checklists waiting for processing
System should have a knowledge base of attached materials
System should have some kind of document-template which will be created (cloned) for each process
It would be good to have any simple integration with another systems ( like Jira) to make them work in pair
It would be awesome if flows can be build in visual way by drag&drop of checklists and linking of them.
It would be great if user can suggest/approve process improvement directly in Process.
Now I’m in search of such system. Please share your experience with systems I’ve described before. It will be really useful.
I think such systems exist already. For example in google I’ve found:
Let me continue practice of small notes about Management:
Good Leader / Manager unites the team, Bad – make team members fill outside
If you not an engine by anchor for your team – it’s time to step out and give ability for a new engine. It will save what you have done.
Every Activity (including Project, Process, or one time change) should be wrapped with key Goal(s)+ KPI(s) to track success. If manager says it’s impossible to setup – they doesn’t understand what they are doing.
Every Activity should have an owner who has a short-term vision/plans in short term (“executor”) and owner who has long-term vision (“visioner”). Both visions are really hard to combine in one person.
In fact, I was surprised by the reaction of some colleagues and decided to share my opinion:
1) Aggression, which is aimed at a certain large and heterogeneous group of people on the basis that is given by nature (gender, sexual preference, age, skin color, nation, etc.) is essentially close to hooliganism for no reason: such aggression does not put in the calculation of a specific person to whom it can be directed. It can be any person with different values and education. Usually, it’s a normal person. Such aggression is irrational. I think this is a sign of some kind of trauma, fear, or lack of education.
2) Such aggression devalues a person, reducing his dignity to a certain sign. I have doubts that it is possible to build rational, open, positive relationships with such a person.
3) In their work, such people clearly create risks, given the fact that other team members and the customer may belong to the group. Working with such a person is a ticking time bomb. Perhaps he extends this pattern to other groups (for example, women)? I understand this reaction from the company.
About the dismissal. Here I have a twofold feeling and the question: does it make sense first to give a choice to such an aggressor: take a course with a psychologist/psychotherapist or still quit. Should the company take responsibility for the person in matters of psychological health? I don’t have an answer yet. I am also surprised to read the opinions of other members of the IT community when they support the expression of such aggression. On the other hand, I understand that it is sometimes difficult to draw a line between freedom of expression and irrational aggression.
I also made a survey “Should the company pay attention to the psychological health of the employee?”
Out of 618 people, the answers were distributed as follows: 40% – Yes – conduct training 30% – Of course – a psychologist should be on staff 30% – No – it’s a human business
I read more and more about the 4 stages of an interview, etc. I was also previously skeptical about the principle of fast hire, fast fire.
At the moment, I have two opinions on this matter.
Opinion number 1
A good interview could consist of 3 parts.
Ideally, could be reduced to one interview: The first part (30 minutes) is HRM pre-screening, which is essentially done to save time and superficially assess the candidate / match the position and the company as a whole (soft skills). The candidate asks questions about the company. This can be done simply as a short informal acquaintance. This part is best done separately from the interview. The second part (1.5 hours) is carried out by a similar Expert Advisor, which is one level higher. It is important to have a quick test task (30 minutes). This part will help you understand the suitability of the position (hard skills) The third part (30 minutes) is a direct acquaintance with the future manager. This will help to understand alignment with the future objectives / values of the leadership. For an employee – to get specific work. Unfortunately, this important part is often skipped because the manager is busy or even uknown. Anyway this part gives necessary specifics and can solve a lot of questions and risks in future.
In total, the optimal duration of an interview with a separate prescreening / acquaintance is 2 hours.
Anything that longer seems to me more redundant and can be minimized to this timing. Of course there are exceptions: you build rockets or is has a non-trivial position. Anything shorther – carries certain risks and benefits.
Opinion number 2
After all the interviews I have done and the bugs caught, my slogan is:
The best test for a person is directly the work that he has to do.
I made sure that:
There are candidates who can go through all the stages, any tricky interviews and tests, but show their inadequacy to the work / team,
There are also candidates who do not disclose at the interview, but demonstrate excellent results at a specific job.
There is another important reason why employees can leave their work after an excelent interview and great manager:
Work and external factors affecting the employee are also quite dynamic things.
If a person came to the same tasks, there is a possibility that over time (and usually unexpectedly soon) they will change, like the manager, the team.Even candidates don’t know if they can cope with such changes. Only time and specific work in a specific team will tell.
As a result, I think it doesn’t make sense to scare away candidates with complex interview: you will never find all hidden stones or gold. Real work will make it clean and clear.
In fact, I think fast hire, fast fire still makes sense, no matter how brutal it sounds.
Against the background of a decrease in connections / interactions within companies due to the coronavirus, I see a tendency towards a decrease in the values of values / attachments / loyalty of employees to the company. This greatly simplifies the attitude of employees towards changing jobs.
According to my feelings, we are only on the eve of a hiring crisis.
It seems to me that it’s time to revise your answers to the question: “Why our company is better for an employee than company X, Y, Z”.
I see that many people have already accepted the fact that working from home is better than from the office. In fact, the quality and location of the office is no longer important, fresh coffee is not important, there are fewer intersections in extra-project activities, contacts with colleagues have become more abstract and virtual.
When a person stays at home, he definitely loses the mental connection with the context of the company, he contacts more with his personal environment (family, children, park near the house).
It seems to me that it entails a change of focus and priorities – people are more focused on themselves, on their environment, and their personal goals/comfort than on the company and its values, goals.
What’s still in the price is something that can improve the personal environment:
Salary often comes to the fore. Left alone with personal space, there was a clear desire to improve and expand it.
The ability to easily go to a completely different comfortable location for yourself / family (at sea) and work from there.
More time for personal life, less workload (reducing the working week no longer seems fantastic)
Long time ago when the grass was green and I was a student, I used a chance to start my development career in a big and well known company.
Finally, after 3 month of work it was a talk with manager and I was fired.
Earlier this experience was like a black label in my hand: I was ashamed of this fact.
But now I see that dismissal is that unique experience that made me better.
Now I want to share some of my conclusions with you. I think it can be useful for young people who are starting their work path. Also it will be useful for managers.
I hope all these notes will help to resolve issues without dismissals.
Let me start with my personal faults:
1. My progress, efforts and blockers were not visible to management.I was focused just on work itself and only the final results played a big role for me. As a result, during assessment my manager had not full vision and it’s made my efforts less valuable.
Recommendations for a junior:
Setup a regular way (e.g meeting, report or just message in chat) with your manager/mentor where you’ll describe your current activity, achievements and blockers.
Don’t worry if your task is not completed – just share your progress.
Recommendations for a manager/mentor:
Setup of a clear process to communicate with your subordinate is a part of your work. Don’t forget about it! If it’s not done – it’s your fault.
2. I was too slow. It’s not a real fault: I’ve tried to do all things by myself and books. Copy-paste of others code was for me just as a crime. I was focused to do all things done without support from outside. There’re many reasons why it was so:
University and school taught me to achieve results based on my own skills and knowledge. As I understand now, we need time to change this mentality to became a team player.
Internet and sharing of information concept was quite new in this time and I preferred to work with books than internet.
I have asked some colleagues for help, but they were busy. It was like a silent and unfriendly atmosphere around me.
In general, it gave me a great experience since I’ve made a lot of things by hands and understood how it works inside. But still – I was slow and my achievements was small in comparison with some other people.
Recommendations for a junior:
Don’t hesitate to ask for help! All current goals cannot be achieved by one person – it’s a team work!
Don’t be shy if you don’t know something. It’s ok! Ask for help if needed. If your colleague is a professional – he will help or direct you to a right person.
Don’t hesitate to re-use the code of somebody else. It’s not a crime – the whole concept of development is basing on the code reusing. Also reusing of code – is the patter which used in different areas to learn something – e.g. painters.
Books is a good source of knowledge, but in a time of high speeds you also need to use fast channels of knowledge – communications and internet.
Internet has a lot of information to solve different problems. Google a lot to became a guru of Search =). It will allow you for find fixes of tech problems faster to be focused on a goal, but not your mistakes and lack of knowledge.
Recommendations for a manager:
It looks simple, but it makes sense if each junior will have a mentor who can help with answers and gives a right advice. It allows to save money spent on Junior since it will grow faster, and in the right direction. Also, busy colleagues will be not overload with unexpected questions.
Junior should have a Mentor.
Work to setup a friendly and gentle atmosphere inside the team. It will allow to integrate new team members faster, the team will work as a team, but not individuals.
It’s a goal of Manager to make a team work as a team, but not individuals. Team should support each team member, especially junior.
Probably, I wrote a simple things, but such simple advices can prevent a portion of negative experience.
Also, the company I left used improved their processes and added onboarding and mentorship as processes.
As a summary, I see that all this experience made me much better. Now I see how important to help and grow people. I’m extremely happy if my team members growing and solve complex and outstanding problems. It motivates and gives me outstanding energy to do my work!
Good luck and don’t forget:
Even you’re fired – it will become a good and extraordinary experience later.
This post is not about viruses =) Let me share an important note I’ve made during the work process setup for any activities or projects I manage.
Any work process should be self-sanitized: it should have a step to review the process, detect problems and have a mechanism to apply fixes for them.
Why do we need to? Self-sanitizing makes the process adaptable to a reality, fix the issues, make it more convenient for participants and etc.
This point looks like a Retrospective meeting in SCRUM, but it’s not only about SCRUM.
I think any long-running work process should follow this rule.
For example, after each estimation, I do a retrospective with the team to detect all pains we met during the process . I’ve created a spreadsheet where I accumulate all sensible action items to fix raised problems. Also, I have a reminder to take at least one item and perform it. Now the process is much better than it was before. It’s alive and convinient!
Some of my colleagues asked me about the approaches I use to manage my time. They used well-known words like “Time Management”. So let me share my personal vision on time management.
Before I put here my tips and suggestions let me start with the most important question:
Why do I need any kind of Time Management?
To answer let’s rephrase it: Why do I need to manage the time I have? Since the management of time itself does make sense without activities, let’s rephrase it again: Why do I need to arrange the time I spend on activities?
After analyzing myself I’ve found the following amazing and really simple answer. Don’t forget that it’s my personal answer, but probably, it can be used by you:
I need to manage (perform/reject/delay) my activities in time to fill my life with HAPPINESS.
I think this sentence can be selected as the general goal of the whole Time Management.
The big point I’ve realized:
Personal HAPPINESS is the key criteria of management of time. Not performance, not even successfull results.
So the key question can be answered by “Time Management” looks like this:
How to arrange all activities of my day/week/life to be HAPPY
You can figure out your own question if you’ll translate what HAPPINESS means for you.
Happiness for me is:
I want to have fun while doing my activities: I want to feel the energy, interest while performing the activity. I want to do it without stress.
I want to see some valuable results of my activities.
I want to grow, get new experience while performing my activities.
I want to effectively complete my activities to have time for new activities which will bring me new experience and happiness.
Life should be balanced. I want to have a life where my work, personal life, and future goals will be in balance.
Also, I’ve realized another important point:
In the context of day/week/life, we have a limited resource – Time. But if we’re speaking about Time Management and Happiness
TIME is not the only resource we need to manage!
We need also manage our emotional ENERGY.
Such kind of Energy is a resource for proactivity, entusiasm, interest, creativity etc. Without these attributes, time and happiness does make sense.
My key idea is that energy has a close connection with the feeling of happiness.
To continue, let me mention some important properties of the Energy I see:
Activities can not only consume our energy but produce – fill us with energy
Performing an activity without energy makes us fill unhappy.
Performing of activity with Energy makes us happier.
Results of the activity are more valuable if we spend more energy on doing it
People trust us more if they fill our energy and our actions equipped by emotions.
As a result, understanding of Time Management is hidden in the answer to the question:
How can I arrange my activities in time to do them with maximum energy in a long term?
I’ve added “in the long term” because we need to stay fulfilled by energy not only one day but the whole life. In another case, it will be a way of emotional burnout.
Now when the question is defined I want to describe my answer. But let me do in another post. =)