Innovation, growth, responsibility

Three Software Development Principles That Guide Our Team

Here at Mooncascade, we’ve been building tech products for over ten years. We were founded by four developers who learned and grew as they went along, and we try to keep that same openness in everything we do today. We like to sum up our approach to work using certain key guiding software development principles covering innovation, self-development, and responsibility.

Of course we understand that finding a great work environment isn’t easy. You might join a company that embraces innovation but can’t keep up with the fast pace. You might find one that has no interest in evolving or keeping things fresh. Or you might just end up somewhere that doesn’t know how to channel your skills into a successful career.

However we also know from experience that software development can be one of the most rewarding lines of work out there, or one of the hardest, most stressful, or even most boring. It all depends on what your employer’s values are, how your company’s daily operations are run, and whether or not your management team knows how to keep its developers happy in the long term. Read on to see what this means for us and why we think the application of our software development principles makes our workplace a great place to grow in.

Mooncascade’s software development principles: Technology, languages, and innovation

We believe it’s important to provide our development team with regular opportunities to work with new technologies. While it’s common for companies building their own products to focus on the same frameworks or languages throughout their lifespan, one of the perks of working with us (and the software development principles we employ) is that we have both a wide variety of requests from clients and an active interest in trying things out. We never want to get stuck where we are and we always try to follow new paths whenever possible.

Before using an unfamiliar programming language with clients, in line with good software development principles and practice, we like to start with an in-house project to test things out without pressure. Last year, we built Vaba Saba, a Tinder for cats, using React Native. At the time, React Native was fairly new and we had heard good things about it, but didn’t have proper experience using it. This project allowed us to see how it worked and what its limitations were. We now have a strong team that’s used React in several client-facing projects, including Bolt’s app for scooters.

Experiments like these aren’t always successful, which is another reason why it’s important to take the time to do them. We recently tried to use Xamarin, for example, but quickly understood that it wasn’t right for our workflow. Then we tried SwiftUI, an iOS update for creating user interfaces, but found that it was still too raw to use in actual production. In other words, we don’t innovate because it’s cool to do so, we innovate when something creates real value for our development team. That’s why we always validate new languages and updates in-house, to avoid creating unnecessary obstacles when client-facing projects come around. 

Mooncascade’s software development principles: Self-development

As another part of our software development principles, we also encourage our developers to try out new roles and responsibilities at an individual level. Anyone is free to grow or move to new positions within the team, and we’re always open to developers specialized in one area to move to another. We’ve had frontend developers move to backend, backend developers move to the mobile team, and mobile developers move to frontend. The only ones who never change are those who land in iOS—there’s something about it that just sucks you in…

We’ve also had team members in development change roles within the company itself, taking on more responsibility as project managers, for example. Some people like the managerial aspect of this kind of work but want to stay active with the technical side of things, and our software development principles do allow us to accommodate such requests. For instance, it’s not uncommon for a developer here to become a technical lead, which gives them the best of both worlds: using their organizational skills without leaving their technical ones behind.

If you’re ambitious, you can even move all the way up within our company. Our CEO Anu Einberg started in QA before shifting to project management, becoming our COO, and finally landing at the head of Mooncascade where she is today.

Self-development is something we’ve prided ourselves on since the beginning. In the early days of our company, there were just a few of us building apps, without any processes, methodologies, or software development principles put in place to guide us. As our projects grew, we had to find a QA team, hire project managers, and learn to shift our roles based on what needed to be accomplished. The same flexibility applies to our mindset today, and we’re always happy to guide our developers with in-house knowledge sharing, tech talks, and new professional opportunities.

Mooncascade’s software development principles: Responsibility and decision-making

So as you can see, Mooncascade has a lot to offer our development team. However there are a few things that we expect from them in return, and these are also incorporated into our software development principles.. We don’t think that anyone should be confined to their role, saying things like “I don’t care, I just code.” Everyone should keep the end product in mind and each team member should take responsibility for the project they’re working on.

This means that communication is key for us – in fact it’s every bit as important as the software development principles we’re talking about today. We use Scrum, so we have regular standups and everyone is aware of what’s going on in any given project. Our motto is: if you have something to say, say it! Don’t keep things to yourself, and remember to be respectful as you share your ideas. We think it’s important for criticism to be constructive whenever proposing changes to each other’s work.

Here’s an example of our software development principles in action. On a recent project, which saw us build a complex web product for a client, the design phase started much earlier than development. Our designers did a great job of coming up with wireframes that the client loved. But as the developers jumped on board, they realized that to make things look exactly as the designers planned would take a huge amount of extra work. They would have to spend most of their time fine-tuning the final 1% of the project to get things right. One of our developers proposed a streamlined version of the design that greatly improved development speed while respecting the designers’ original idea. The client and team were both happy with this and we were able to move forward with an optimized game plan.

Working at Mooncascade: What’s it really like?

If I had to sum up what it’s like working in our development team, I’d say that it comes down to keeping things fresh and functional in the present and open in the future. We’re here to discover new things and grow together, and we’d love to have you along for the ride. Think you’d be a good fit? Get in touch with us today or have a look at some of the open positions in our development team. We look forward to hearing from you!

Have a project on horizon? Let's talk