From good to great
Become a better developer by communicating
Remote is awesome. You get to organize your own time, work when you’re most productive and save on commute. We’ve talked about it. But, it comes with its challenges. One of which: communication.
Being a great developer in a remote environment requires more input than the usual office work. Here are some tips to help you thrive when working remotely.
Did it ever happen to you to deliver a project and have the client confused by the result? Did to me.
I was still in my early career and I got the chance to work on a remote project with a non-tech client. The opportunity was great, they were super successful, and I had a chance to learn a lot. I had full trust to do my work and nobody was meddling in. What more could I wish for?
I did a thorough research before starting and dedicated to delivering the best possible solution.
And, I did. It just wasn’t what the client expected.
Lesson #1: No matter what you’re working on, your understanding of the problem is never the same as the client’s understanding of the problem.
Doing your research and discussing basics with your client is always the first step. It can’t replace regular communication, though.
It’s important that you keep your communication going during the development process and get as early feedback as possible. Usually, the client is the one who leads it. They have their preferred communication channels and established processes for working with remote teams.
When they don’t, you should never hesitate to initiate the communication yourself. If they are busy, make sure you have your notes ready and ask them for a short sync up.
Listen, ask, code, repeat.
Always tend to have a regular meeting schedule and make sure it happens at least once weekly.
Understand the bigger picture
Imagine you join a remote team who’s been working on an inventory management platform for a year. You’re new and don’t know much about the system. Your first task: develop a feature for uploading stock using Excel spreadsheet. You dig in it, find a good library, test and integrate. It’s working smoothly.
Time passes by and the client asks you to extend it, so it can work with twice as many items. No problem, you think. You dig into it again.
But, there is a problem. The library you used is limited and can’t handle that much data.
Lesson #2: Trying to see things from a business perspective goes a long way.
Whenever you start a new feature, put in some time to understand it and the problem it solves. Think about what it does and how it relates to the general purpose of the project.
Take your notes and schedule a call with the client. Try to explain them your point of view and see if they agree with it. Ask as many questions as you can think of. Should you extend the feature at some point? Should it scale?
Get enough insights to choose the right approach and understand if you can reuse any existing functionality.
Great developers invest time in understanding the big picture not to impress the client, but to make sure their solution is extendable and scalable.
Now that you have the big picture in mind, use your expertise to help the client shape their vision better. Whenever you get a task or a story, read it thoroughly and outline the development steps you plan to take.
Think about it. Do you have everything you need to proceed? Do you have an idea of a more feasible approach or something that can streamline future development? Share it.
Schedule a meeting to discuss important steps or pain points. Explain your ideas and improvement suggestions. Discuss it with the client. Now you’re not just a developer anymore. You’re a consultant.
Lesson #3: You can be a good developer by following documentation, but you’ll do much better if you’re proactive.
Clients love it when you give them some technical insight and not dive blindly into the documentation. Just be careful not to get too technical. Share only the information they need to make a decision and make sure it’s simple to understand.
Be bigger than your ego
Another scenario: you’ve been working on a new feature for your client’s online store. It should increase the sales by suggesting trending items when the user makes a purchase.
You present it to the client. They like it. You’re proud of your work.
Then, they notice something weird. The algorithm suggests the user that their new remote control would go well with an iPhone case. That’s not how it should work like.
They said trending, I get it. But, things are different in their head as they’re thinking with the business in mind.
If it was the “4 years ago” me, I’d fight it. I’d do what it took to explain them it’s not my fault and they miscommunicated it. I would spend time and energy proving my right and I’d end up redoing things anyway.
Lesson #4: Don’t waste time explaining who’s right or wrong. You and the client are a team. Communicate, accept their opinion, then move to doing what you’re best at.
You can do even better by avoiding misunderstandings like this in the first place. Just think of #2 and #3 above. Always look for possible problems and discuss your doubts with the client before you start working.
One day, scrolling through the menu of the food delivery I saw a turkey burrito. It looked nice and they had a 30-minutes delivery. Good. I placed my order and got back to work.
45 minutes passed and there was no sign of my food. I called to check. The delivery man was already at the restaurant. Apparently, they didn’t have any turkey on stock so they had to go to the nearest store and buy some. I couldn’t believe it.
My meal arrived an hour later. I was starving. They did anything in their power to get me what I wanted, but I couldn’t appreciate it because I didn’t get it on time. If I knew how big of a problem it will turn out to be, I’d order something else.
If we’re being honest, I’ve probably been in the shoes of that restaurant manager. You’ve probably been there too. Feeling the urge to please your client is not uncommon. In fact, it’s very common. They give us their trust and we find it our responsibility to keep them satisfied with our work. So, we overpromise.
Lesson #5: Your client is human, too. Be honest with them about any bottlenecks or delays. More often than not, they will understand.
Overpromising can pass unnoticed if you don’t underdeliver. But, when you do, the general reaction is frustration. The client starts reporting bugs and gets frustrated at you. Then, you get frustrated at them for not respecting your effort. You know the circle.
The solution? Talk.
Do you have any tips for remote work or an experience you’d like to share? Write it in the comments below. And don’t forget to 👏👏👏.
Originally published at adevait.com on December 13, 2017.