The Importance Of Software Craftsmanship
Celebrating it's first year in operation, the London Software Craftsmanship Community is a great example of how developers are taking their work seriously, and showing that our industry is maturing at a healthy pace. I met with Sandro Mancuso, co-founder of LSCC and DZone MVB, to find out more about the community, and about the London technology scene.
DZone: Can you introduce yourself to the readers please? What is your background in the software industry?
Sandro Mancuso: My name is Sandro Mancuso, born in Brazil and had my first contact with computer languages when I was 11 years old. Studied Computer Science and got my first job as a developer when I was 19. I worked for small software houses, product companies, start ups but it was in consultancy companies that I spent the majority of my career. As a consultant I had exposure to many different projects, languages, technologies and industries. Currently I live in London and I'm a director at UBS Investment Bank. My main responsibility there is to look after the quality of our systems, working as a hands-on mentor with 10 teams in five different countries.
DZone: What is the London Software Craftsmanship Community?
Sandro Mancuso: LSCC is a community of professional software developers that believe that "how it is done is as important as having it done". LSCC embraces the principles of the Software Craftsmanship movement, promoting self-improvement, knowledge share, professionalism, passion and care. We are a community of software developers that are motivated to be better and raise the bar of our industry.
DZone: What drove you to create this community?
Sandro Mancuso: David Green, the other LSCC's co-founder, and I used to meet regularly to catch up and talk about the projects we were working on and to share ideas about many aspects of software development. Of course that we are far from knowing all and we started discussing that it would be really cool if we had more developers joining our discussions. It would be great to have developers worked with different technologies, in different industries, that means, people with different experiences that we could learn from. I always believed that if I had exposure to people doing different things in different languages and in different ways, I would probably have a better understanding of software development, making me a more well-rounded professional.
I have been very involved with the London Java Community (LJC) even before it was founded so I first spoke to them about the sort of meetings I would like to promote. I also spoke to them about Software Craftsmanship and how passionate I was about the subject. I had a pretty good idea about what I wanted to do and the conclusion was that it wouldn't fit so well in LJC. From this conversation, it was suggested that David and I should go ahead and found our own software craftsmanship community and that we would have all the support from LJC. David and I thought that it would be a great idea so when I got home that night, I went straight to the internet, registered the domain and founded LSCC.
DZone: Is this a one of a kind community, or are there others around the world?
Sandro Mancuso: There are others around the world but not many, as far as I'm aware. There are a few ones in the US, at least one in Spain, there are some guys in Romania also doing some stuff, it seems there is one emerging in Germany (I'll know more very soon since I'll be speaking to them in person), apparently there are two small ones in Belarus and Poland and a reasonably large one in Israel. Probably there are more that I'm not aware of. There is also a global software craftsmanship google group (just a mailing list) that has over 1300 members. So far, the software craftsmanship communities are quite disconnected but we will do our best to change that in the future.
DZone: Is it mostly focussed on Java? Or is it any language?
Sandro Mancuso: LSCC is totally language agnostic and this was always our number one desire. Among our members we have developers working with Java, .Net, Ruby, Scala, Python, Clojure, mobile developers (iPhone & Android), Groovy, Delphi, Perl, PHP, and probably many others I don't remember. However, in terms of percentages, I believe that Java is the most popular language among our members.
The reason that I always wanted this mix is that every language has its own "conventional" ways to solve problems. That means, if you just know one language and just meet developers that work with that language, you become a very limited professional. When talking to other developers and learning how the same problems are solved in different languages, you start seeing the world in a different way. You learn that in some specific scenarios you can do things in a much more efficient way. It opens your mind and frees you from conventions that sometimes we use without even understanding why. Having just a hammer in my tool box will never make me a good developer.
DZone: What do you do when you meet up?
Sandro Mancuso: We have two monthly meetings. The first one, normally in the second week of the month is called Software Craftsmanship Round-table and they are limited to 25 people. We get together and attendees write the topics they want to discuss on the whiteboard. Any thing related to software development is valid. Then we take a vote. The most voted topics are discussed. Sometimes we discuss just one or two topics, sometimes we discuss up to five topics. During the round-table meetings over the year, we had people showing code they were working on, pieces of design and architecture, testing frameworks and had discussions about a huge amount of other topics. We had discussions about how to hire good developers, distributed agile teams, mentors and apprentices, TDD, legacy code, patterns, PaaS comparisons, programming languages, android testing frameworks, the future of web applications, literate programming, DSLs, BDD frameworks, DDD, anti-patterns, functional programming, specific technologies like Hamcrest, JBehave, Spring Roo and many many others that it would be impossible for me to remember. Recently we introduced lightening talks at the beginning of the evening as well. Another important thing, we always have pizzas and drinks sponsored by the hosting company.
This month we ran our first hands-on session, that from now on, will be a regular meeting happening every last week of the month. The idea is that we can practice doing katas or any other type of exercises our members may come up with.
Besides the two monthly meetings, we have other meetings as well. We had presentations, a software craftsmanship panel discussion and we are having our first code retreat on the 10th of September. We also cross-promote events from other communities when we judge our members would be interested. And as a rule, after every meeting, we go to the pub.
DZone: Who else is involved in the community?
Sandro Mancuso: In terms of organising the events and running the community, for now it is just me and David Green. However, as our community is growing, very soon we will need to bring another person or two to give us a hand. Of course that we also have very passionate members that are always contributing with ideas and giving us their support.
DZone: What are the main things you've learnt in the first year of LSCC?
Sandro Mancuso: As a community organiser I learnt a few things. For example, that different members have different expectations and they join the community for different reasons. Some members love meetings like the round tables and others don't. Some feel extremely comfortable and others feel a bit intimidated by it. We also realised that there is a small percentage of the members that never signed up for any meetings. That was a clear indication to us that probably they had a different expectation when they joined. When we ran the hands-on session and also had a look at the people that subscribed to our code retreat, we realised that there were quite a few new faces, I mean, members that never came to a round table meeting before. It's our job as community organisers to understand what our members expect and want from our community and do our best, without compromising our values, to provide it to them. We need to make all our members comfortable to attend any meeting we promote and always keep a healthy and friendly environment.
Another interesting challenge we face is to run events that are totally language agnostic. It's important that we promote events that can be attended by anyone regardless the programming language they use, type of software they develop or level of seniority.
At a more personal level, I learnt a lot about my own limitations as a developer. There were certain things that were discussed in our meetings that I didn't even know they existed. Also, quite a few times, during the discussions, someone raised a point that made me stop and think: "How on Earth I never thought about that? I never saw it that way.". And that's awesome. That's exactly the point of being part of a community. The amount of things that you can learn from others in such a short period of time is absolutely priceless.
DZone: What are your plans for the future?
Sandro Mancuso: For our second year, David and I have a few things in our minds. One of the main things we want to do is to start contributing more towards the Software Craftsmanship movement. There are quite a few things in this front we want to tackle but the main one for now will be to promote ways for mentor and mentees to find each other. We believe that senior developers have the responsibility to prepare the next generation and this is a nice way of doing it. This can also be combined with public recognition, making it easier for companies to recognise who the good professionals are. Another thing that is definitely in our plans is to support new software craftsmanship communities in the UK and Europe. We would like to see more and more communities being created and working together.
In terms of our meetings, we will be keeping our two monthly meetings (round-table and hands-on session) and, like in the first year, a few other meetings like presentations, code retreats, panel discussions, etc.
We definitely want LSCC to grow and see the software craftsmanship principles spread across our industry. But at the same time, we will not compromise the quality of our meetings or our own believes just for the sake of attracting more members. We want quality members. We want passionate developers. Developers that care about what they do and want to be better, regardless of their level of seniority or programming language they work with.
DZone: What is the tech scene like in London at the moment?
Sandro Mancuso: London is absolutely amazing and crazy at the same time. Think in one programming language, or one technology or methodology. Chances are that there will be a community in London for that. Every single day, throughout the whole year, there is always at least one free event organised by a community happening somewhere in central London. It got to a point where some of us, user group leaders and community organisers, decided to start talking to each other regularly so we can synchronise our calendars in order to avoid clashes. Many communities have many members in common. A good example is LSCC and LJC, the London Java Community. Other communities like the London Scala User Group (LSUG) and the Clojure Dojo also share many of their members with each other and with us. We suffer a little bit more because we are not technology specific and that means that almost all our members, including myself and David, are also members of other communities. It's everyone's interest that we organise ourselves so we can all benefit from events of different communities. We never really managed to avoid clashes completely, due to the number of communities and events, but we do our best to minimise the impact of the clash. Also, in the past few years, there was an explosion of communities focused on IT startups and entrepreneurs what makes things even more interesting. In summary, if you are a developer or are looking for good ones, London is the place to be.