How to Rescue Your Magento 2 Project
This article uses real experience to address how to find critical mistakes in projects, fix them and make the team and the client happy.
Join the DZone community and get the full member experience.Join For Free
My name is Opukhlyi Vladyslav, and I am Backend Tech Lead at Magecom. My article is based on a talk I gave at Magento Meetup #12, where I talked about the experience of detecting and fixing project issues in the Magecom team.
Four years ago, I was working as a developer on one interesting project and later started leading it. There were extremely motivated teams both on our side and with the clients.
I had high expectations for this project, judging by my developers’ experience. I thought the client would be happy; we’d have a lot of challenging work, feel the team’s help and support, and use SCRUM. But the reality didn’t meet my expectations. The only thing I received was urgent requests since I was working more than 13-14 hours per day; we had strict deadlines, a rush of change requests, 500+ messages per day, and finally, ASAP releases on client requests.
Why I Lost Control Over the Project
Developer mindset. It is good to think with algorithms since they help to process and handle a lot of real requests. But when you start a new position as a Team Lead, you will have many more management-related items. As a result, you won’t be ready for those requests if you are unprepared and don’t know what to focus on.
Focus on tickets instead of processes. It means that you’re fixing tickets, delivering them, and still struggling with a project not working as it should.
Curing symptoms, not the root cause. You’re receiving more change requests, trying to fix them, and working overtime, but it doesn’t help. You need to stop and understand the root cause, fix it, and proceed.
Snowball of communication. After two weeks of work, I started receiving more than 1,000 emails in my inbox, and I was not ready for that.
Fear of transparency. If I made any mistake, I wasn’t sure I needed to notify my team members. I thought that the client would treat us like not reliable developers if we made some kind of mistake.
What Are the Steps to Rescue Your Project
What items did I try to implement?
Work more hours.
Add more team members.
Spoiler: none of these items helped.
The thing is, working harder doesn't lead to resolving issues and bottlenecks; meanwhile, working more negatively influences your work-life balance. Finally, adding new team members will not help as quickly as you expect since it will take enough time to give them an understanding of what this project is about and get them up to speed.
Another option managers usually utilize is pushing on a team to get results, but unfortunately, it doesn’t work as well and always leads to team burnout in the long term. Setting more strict deadlines is almost the same thing.
The only perfect and workable solution is to stop and change the approach. Sounds easy, but what steps does it cover?
#1 Detect and Fix Bottlenecks
As you can see from the picture, it doesn’t matter how robust, fast, and quick your team is if you have a bottleneck. All of these resources will not have a chance to be moved from the left to the right side. If those circles are tickets, meanwhile, the bottleneck illustrates the team performance.
So, if you have a slow team performance or such a bottleneck, you will not have a chance to work efficiently.
Examples of Bottlenecks
- Delivery flow;
- Onboarding flow;
- Deployments flow;
- Low-quality requirements.
- The rush of emails, DMs, and daily/weekly calls, which are wasting a huge amount of resources.
- Different time zones.
- Long approval process. As an example of resolving this bottleneck, we might have approval from the client to process small requests in less than 2 hours without waiting for approval from their side.
- Overloaded team role (Project Manager, Technical Lead, Frontend Developer, Backend Developer). To eliminate this issue, you can utilize a general chat/channel where all stakeholders are gathered and all requests are processed.
- Multi-project allocation. If we’re talking about out-staffing or outsourcing projects, developers are usually allocated partially to a few projects on a part-time basis. That’s why if a developer works during the first part of the day while another engineer works during the second part of the day, they do not have an intersection, which can be resulted in at least a one-day delay. It should be escalated and fixed by a manager to allocate time for work for team members in similar hours.
#2 Build Trust (100% Transparency)
Follow three steps if you want to make your client trust you:
- Show results every day/week. Constantly.
- Avoid chats without clients and DMs. It’s a very common mistake caused by the fear of transparency. Create a single channel with the client and your team to allow seeing the exact progress, choosing the most convenient way to check what’s happening: either on Jira or in the chat. Also, you can quickly tag a client and ask for help if necessary, which can be also another way of delay bottleneck solving.
- Simplify reporting process. When you have a very complex project with a lot of tickets, requests, or changes, create a Google Doc with the following columns: ticket name, ticket status, and comment to save you time.
#3 Handle Expectations
- Deliver on time or at least handle expectations.
- Handle both team and client expectations.
- Be proactive (provide options, not questions).
For sure, you will not have a chance to deliver everything on time because something bad might happen, like receiving an urgent request from another part of the team, the website might be down for 30 minutes, and you needing to do an investigation of what happened. But if you escalate on time and provide your client with accurate information, you will update, change, or handle their expectations. The truth is that when a client receives what they expect, they’re absolutely happy. Otherwise, there are no other ways to make them feel happy.
#4 Solve Business and Team Problems
When I started working as a Team Lead, I was struggling with receiving problems, issues, blockers, and so on, which I received a lot from the client’s or dev team, and I felt really confused.
You can convert any type of problem into a task. Think about creating a ticket for improvement, assign it to developers, find the best solution, be proactive, provide your client with a great fix, and make the website work better.
#5 Improve Team Efficiency
- Improve the velocity, speed, and capacity of your team; only then focus on your own. If you are focusing only on improving your skills and speed, then a team and a client will be struggling since you have eight hours per day or even less, while your team has 25 or 40 hours, so you should allocate tickets to the team and take care of improving their quality and performance.
- Simplify workflows. The thing is, software development processes are complex and consist of a lot of systems and workflows (dev, support, onboarding, delivery). Check all of those flows and make sure that you don’t miss any of them and that all of them are described well. Please, spend your time, focus, and improve. As a result, every time when an onboarding takes place, you will spend a few hours or even minutes if the steps of the processes are defined well.
Always listen to your team members’ ideas, since a lot of employees used to work with other interesting projects and have many good ideas. Put some notes, create a backlog of ideas, and try to add at least one item per week, and you will see the result and efficiency.
Let’s focus on other additional ideas that can help with a similar impact.
Start With Audit
When you start to develop a new project, please do not ignore an audit. You should understand where you are, the whole roadmap and next steps, and the goals set by the client. Also, please take a look not only at the tickets or specifications but also at all types of flows (onboarding, dev, support). If you skip this step, you will not have enough control over the situation or a chance to share your concern in advance with the client.
For sure, we have some regular and recurrent processes for each project. Doing the same work manually each time is just a waste of time, resources, and money. If you have an onboarding process, please document it once and adjust it whenever something’s changed (steps of deploys or steps to get the database dump).
Based on our current project, we have automation for creating database dumps, sanitizing database dumps, verification, a notification from servers if something goes wrong, and so on. All those automation take some time to implement, but they are worth it.
As for frequent requests, f you get a lot of them from the client (on the latest status or tickets), just create a document and put all these steps into it.
Fix Ownership and Responsibility Gaps
Sometimes, the most critical and painful bottlenecks and issues happen when two people are responsible for the same type of work (like Project Manager and Team Lead or Frontend and Backend Developers). Some tickets are combined, and it’s hard to say if it’s Frontend or Backend developer work, and in this case, you should focus on those items, allocate, and assign them properly. If you see such a gap, as a Lead, you should define who will do that work to avoid gathering tough and inconvenient tickets.
Also, as a Technical Lead, you should be responsible for the result and all team mistakes. Keep in mind that if something bad happens, we should start with firefighting and resolving an issue, not searching for the reason why it happened.
Implement 360 Monitoring
If you have any type of tools available on your project, or opportunities to ask the client to buy New Relic, Cloudwatch, or Up bots alerts, it’s a good idea to get notifications ASAP so that the business will lose less money if something goes wrong, while you’ll get a better understanding of what’s going on with the website. Also, please schedule a maintenance scope in the roadmap, and if you plan sprints, please add maintenance works, which are similar to risk buffers in the tickets. All these things will happen for sure.
Here’s a quick summary of everything mentioned above:
- Fix your bottlenecks;
- Handle expectations;
- Build trust with 100% transparency;
- Invest up to 25% of your time in improvements of your team.
Also, I would like to share some useful books that might come in handy:
- The Goal: A Process of Ongoing Improvement (Eliyahu M. Goldratt)
- The Clean Coder ( Robert C. Martin)
- Getting Things Done (David Allen)
- The Deadline (Tom DeMarco)
- Inspired. How to create tech products. (Marty Cagan)
- Essentialism: The Disciplined Pursuit of Less (Greg McKeown)
- Ruthless Management of People and Profits (Dan S. Kennedy)
- Harvard Business Review Making better decisions.
Opinions expressed by DZone contributors are their own.