What we do and how in Monospace Labs

A short informal introductory note

KOstas Hatzis
Published in
7 min readJun 14, 2017

--

We’re a small team in Athens, Greece that makes software. Good software. Others say, great software! We have realized that we are doing something very well because our customers are happy, and they refer other people to us. They tell them that we’re a pain in the ass but also that we know what we’re doing. We know our shit. Their customers are happy, and everyone is glad to use what we’ve made.

We create software for startups. We make big applications, like CRM combined with CMS and a whole administration system. We make software for hardware, and we also make simple, user-friendly and good looking websites. We continuously try different and innovative technologies, and we take risks to implement things in a new way.

We certainly don’t have the illusion of perfection. But every day, we try hard, and we give our best to deliver good stuff that everyone will be happy to use because it will make their life better. Yes! Really. It will make their life better.

Team

Recently I read an excellent post from Christina Wodtke. She so eloquently describes the five different team groups, and this made me curious to see in which category our group belongs.

She starts with the Workgroups. Well, I’m the product manager, but we’re not a group of individuals that work separately. I feel myself equal when we’re developing and implementing things. And all others don’t feel separate people. This is for sure.

The next group category is the “Team,” as the evolution of a workgroup. In these groups, there is a hierarchy that wastes time, money and …brain. If a design asset is missing from a frontend developer, she goes to the supervisor and asking for it and not directly to the fellow designer and say: “Yo! Where is the .svg that you’ve drawn on the mock up? Give it to me”. Dysfunctional? Absolutely. Do we belong in such category? Nope!

But after “Teams” there is another gathering named: Collectives! Christina describes it like:

“In what I’m calling a collective, you see shared decision making and shared responsibility for goals. All members have a clear vision for what they want their results to be, and they both help each other and hold each other responsible their peers.”

Wow! We’re working like that. Probably this is our team. We’re not only a team performing as a collective, but we’re also working together to become better every day.

And this is the next step: the Learning Team. Yes, we certainly belong to this one. We have a new presentation in a roll every week with something we’ve discovered, continuously share posts, technologies, and knowledge and we don’t hide anything from each other. Yes, we are here.

The last group of people is the Mindful Team. This team group:

not only takes care of the team’s growth and learning but in each individual’s. They care about each other as people as well as colleagues.

Well… I believe we’re approaching this. But nobody knows if we ever make it. Not all the people working in Monospace Labs are into caring about each other’s growth, but because of an incident we experienced -one of our developers got killed with his motorbike last year- a unique form of interest conjured up between some of them. Particularly in those who have experienced the incident, working in that time.

I believe that we, in Monospace Labs, have the most advanced ingredients to reach the top of teamwork in a more sophisticated way. Our company fully supports this way of working and the team admires this a lot. We keep walking.

Christina has drawn all these groups in a pyramid scheme. I think of it exactly the opposite! I think of it like a funnel that eventually gets you the best human resources and the best possible collaboration between them. Refining, inventing and building every day to reach your desired goal.

Technology

Recently Duke, one of our backend developers, slacks me a video to watch. It was awesome and quite descriptive about all the new tech stuff around. A must-know web development tech as its title states. In fact, this video was the trigger for writing this first introductory post about us. I’ve seen in this so many applications and technologies we use every day that it was inevitable not to write about the way we work.

We don’t hesitate to try new things. On the contrary, we dive into the deep waters and swim. And we like it! It’s refreshing, and we become stronger.

Let me now, describe all the tools we use and how.

Let me start with design. CC of Adobe is our basic tool for designing. We use Adobe XD for our interactive experiences. We try to have a coherence and complicity between design and front-end development with continues iterations and interventions. We believe that these two aren’t separate things in the web design visual process. We have a lot of UX corrections and a continuous rearrangement of the assets.

We can start from the front-end. We couldn’t miss saying that we use CSS and HTML, of course. We go more with Twitter Bootstrap than Foundation framework and always playing responsively. At all times we use Sass as CSS preprocessor.

But the big change these last two years came in Javascript world. We’ve introduced in our lives the front-end build tools like GulpJS. Gulp is a task manager for automating time-consuming tasks in our development workflow. It takes a lot of resources, but it became necessary, and now we all use it.

The big change though came in the Javascript frameworks. We ended up to write many thousands of lines of Javascript, and inevitably we needed a tool. When we decided to use a Javascript framework, React wasn’t then in the top of the heap. We chose AngularJS. The Google devs that made up this MVW Javascript framework say:

AngularJS lets you extend HTML vocabulary for your application. The resulting environment is extraordinarily expressive, readable, and quick to develop.

We adopt Angular in several projects, and we still do. It helped us big time to make extraordinary front-end experiences and had our code in order.

After some time we start looking for other tools and start comparing them. We’ve tried VueJS that it proved to be more simple and minimal than Angular, but at the end, we were not satisfied.

After massive Angular 1 shift to Angular 2, we were not that happy, and we get to search another similar tool. Until one day we’ve seen the light! Well, maybe I’m exaggerating a little, but the day we’ve tried ReactJS was a breakthrough. It was the painless way to make interactive UIs. It was what we were looking for. After some little time we played with React Native too for all our mobile apps, and now we have the same code base for the whole project! Of course, we use it with all other apps that come with like Flux to help us in architecture or Redux for consistent writing. We believe that this is the future and we’re on it.

In the backend now, we primarily write in PHP with the Laravel framework. Now we started a project using the awesome NodeJS with its Express framework. Yes, of course, we’ve made a project with C# and other with some Java, but now we’re in the scripting languages, and we stay there.

Probably here I have to mention that we use a bunch of things in our backend. We use Unit testing, all applications we make, expose and consume RESTful APIs, have used OAUTH2 sometimes but we moved to JWT and we are going to stay there, we’ve used websockets, and various ORMs.

Regarding databases, we certainly go with a relational database like MySQL. We often use Redis for sessions and caching. We also know how to use server caching in Apache, and we use it a lot. We use MongoDB for more documented data, sometimes in the same application with MySQL. Now because of a project’s need we shoot for a database warehouse for more complex and demanding queries. When we need a search engine, we go with Elasticsearch. We’ve tried to use the whole Elastic Stack -ELK Stack for reports- but with no luck. Yet.

I couldn’t avoid to exposing how we work in the DevOps part.

We had most of our stuff in AWS for many years. But then I met in person couple of fellows from this cool company, Digital Ocean, a beautiful start up back then, we moved all our infrastructure there. Until a hacking incident happened, a couple of years ago, and they closed our dev server down. Locked. No questions asked! We couldn’t get in for a day. It was the reason to move back in AWS for good. And I don’t think that we’re going to move out soon. They are very reliable, and when you get used to it, it’s hard to switch.

We use Linux, but in these days we explore Docker. We are not sure yet if we finally use it. Also, we move to Jenkins for CI. We’ll try SemaphoreCI too, but from a prior experience, I’m pretty confident that we finally go with Jenkins.

Conclusion

As a software house, we’re on the edge of technology using the latest tools. As a team, we belong in the Learning Team group that we learn from each other constantly every day.

It’s about time to make our products, and test our strengths and weaknesses.

We will. Soon. Stay tuned in our Pub. Let’s have some …beer now.

--

--