Yes, surprisingly this is what we are doing. SoftwareMill is a group of passionate engineers sitting in front of their computers, creating software on a daily basis.
This is not the easiest thing in the world you could do. And it is even harder when you are aiming for the software which is, frankly speaking, a good one.
What do I mean by this? This is not just a working application having no bugs but one that is easy and cheap to maintain and extend as well.
We achieve this by applying the most suitable techniques, methodologies and tools for a given project. The ones helping us to achieve the best possible quality. While a project-specific set of tools depends on actual client’s needs, we have some used more often than others.
The code must be, as much as possible, easy to read and understand. This, in the long term, significantly reduces the cost of maintaining it.
The fundamental thing in our coding is clean code. The code must be, as much as possible, easy to read and understand. This, in the long term, significantly reduces the cost of maintaining it. Frequent code reviews are extremely helpful in achieving this. In fact, we think this is so important that we even have created a great, open-source tool to manage them, i.e. Codebrag. You can use it for free, so… try it!
Moreover, a well-written code is backed up by a good amount of tests and we are writing them as well. Test-Driven Development technique is invaluable here and we have it in our toolbelt too.
What IDE are we using? The most common one in SoftwareMill is Intellij IDEA, which is really great. However, we are advocates of using the right tool for the job. So there are different editors used by us (like Vim, Emacs, Atom, Intellij Webstorm, Visual Studio Code).
Although we work remotely, we practice pair programming as well. Applications like Screenhero give us all what we need for this. If an interaction with code of other teammates is not needed, join.me is a good option for, as I like to call it, remote problem solving.
Instant voice communication is the basic tool in projects to contact within the team. For this purpose, TeamSpeak works really well. You can find a bunch of useful tips for using it in Six steps to improve your remote communication with TeamSpeak. The application is also great if you would like to change your teammates into… rubber ducks. Yup, I have tried this few times already and it did the trick.
For instant messaging we are using Slack, a fantastic application indeed. It really suits our organizational philosophy and, with all kinds of useful features provided, works just great.
Would this be sufficient for us to stop right here, focused on writing really good code and on our own toolbox? Well, no. There is something more.
While we are coding, we gather more and more experience. Keeping it just for ourselves would mean that we lost great opportunities to get feedback from other people.
In SoftwareMill, we do care about our profession. By leaving our own comfort zone, we create an opportunity to learn different points of view. This gives us a chance to confront our experience and ideas with the ones other people have. Thanks to this, we are broadening our horizons while sharing our knowledge. Thus we practice this internally, in our company, and outside as well.
Let’s start with what do internally. The first one, which I mentioned above already, is pair programming or problem solving with assistance of others. This is where we gain experience on a daily basis. Such situations spark fruitful discussions and end with better solutions in code.
Next, there are technical channels on our Slack, for dedicated subjects like a specific programming language or a problem domain. This way we have channels where people interested in a given topic can discuss, learn and share ideas.
Reading club with discussions is a powerful way to share our thoughts and observations made while reading.
The third is our reading club with discussions about a book or an article chosen recently to be read. This is a powerful way to share our thoughts and observations made while reading. Quite often we are pointing out things others did not thought about. Recently, we have read about functionalprogramming, reactiveprogramming, machine learning and typechecks in Scala.
Next, the fourth channel is the Friday Market institution. Here, we run our internal presentations on Friday afternoons about topics we are interested in. It looks like a standard presentation on a meetup or a conference with the difference that presenter shares own computer screen (through tools like join.me) so we can see slides or code. All participants are “sitting” in the same room in TeamSpeak and it is easy to ask questions during the event.
What about going outside the company? There are couple of ways we are doing this.
First of all, there are blog posts. Every post is a possibility to present an interesting story. Last year we have published 43 posts on SoftwareMill blog. Moreover, many of our developers are active bloggers as well.
As software enthusiasts, we have a curiosity that drives us to check new things and validate our ideas in various projects. This is why we are engaged in the open source community. Here you can check projects we are engaged with.
There are meetups and conferences. Both are a great opportunity to meet interesting people and confront own ideas and experiences.
In the previous year, a significant part of our team was presenting interesting topics in many places. We have visited numerous cities in Poland and many countries all over the world (Slovenia, Lithuania, Czech Republic, Australia, USA, Serbia, UK, Norway and Germany).
You can meet us speaking on various conferences quite a lot.
We also organise Scalar conference in Warsaw. It is the largest Scala conference in Central Europe where the best developers share ideas and discover new trends in Scala world. This year it will be held for the fourth time, on April 7th. The previous editions were really successful and the number of people willing to attend them was higher than the number of seats available.
Thanks to such activity, going outside to others, we avoid stagnation. SoftwareMill has a dynamic team and is open to new ideas and possibilities. The company does not stop on things that are well-known.
Here is the crucial thing for our clients. All of this above would actually be worthless, if we had no ideas and tested ways to cooperate with them. So, what can you, as our client, expect from running a project with SoftwareMill?
The fundamental piece is communication. While this is nothing surprising, with no effective communication there cannot be a successful project. This is why treat this topic very seriously. Since we are working remotely, we developed effective channels of being in touch with other team members. Such experience is invaluable in our projects as well.
We strive for regular calls. These are moments when we can present recent updates of a project and receive feedback from clients. We can discuss next steps and features to be implemented.
Our projects are managed with Agile methodologies adjusted to specific context. This translates to project team’s daily stand-ups and constant progress monitoring.
When it comes to tools supporting projects, we have no fixed setup. We are… agile. If a client has some preferences, we adjust to them. If not, we propose the ones working well. The most popular communication tools, used by us, are appear.in, Skype and Google Hangouts. Task management is done usually with applications like Trello or JIRA.
We listen to our clients’ needs and, with a good understanding of a project domain, propose suitable solutions.
And the last thing at the end. It is noteworthy that we actively participate in projects. We listen to our clients’ needs and, with a good understanding of a project domain, propose suitable solutions. We point what should be implemented later on when project gains momentum. This is especially important in startups when budget is often tight and should be spent on the most important functionalities. Moreover, based on our experience, we are not afraid of indicating features or ideas that will probably not work.
This is what you can expect from us. We, software development enthusiasts, bring our expertise and engagement to your projects. And we are proud of what we are doing.
This is SoftwareMill. This is how we work. With passion. For your success.