I’m a software developer - or rather, I should say that I am a ‘Software Crafter’ now! In short, I came to the UK from Poland around five years ago. Before Codurance, I worked at various companies to basically figure out what I wanted to do, and ended up spending a lot of time in the world of Java (having previously worked with PHP and Perl).
The experience of writing in different languages has made me realise that the language isn’t really that important when creating software. It’s the values and mindset that matter most. For instance, some of the core values of Extreme Programming, like simplicity or communication, are far more important than using Java or Scala.
I was lucky enough to work with some great people who ‘pushed’ me in the right direction, not least in helping me to find communities of people who share a similar outlook to me. It’s communities such as the Software Craftsmanship community (LSCC in UK) that have helped to improve my understanding of good practices and methodologies, for example TDD and Agile.
The vibrant people within the software craftsmanship communities around Europe inspire me to develop myself.
The variety of jobs and roles is not easy to capture in few sentences. Put it this way, it’s certainly not what I expected when I joined Codurance!
I actually joined Codurance and my first project was as a PHP developer, back before our main stacks matured around Java, .NET and Node.js. Within a few hours however I was back to Java again (due to a change in the client project), and I haven’t written a single line of production code in PHP.
It was probably the first time when I understood that I needed to be more than just the person who will be able to help them to shape their product by writing the code, but also by helping them improve their processes behind the software. It was a big challenge for someone without any experience in consultancy. Fortunately, all crafters in Codurance help you to develop the skills required to provide the best value for our customers.
After this project, I discovered a new passion :). A passion for DevOps. We were working at a startup company that needed help to create their infrastructure in the cloud. This project was the most challenging project in my career. I had to learn a lot of new technologies and techniques to be able to provide the best value for our customer and to be the expert who can advise. At the same time, this startup hired one of the best people on the market, so together with my colleagues, we worked in the space where knowledge was flying in the air.
"I discovered a new passion … A passion for DevOps"
In the next project, I had to change my role completely. The software creation was our secondary goal. Together with other crafters, we were asked to help people to introduce the good practices like TDD. At the same time we trained the group of former Cobol programmers in Java. We run the study group where we were discovering the standards and libraries hidden behind Java. It was great pleasure to see the progress they made and how much energy they put to be Java developers. Thanks to the openness of our customer for new practices, we were able to organise the boot camp for our study group. During the two weeks of the boot camp, people had a chance to take part in the simulation of the real project. We received a lot of positive reviews but from my perspective we achieve a more important goal. We managed to build the curiosity and willingness to learn.
I’m currently working with another Software Crafter alongside our client's development team to help improve the legacy code. Once again, this project is completely different from the former ones. This team is very experienced in the domain (which is not trivial). Our main goal is to reduce the time required to introduce new features and extend the existing ones by improving the architecture of the application.. The company is not based in the UK which also gives the possibility to discover different cultures and food from other regions of Europe ;).
Where to begin. There’s no ‘typical’ day at Codurance, since every day is different and a lot depends on the project and the roles which we have in that project. What I can do is point out the most important difference between a ‘typical’ day in Codurance and a typical day in my previous companies.
For me, the biggest difference is the sense of community. Regardless of the projects that we’re working on, the support and knowledge sharing in the team is much stronger than it was in my previous jobs.
We also share and learn ideas outside of our normal project times as well. We organise our own internal sessions after working hours. Say for example that you’re interested in the functional programming or you need to develop your skills in a specific language. You will almost always find more people interested in the same topic. You form a group, book a space in the office and start to study the topic. It is the great way to learn new things and share your knowledge with the others.
"For me, it’s the sense of community"
Every two weeks, we also have our catch-ups where we meet together to have fun together. We organise a mini-open conference preceded by lightning talks. This is the space where we discuss anything that we want - nothing is off topic. For example, we recently had a few talks about aeronautics. We also have the chance to socialise with people from different projects (which we cannot meet every day). It is the great opportunity for us to build the team and get know each other.
Every two months we organise a bigger version of our catch-up meetings. It is Codurance Day. We spend the whole day together organising a small version of the Socrates conference. We decide about the topics, we can spend the whole day coding or discuss the topics important for the company.
We don’t define the strict boundaries of being the senior craftsman, but I think the expectations are created by yourself. You define the goals which move you outside your comfort zone.
I moved outside my comfort zones when I had to develop my skills around consultancy and coaching. As the Senior Craftsman, my personal expectations of myself are to understand not just the technical challenges of our customers, but the wider business considerations and goals. It is very important skill which has the crucial meaning when the problem is not trivial or controversial.
"In my opinion, a Senior Craftsman should be able to help others to develop."
In my opinion, a Senior Craftsman should be able to help others to develop. Sharing knowledge allows all of us to develop from each other. Even if you are quite knowledgeable in some area, there is always the space for improvement. Exchanging knowledge also increases our communication skills because you need to explain to people the concepts behind the idea.
I also try to constantly remind myself that my journey is not finished and I need to constantly improve myself in the same way as I improve my software.
Before I moved to the UK, I participated in some conferences where people spoke a lot about TDD and XP practices. When I moved to the UK, I joined the meetups which are focused on the technological side of the software.
I think the trigger which change my perception of the software development was the talks given by Sandro. We were working for the same company (in the separate projects) but he presented some topics about the software architecture to the other teams. Sandro is a very good speaker and the talks were very inspiring.
I think I liked the non-standard way of thinking presented during these talks. I wanted to discover more details of the journey which Sandro had as a craftsman. The willingness of finding the new paths was the main reason to join Codurance.
Giving any advice is difficult. It is always blurred by your own experiences. This makes advising less general and harder to apply to everyone.
The main quality which I can find in every Codurance person is passion. Every member of our team is passionate about something in the computer science. This passion may be for a relatively small thing but it allows us to expand this passion to the other areas.
My advice would be to find something in computer science which gives you a lot of pleasure and start to explore it. I'm pretty sure that soon after that you will find the way to join us.
Robert Firek is a software developer who has tasted many different flavours of programming. His broad range of experiences has helped to deliver quality software in many companies and organisations. He strives to create software according to the rule "Simplicity is the final achievement". As a Waterfall apostate, he encourages people to embrace Agile techniques.
Robert is a member of the London Java Community and Wrocław Java User Group.All author posts
Software is our passion.
We are software craftspeople. We build well-crafted software for our clients, we help developers to get better at their craft through training, coaching and mentoring, and we help companies get better at delivering software.