process management and all things workflow :)

operations

So as you know my speciality is distributed teams 🙂 This post is about what changes does the agile communication face (and scrum in particular), when it’s adjusted to the distributed teams. This is my experience, I don’t assume this is a silver bullet, but such approach works for me for the last 5 years and proved itself to be proficient.

Let’s divide communication by types:

stragetic meetings (plannning, retrospective)

daily huddles (e.g. daily standup in scrum)

day-to-day clarifications.

by Text I mean Instant Messaging

Let’s add another dimension: geographical distribution:

Collocated teams – everything’s perfectly fine for all three types of communication events. Teams, working in scrum, that are collocated face no issues with any of those.

Distributed teams with little difference in timezones, but still with overlapping hours. Great examples are US – Chile / Mexico. Netherlands / India.

Daily syncup can be handled with almost no pain, as well as planning and retrospective (if you incorporate scrum in your company).

Instantness of clarification on work tasks is lost (when overlapping hours end), however given that skype / hangouts / whatever you use is just a click away – no significant impediments are to be found.

No matter what you think about focused team, and that it processes everything faster due to unitedness, whenever team member is outside of her overlapping hours with the rest of the team – communication lag happens.

Distributed teams with no overlapping hours (8+ hours difference).

Approaches here are:

3.1 Team liason. When someone from the team in one part of the world is having a meeting during his time off work, to sync up with other part of the team in different timezone. Usually, team liason is someone from product team, however there are different examples of who syncs up with dev team in the industry. It can be simply a representative from one part of the team that syncs up on the progress with the other part (just like in scrum of scrums)

3.2 Timezone Compromise approach. Teams change their work schedule, to have a compromise in at least 1 overlapping hour, in order to sync properly. For example, start of working day for one part of the team in western hemisphere moved from 10am to 9am, and eastern hemisphere team changes their working day to start from 10am to 9am. Thus, you got at least 1-2 hours overlapping. Whoa, problem solved -> we can get back to bullet 2, on how teams with overlapping hours work together! But remember, everything depends on team configuration, whether the team is comfy with selected approach, and development tasks specifics.

3.3 And finally, you can set up communication process in a way it’s comfortable for everyone in the distributed team. My personal beliefs is that redundant communication is always less efficient than on-demand-clear-bulleted-discussion, thus I’d prefer clear agenda and clarification when needed.

— 3.3.1 First of all, that means that people still are participating in retrospectives and planning sessions, cause those events happen once per 2-3 weeks (thus distraction or working off-time is tolerable). However, those meetings / scrum rituals are to be performed with clear goals, and well-prepared bullets. Try to not allow offtop conversations (when someone gets into topic not relevant to current discussion). Remember, team values personal time, and no team member should suffer from poorly planned meetings.

— 3.3.2 Second, it means that daily sync (or daily standup, if you follow scrum) can be done via text, at the end of team’s working day. In order to reach more visibility, developer can share a link to the branch, that he worked on. But main goal is to have an exceprt of what team member has done during the day, that is visible for everyone (e.g. special channel on updates in telegram). Some people also propose asynchronous video messages (Dave Snowden of cognitive edge shared this experience of his with me, referring to the times he worked at IBM) – you record video message for the team, and even share the screen, if you want some visual material on your work.

— 3.3.3 Third, clarificational communication (meaning day-to-day clarification communication type) is done on demand. Meeting for such batch of clarifications is done in a compromise time, so that noone’s felt left out). The good part of that is since you don’t have to get explanations on critical and extremely complex clarifications every day – you don’t need to torture your colleagues with evening / early morning calls each day. Usually, most of the impediments are resolved via instant messaging. Please keep in mind, that requirements standardisation is a key role in these clarifications, as properly structured requirements save a lot of time while developing a feature.

— 3.3.4 And fourth, but equally important, more standards and documenting. The more info necessary you prepare for your colleagues overseas, for the questions that may rise during your off-time, the less he will be stuck. Please use common sense in how much you need to prepare. When team gets to know each other, such planning becomes much easier. And finally, efficient process always means that person doesn’t get stuck 🙂

Finally, we’re getting to my favourite ever part!

Distributed teams with no overlapping hours + language barrier! I’ve been working with those for the last three year, and here are the additional steps to make it all work efficiently.

The three common baseline rules to follow are:

Prepare meeting agenda prior to the meeting. I’m talking about writing down basic points, explanations, and maybe even branching when presenting solutions (depending on meeting complexity). It’s obvious, that people not fluent in english can’t properly communicate during the meeting – everything starts to require much more time, which isn’t efficient (and quite heavy, when it comes to hourly payrates 😉

More documenting. You may say that Agile says “working software over comprehensive documentation”, however when dealing with distributed teams + no overlapping hours + language barrier, I can’t stress enough how much documentation means. There are key principles better to be described, as the team grows: communication standards (what type of communication is done via which tool, working time, speed of response), requirements acceptance, visual standards for documentation. All three principles affect how developer understands the task he’s supposed to work on. Requirements should have only one way of interpreting, should include clear pre-and-post-conditions; bugs are to be described in reproducible steps.

And finally, it’s essential to have a bi-lingual person (team liason), who helps with english (he comes up with translation of complex bits, moderates the discussion). This person is better to be a developer or someone who gets the technical part well, as she often helps with syncing two development parts of the team. She may also add meeting notes on technical details agreed once meeting is over. That person most likely will sacrifice some of her time off, since hours don’t overlap.

At the end of the day, there are plenty examples across my experience, and blogs, how people manage to work with just on demand meetings, and create complex projects together. Those are git, atlassian and, among others – SkuVault.

Let me add an additional rule to common sense manifesto – process over redundancy. Greatly established process, understandable and rational for all parts of the team, makes it easy to track progress through transparency, keep team motivation high (for being productive) and time off undistracted.

Let me share a bit of an experience from past 6 months 🙂 We wanted to open a branch in Russia (parent company is in US). Our case is a bit unique: our CEO wasn’t able to visit Russia, so we had to verify and send the list of docs back’n’forth between two continents.

Actually, that’s not as complex as it seems. You just have to deal with bureaucracy (which dramatically improved over the past years) and intradepartmental miscommunication, and, well, running with pack of docs to veryfy them in both countries.

Let’s get to the basics – list of docs needed to open up a company in Russia:

Owner’s passport

Application form (to open up an LLC)

Decision form (to create a company and assign a general manager)

The list alters just a bit if the owner is to be another company:

Documents on establishing parent organization, who owns it and as the russian tax dept states: note from Department of Trade or some analogy

The rest is the same as above.

Parent Company Docs in US

Main company docs in US are:

Certificate of Existence (when the company was opened and by who);

Annual Report (yearly report on company state);

Letter of Good Standing (report on company tax health);

You got to file only document originals, signed by Secretary of State!

You take the document originals

You translate them at translational bureau

That bureau should also notarize the translation

There are cases, when company has several owners. I’ll get to it in the section below.

Docs to Confirm Parent Company Owner Identity

Russian Tax dept dreams of all people in the world having same documents, as Russian Citizens (passport, INN (analogue for SSN, that doesn’t allow to steal identity :), SNILS (pension fund info card). So you may be stunned for a sec when a receptionist asks that info from US citizen. And it usually stuns the whole dept, when they are explained that there are no inner passports in US (only for foreign travels). Jesus Christ, those barbarians use non-canonical (USSR-influenced) pack of personal documents -> send in the inquisition..

Well, in reality passport of a US citizen (for a foreign travel) works great. The biggest issue here is that such passport doesn’t contain info on where the person lives (and this is essential in Russian world perception – how can you not be attached to the particular address in your main document?!). This issue is resolved by copying Driver’s Licence that includes living address.

So, in a nutshell, documents company owner needs to send to Russia are:

Copy of Passport of a US Citizen

Copy of Driver’s Licence

Those documents are processed in Russia, before filing:

Passport and Driver’s Licence are translated

Translation notarized

Now, getting back to the question, where you got multiple company owners. You don’t want the pain to be worse, so you better process docs of CEO, and not co-owners. That will make it easier and won’t require additional signatures on other documents.

Application form

Different branches of Tax Dept want the Application to be filled in different sadistic ways, which I’m not the fan of. If you work with some lawyer firm, that makes it all for you – DON’T BELIEVE A WORD! Well, they will fill up many docs for you and even run and sign them for you. However, some things they cannot do – e.g. verifying signatures of company owner, if he’s not in Russia. In fact, good lawyers on creating international branches can be found in their natural habitat: Moscow and Saint Petersburgh. And since those lawyers don’t work with other regions (they can’t create international branches in other region jurisdictions) – “move along, nothing to see here”.

Many law firms and tax dept themselves will tell you the only option available for Application Form to be filled. It includes:

Filling only in Cyryllic and only by parent company owner (bogus – you can have the full document ready, and only to be signed )

Signing by owner, with signature verified ONLY in Russia (bogus)

Signing by owner, with signature verified ONLY in Russian Consulate (half-bogus).

Getting to the last point: in fact sometimes tax dept may reject signatires not verified by Consulate or some legal Russian Federation entity. That sucks. You know what else sucks (and works!): you can verify owner’s signature on application form at any notary in US (it’s better be Russian-speaking notary, and there are loads of them in almost every country corner – in Louisville, at least, we found one). Why did I mention the ‘sucks’ part? Because Tax dept (and Lawyers) in Russia state that only Consulate should verify signature on application form, but Russian Consulate and Embassy state that US-based notaries (even not speaking Russian ones) have the same power to verify the signature!

Russian Consulate Way

You are lucky! If your CEO got zillions of time to visit Russian Consulates (which are located in the corners of east and west coasts), to schedule appointments there and deal with GRBM (great russian bureacratic machine), which has it’s gears oiled by thick wax, and thus running slow.

While D.C. consulate is fast to reply and it’s quite easy to reach it out by the phone – SF consulate, on the contrary, replied to me after 2 weeks passed. Small hack: you can also verify docs in the consulate you are not attached to (e.g. KY citizen verifying docs in SF) – but clarify that moment first (just in case).

You first have to pick free slot (usually a month or two away from current date), pay consular fee and verify the signature.

You got to pick your company docs (cert. of existence, letter of good standing, annual report) and bring them to the consulate

You got to bring your personal docs (originals and copies of US Citizen Passport and Driver’s Licence)

You got to send already filled forms you want to verify notarize or sign, via email. Not really handy, but tolerable.

After you get into the consulate, you got to verify company owner signature. It should look the following way: signature verified, with stamp of a notary in a consulate. The next page is an info of a notary, that has verified the signature. Notary should also state the number of pages in the document (so that there are no replacements afterwards). Both Application form and Notary page should be stitched together and stamped on the stitched place.

one more thing to mention: if you’re working with lawyer firm, and it handles the filing of docs to the tax depts and social funds, you should write Limited Power of Attorney from the owner to the law firm’s courier (or yourself, if you’re in charge of the branch creation)

Local Notary Way

It’s much faster and easier. CEO signs the application form at any notary, and a notary verifies the signature. It would be ideal, if the notary would enter her notary licence number (in the INN / ИНН) field.

Limited Power of Attorney

In order to file documents for company creation, we got to write Limited Power of Attorney, for one year, for a person who would file it. You will need an original POA and a notarized copy.

Decision Form

Easiest part is the decision form. CEO should just sign 2 copies of Decision Form, it and stamp them with organization stamp. Don’t worry about non-ink stamps that are common in US – they are accepted in Russia.

2 copies of Decision Form filled in Russian, signed by parent company owner, with parent company stamp on it.

Application Form filled in Russian, signed by parent company owner, with notarized (in US) owner’s signature, and notary’s info attached to the application form. Russian bureaucrats would ideally prefer Application Form and Notary’s Note on number of pages stitched together, and stamped in the stitched place, so that no pages could be replaced afterwards. But that’s not mandatory.

That’s all folks! Don’t forget to take confirmation papers on documents receiving by the tax dept, as well as OGRN / INN papers, and certificate of existence in Russia. Keep 2nd copy of Decision form to yourself as well, you may needed it in the bank or some other institution sometimes.

In order for the distrubited teams to work, you got to have a clear flow, a set of general rules, that will fence the process and allow people to collaborate effectively around the globe. If everything is set up correctly, you are able to create amazing products with global professionals, and cover customer support 20+ hours a day.

Communication

What do you miss most when working outside of the office? Procrastination!

Communication that is effortless in office envoronment may be not as natural in distributed teams.

Urgent chat, where On Call & Quality Assurance teams collaborate in order to resolve outstanding issues as fast as possible (you can read more about On Duty teams in my previous post on year retrospective);

Dev chat, that is general for all devs, covering the questions of “Who the hell broke QA again?”, …, to “So have you seen Azure copied Amazon pricing plan”.

Russian Dev chat, due to significant part of the team being russian-speaking, is for fast communication and clarification across russian devs;

Quality Assurance chat, for questions and discussions across QA members;

Freshdesk feed, for fetching freshly issues support tickets, so that if immediate attention needed -> relevant people are informed;

separate project chats with various messaging activity, depending on how big and urgent the project is.

Telegram

Telegram is extremely handy when it comes to making life easier. We use:

hashtags, to mark needed messages in order to find them later. That could be #shipstation hashtag to mark everything related to ShipStation integration across all chats;

mentions, which allow to ping a person even if the chat is muted. So if dev doesn’t want to get tons of messages on a related subject, he still is notified when he’s mentioned;

great gif support (not only kittehs, but also when you need gif with reproduced bug);

Video Conference

When it comes to video conferencing, we use hangouts, since skype app is awful.

General Flow and Jira Ticket Descriptions

It’s bad when you lack information on stuff you need to implement. In order to minize that, we have rules on filling out the ticket, so that as less questions as possible are raised.

Ticket description has testing plan, implementation plan, sequence of steps on how the feature should work, client and needed sandbox credentials, and tons of other information. Now that doesn’t prevent requirements change, scope creeps, blind spots (we all know that software development is an endless pain and all related people should suffer), but it surely reduces questions to clarify / misunderstanding / delays to the bare minimum and greatly helps in communication.

General Flow for the ticket before it hits implementation requires it’s acceptance by PM and dev, so those are members who control whether ticket is clear enough or not.

Workplace Attendance

Although you are not obliged to come to the office, it’s still essential to be at your workplace during working hours. If you’re working flexible hours, you need to agree upon them with a manager or people you collaborate with, so that you have a consensus solution on comfortable time to work for all.

Calendar lists days off, while chatrooms are good to inform colleagues about hours off, if necessary.

Working remote takes self-dicipline and responsibility, but pays off really great.

Notifications for pinging stuck projects

Be sure you use various notifications, such as jira web hooks + telegram, email notifications on stuck code review or testing, color coding on project management boards for due dates and approaching deadlines. Alltogether, those measures prevent unexpected situations and make the risk of missing deadlines, reduces the risk of tickets stuck halfway, keeps you alarmed in almost all cases where the flow takes wrong direction.

We are Codebranch – an external web development team. For the last couple of months we’ve been preparing the grounds to run – now the website is up, our 3 offices in Finland, Russia and Turkey fully operational, so we’re good to go!

Codebranch Website

We aimed to make our website content-centric, so you won’t find awesome charts and colorful pictures. You can find important information like what we do and how to reach us almost instantly.
The same applies to the whole approach of our company – we work in a transparent, leanand efficient way.

The External Web Development Idea

When we created Codebranch, the idea was simple: we wanted to be team which is not a spare pair of hands, but an extra brain for external development.
So this is what we do:

develop stable, reliable solutions;

consult on the workflow;

aim to point out possible pitfalls.

Our final mission is not just the completed solution, but also complete understanding between developers and client in the course of work.

Our Web Development Team

Each of our developers has between 3+ and 8+ years of experience. We are really proud of our team’s professionalism, but what makes us really great is shared development experience. Our team has been working together for almost 2 years, and we believe that a well-shaped team brings more advantages to the working process.

Our Approach to Development

Everything we do – we execute with care.

We ask the right questions to clarify important matters before we start the project. Always.

There are usually multiple ways to achieve a goal. We can suggest more flexible solutions.

We aim to point out possible pitfalls and think how to avoid them.

Clear roadmap, displaying the project stages in dynamics will be given after the contract sign-off.

English is a must for everyone in the team.

Project Managers are the tech people too. Everyone is very fluent in project’s technical details.

Development Services

We have been developing Web Apps and Websites for a very long time – we live webdev! HTML5 + Canvas, Responsive, Facebook Applications, Complex Frontend and Backend coding – we can help you present yourself in the web, develop an additional module to your website, integrate it with your CRM system.

We can help you with CMS as well!

We love the buzz and community around WordPress. In fact, we build our own websites on WordPress as well!

In case you are looking for an enterprise solution – here comes our team, ready for some Drupal Develoment.

If you need / use a helpdesk, and Zendesk in particular: we can help you with its customization and integration. That’s something we’ve been working with quite often for the past 2 years.

We build mobile solutions as well. Whether it’s a mobile version of a website, native or a cross-platform app – don’t hesitate to ask a quote on your project.

We will share our thoughts on the industry, as well as development tips and tricks, be sure to visit our blog and leave us a comment =)