What’s like working for a foreign company
Hi everyone, my name is José(A.K.A “El único costeño del grupo”), and i work for an amazing Colombian-based software development company called Ceiba Software House.
Working for US Companies it’s been quite a challenge for many reasons, but here is a quick list of some of those that i’ve identified:
- In order to be able to help US companies, you must have people speaking the language. Also, these people should have a clear technical understanding and solid development skills. We can all agree that having an informal conversation is not the same as having a deep technical conversation. So finding the right team members with solid English skills that can also write great code is the most common challenge I have observed.
- Hiring English speaking people (developers, project managers, sales representatives, etc) makes sense if you have a client base, but if you don’t, do you go out there and hire English-speaking talent? The chicken or the egg problem.
- Trying to get into a market where you do not have the experience or the presence is also a big challenge.
At Ceiba, we have been working hard to expand into the North American market for a while now, and I feel lucky to be working directly with our North American clients as a tech lead.
Now that we have some traction in the US market, and have a portfolio of active US-based clients, I wanted to share my experiences with you.
Getting started
The language: To be capable of understanding the requirements being handle to you or maybe a joke or clues in a conversiation is something really important.
Deadlines: always deliver on time. Maybe for some non-US clients, project deadlines can be moved at the last minute, and usually, it does not represent an issue. For some foreign clients(in this case, US clients), this is a no-go. Deadlines are usually tied to launches and should not be moved.
Skillset : it may happen that the team don’t have the skills required at the moment to perform: in this case, we take some time to train the developers in the selected tech stack and if the client has guidelines(templates, base lines), we take some time to learn them too. Also, for us it’s very important to have every requirement in place to guarantee an easy project start up. We are talking about :
- Credentials to access repositories and tools, i.e: Jira, CI/CD Tools, etc.
- Environments: usually development, stage(QA-Test), production.
- Architectural guides or designs
- Tooling : SDK, IDE, etc.
- Coding standards: we do have those, but if the client has a different set, we can always follow or suggest.
Later on
Our clients expect us to participate actively. It means: being an active part of discussion, decision making, design process, etc. Some clients want allies to help them design and build solutions and not just “a team augmentation”.
We take pride in leveraging Scrum methodology (after all, we are an Agile Company), so ceremonies like daily, planning, tasking, review, retro or backlog refinement are required for us to be with the client to grab a more deeper understanding of what we’re designing or building and also keep everybody align and for transparency purposes as well.
What I’ve learned
Being open to learning new technologies is a highly valued skill. Just working for a couple of clients, I’ve picked up a few technologies in quite a short time.
Your English can and will improve. Given that all of your interactions are in English, your language skills will surely improve. Also, take advantage of your teammates correcting you to get better(most times clients do not correct you, they’re too polite!).
Our Devops’ skills we put to test because some clients are not mature enough in that area, but we are. It’s a plus that our clients can take advantage of.
Teamwork is one of the most important things. Reach your teammates in order to get help to fulfill commitments. Usually, teams are multidisciplinary, meaning team members specialize in very specific areas and if you need help in that area, then you can reach your mates. In our company, our teams are composed of developers, tech leads and project managers. Besides those, we have a specialized team (Swat Team) whose function is to get in, solve issues and get out and our clients can make use of them aswell.
Let’s finish!
Always be prepared: we couldn’t agree more on this, right ? But what does it mean ? It means having a clear understanding of the project/product/process your company is trying to create/improve, having a clear scope of what is trying to be achieved. Every member of the team should have the same clarity of every aspect of the work to be done. I mention this because people have roles within the team and most times their knowledge of the project is limited to their roles.
Use the channels provided for communication: Slack, teams, hangouts, email or phone. If what you need to continue it’s important you can use more than one and always try to keep “evidence”.
Be an active part of the crew: you must let people see you, participate, express your ideas, don’t be afraid of being wrong and expose your ideas if you feel confident.
Be on time for meetings: this is very important. In fact, if you make it on time you’re already late, you have to be earlier.
Deliver on time: deadlines are commitments you must respect. Unless somebody dies(kidding, let’s hope that’s not the scenario), there are no excuses, none whatsoever.
If you have had the opportunity to work for a foreign company, let me know what you think. Comments are very much appreciated.