Development Lessons from a Lover of Latin Jazz
Mohammad-Ali A'râbi has been writing code since 2003. The release of Docker in 2013 transformed his life as a software developer and he soon began using Docker Compose for development. Eventually, he turned to Kubernetes to have the same comfort and control in the production servers.
He listens to the music of Django Reinhardt and Louis Prima. When cornered with an aggressive product release deadline, he won't hesitate to drink a 100ml caffè crema (a long espresso native to DACH), enhanced with two artificial sweetener tablets (the one banned in the US), and 100ml lactose-free milk. Here’s a video of him revealing his secret for making the perfect caffè crema. Mohammad-Ali plays tennis right-handed but believes he codes left-handed, considering the letter B is on the left side of the keyboard.
A highly classified interview with Mohammad-Ali A'râbi - cloud developer elite follows:
What development tools do you use as a cloud developer?
Mohammad-Ali: I use CI/CD pipelines extensively. My favorite CI tool is GitLab-CI. I also use JetBrains IDEs and Node.js along with the tools built for it: TypeScript, Jest, Jasmine, ESLint, etc. And, of course, Docker - and now Okteto - are at the center of it all.
What challenges does every cloud developer face?
The whole thing is relatively new, and people are afraid of Kubernetes. I tried learning it by doing, but the cloud service providers are also very overwhelming. Whenever playing around with Google Cloud or AWS, I'm afraid I'll do something wrong and get a thousand-dollar monthly bill.
What's the thing that's most exciting about cloud development?
It's power. You can push a button, and your code goes live — no unnecessary deployment overhead.
Is the migration from local development to production environments a common issue?
I started by using Docker container as a virtual machine. Unfortunately, this assumption will make your life harder rather than easier. I have seen people hate Docker because they're abusing it. It takes some time before one grasps the essence of Docker. So, I would say, don't rush Dockerizing everything when you're still new to it.
What is your secret development weapon?
I would say a project is well-developed if the decisions about it can be postponed. What do I mean by that? Let's assume you are developing a backend. You still don't know where or how you want to go live with it. When the time is right, you might decide to deploy it on a Kubernetes cluster, on a VPS, or on a Docker Swarm. If your code is capable of all these different types of deployment, then you can postpone the decision. If your code is tightly coupled with infrastructure technology, then I would say it is not well-crafted, nor is it future-proof.
How did Okteto help?
I used Okteto to learn Kubernetes. As someone unfamiliar with Kubernetes, I started following Okteto's Node.js tutorial, which I finished in 10 minutes and had my first Kubernetes cluster up and running right away. Additionally, the GitHub integration helped me with the onboarding process. But then, as I like GitLab better, I mirrored my GitHub repository to GitLab and started following Okteto's GitLab tutorial and set up my testing environments. It's a fantastic feature because it doesn't count towards your production pods. I then used one of Okteto's sample repositories as an inspiration and wrote a Helm chart for my project.
If I were to enumerate, I'd say Okteto helped:
- Spin up development environments in half the time.
- Save over 20% of traditional development time by removing the need to spin up, run and maintain other team members' connected microservice projects locally.
- Decrease review time with the preview environments
In short, I'd say, Okteto shifted things further left. Today's test environments prohibit you from testing until the code has been merged to master. That's too late in the game. However, by testing code before it's merged, you and QA can catch issues and bugs right away - that saves time and money by avoiding building on a shaky foundation and reworking your code down the road. It's as simple as creating a pull request (or merge request) and an environment is generated, and your code is deployed on it.
Greatest challenge so far?
Sometimes, people in Europe are concerned with the security of their codes running on the cloud, especially since there is no EU-based cloud solution.
What should every cloud developer know when it comes to development?
Test everything - I usually enforce 100% test coverage in my projects. If a developer wants to add a feature, they must test it thoroughly. If you set the rules right from the beginning, it's easier to stick to them. Use code formatters and decouple things.
What is your biggest success as a cloud developer?
When I joined AppTec GmbH three years ago, they used SVN and developed in virtual machines; everyone would push to master, etc. So I led a transformation in the work culture to become cloud-ready and future-proof. Now we are using Git, GitLab with CI and CD to merge requests, Dockerized our applications, and use Docker Compose for development and testing (even on the CI), and of course Okteto for our cloud development environment.
If you're a cloud developer/pro with a cool success story to tell, I'd love to interview you. Please contact me at firstname.lastname@example.org