Developing websites is just a small part of what our team get up to. We caught up with a Code Enigma developer in Vienna, on the eve of delivering some important training to the UN, to find out more.
When we talk about Drupal support, we mean so much more than ticket hopping. Read on to discover how real, human connections lead to meaningful support.
I’m sitting in a fashionable bar, nestled beneath a modern, comfortable, reasonably-priced hotel, just outside the centre of Vienna, Austria and a few metro stops from the HQ of the United Nations, our destination tomorrow. I’m sitting with one of the younger members of the Code Enigma team, a Spaniard based in the small town of Albacete, southern Spain, called Salvador Molina-Moreno - Salva for short.
Our purpose here is training a specialist (and secretive) division of the United Nations on some open source software and systems we have configured on their behalf and now manage. Salva is a Drupal developer by trade, but the tools we use in delivering our professional services make us knowledgeable far beyond the realms of just Drupal, and tomorrow he’ll be talking about continuous integration systems, code management workflows and much more besides.
To say I’ve ambushed him would probably be fair. He doesn’t know about the new format of our website, and less expected to be interviewed by one of the directors on his activities for the week on the eve of the first day of the training course, but he takes it in his stride and agrees to let me ask him a few questions over a bottle of Becks, before we hit the Viennese paving in an attempt to find a decent example of the local food.
Q: So, thanks for agreeing to be ambushed. Again! [Full disclosure, Salva stepped up to do this training at the last minute when our head of systems couldn’t make it.] How does it feel to be here in Vienna?
S: It's my first time in Vienna, a really nice opportunity for me and helping [a client] to reach their goals is always a nice way to visit.
Q: If I’d told you when you joined Code Enigma as an intern you’d be training the UN in Vienna, would you have believed me?
S: [laughs] No! I remember when I started. I mentioned I had some experience with OpenAtrium, but I didn't really have any plans to do any work with it. Potential plans, ideas, sure, but no actual plans. But before I knew it, there I was, working on your intranet.
It's amazing how far we've come in such short time. I think when I joined Code Enigma we knew what we were doing, we were always professional, but some of the team weren’t so exposed to professional IT systems. I definitely think we've come a long way, we’ve improved in the way we do pretty much everything, including our training, and I feel I've really grown with that too. There was not much experience [three years ago], but now we’ve done a lot of training and consultancy for other organisations. On-site consultancy is basically training, so I think it counts as training experience, personally. Sometimes a consultancy client will give you an outline and just want approval of their plans from a Drupal expert, in other cases they actually need in-depth technical help. Sometimes they have no idea where to even start, and that, for me, is really training.
Salva joined Code Enigma in 2011 and is now one of our project team leads.
The challenge is not your knowledge - it's being able to simplify to the point you are explaining everything, but at the same time you are explaining as few things as possible
Q: You must be a little daunted, you’re training some of the brightest IT minds in the world tomorrow?
S: A little bit. I'm sometimes nervous they’re going to be better than me, who knows, that might be the case tomorrow. Sometimes I know a customer knows nothing about what I'm teaching, so I don't worry about their knowledge, but I still worry. Then I worry about whether or not what I plan to teach will suit them, I don't want them to be disappointed after my training. In this case I really don’t know the depth of their knowledge of Drupal and their past history, what they’ve been used to in the past, what systems they've used, processes they know. Tomorrow I'm mostly teaching some complex Git workflows. Maybe their Git knowledge is quite basic, in which case I’ll teach them a lot. Maybe they will already understand a lot of what I'm teaching, but still, refreshing it and seeing how other people do it is always good.
Q: Tell me, what’s the nature of the training tomorrow, what are doing here?
S: So I will be initially introducing a few basic concepts about the platform they’ll use from now on, the different parts, what collaborations #AberdeenCloud and Code Enigma are doing, explaining all the utilities provided by us and by #AberdeenCloud, so they understand all the parts of the platform. [UPDATE: we no longer partner with #AberdeenCloud and this system is hosted on our private cloud.] Then I want to make sure they are completely sure of what they have to do if they have problems and be clear on who’s doing what. I think understanding roles and responsibilities is important when you're implementing a new process.
Then I'm introducing the actual workflow patterns they need to use in their day to day to successfully deliver their project. Which will lead to learning new software - mostly Jenkins and Gitlab - so they know their way around it. And everyone knows the responsibilities of everyone else, so things can go as smoothly as possible. I want to get them moving with the platform, using it as smoothly as possible before we leave. I’d also like to get their feedback on how we can improve the workflow they’ll be using, because I'm sure they will have questions and concerns specific to their organisation.
Q: You mentioned Jenkins and Gitlab there. Are they the actual software packages you’re training them to use tomorrow?
S: Yes, mostly, but also there's a command line client from #AberdeenCloud, and their console too. [UPDATE: we no longer partner with #AberdeenCloud and this system is hosted on our private cloud.] And also probably some drush [the command line client for Drupal] commands.
Q: That sounds like a heady mix, how does this all hang together then?
S: Basically #AberdeenCloud would be ultimately putting up the physical power behind the platform, that's the best way to see it. The live environments. [UPDATE: we no longer partner with #AberdeenCloud and this system is hosted on our private cloud.] [Code Enigma] are providing Jenkins and Gitlab to ensure there are strict rules in place to ensure no one has access to parts of the system they shouldn’t have access to.
I should explain, Gitlab is a user interface on top of Git, the version control system, and this is used to ensure people are committing code properly to the repositories they should commit to. For example, with Gitlab we can protect parts of the code and we can make it so developers have to raise a request with a manager to get their changes put in place. And Jenkins is to automate all the processes, such as deployment of changes, which saves a load of time and avoids human error. And it gives developers and administrators easy access to #AberdeenCloud resources they are able to access. We do this because they could get them directly from #AberdeenCloud, but the problem for [the client] is #AberdeenCloud is just too permissive. So we use Jenkins like a bridge between [the client]'s team and #AberdeenCloud, and the features they really need to access for their daily work, so they don't need direct access and we have more control over that. [UPDATE: although we no longer do this with #AberdeenCloud, we are still able to provide similar services on any other platform, such as Acquia or Platform.sh.]
Q: OK, so there’s a PaaS product on one side, which is not a Code Enigma system, but we’re providing a management layer to make that platform more controllable, less permissive?
S: Yep, that’s exactly it. And we’re adding some good workflow practices by showing them Gitlab and how to use it properly.
Code Enigma provides highly secure, managed private cloud hosting.
Q: Sounds very cool. More generally, I know you’ve done your share of training and mentoring for Code Enigma clients before today, what do you think you get out of doing this kind of work?
S: Generally I enjoy training people, it's quite fun. You have to approach things from a different perspective, obviously you are the expert, but you need to simplify things as much as possible to make sure the audience understand what you want them to know. You know how things work perfectly, of course, almost every bit of the solution you are building or the module you are teaching you know very well. But the challenge is not your knowledge - it's being able to simplify to the point you are explaining everything, but at the same time you are explaining as few things as possible, so it’s simple enough for people to grasp enough information for the training to succeed, without getting a total flood of information they cannot retain. Getting that balance right, that is the hard thing.
Q: I agree. Actually that's a nice thing about providing training. One of the things I find, when I break a technical system or some code down for teaching purposes, is I notice things I never noticed before. Do you find that?
S: Oh yes, it happens to me as well. For example, with this training there are some things with Git I know you can do but I've never really used before. But because this workflow we’ve designed is new and I've had to learn it really well to teach it, I’ve learned a lot of new things about this approach and why things are done the way they are done. That's a great thing about training. Even if I know what I’m teaching really well, I almost always learn new things. Indeed, going into great detail for teaching makes you learn new things about the stuff you’re teaching.
Q: When you do this kind of thing, is it something you find is templated, or are training courses very much tailored to the organisation?
S: It depends a lot. In general, when it comes to explaining user interface stuff, like how do you create a user in Drupal - things like that - you can template a lot of it. Or at least it’s something you have done before so it's not time-consuming to prepare. It doesn’t matter if it’s Drupal, Gitlab, Jenkins, whatever. When you explain a user interface, as soon as you’ve done it once it’ll be the same for future training so you can re-use your material.
But technical details, workflows, team structures, these will always be specific for the customer. Even slight changes mean new training, particularly when things seem simple at the outset, but as you get into detail - how a certain customer structures their team, for example - you start to realise that some workflow you sent to one customer is actually not right for another. Maybe the idea you had actually missed some point, but you only notice this when you prepare for the training, so you have to build a completely new workflow just because of one small detail.
I guess you can never re-use consultancy and the same goes for a lot of training, but some user interface things you can.
Q: So training like this is pretty expensive, being genuinely bespoke. How would you justify the cost, as a technical person, a developer, for this kind of knowledge sharing?
S: I think it is for organisations like [the client], when they have nothing in place to delegate responsibility, no proper workflows, having someone like us come in and show them is really money well spent. It’s not like we are making a few small changes here. We are showing them a whole new way of working and that is reflected in the outcome of the Drupal framework and the developer’s productivity, I am sure.
Also, I think it’s worth saying right now they have no workflow in place, so they have no opinion on how to go about it, no real experience of what works and what does not. Like this, by getting training, they get a running start. They get our experience, our opinions, they can try our workflow and see how it fits and then make small changes later if they want. We are not just giving them a workflow, we are also showing them their future path, some techniques, ideas, concepts they can guard so they don’t need to rely on an external company in the future. We are just giving them the first step on the road to developing their own workflows and processes, but having someone point them down the right fork to start with will save them a lot of time and money.
Q: Do you feel at all out of your comfort zone providing this kind of training and consultancy? I guess it’s a bit like performing, you’re nervous at first, but you settle down as you realise you know what you’re doing?
I suppose I was kind of nervous on the first day at [my first consultancy job]. I knew they knew pretty much nothing, so I wasn’t worried about being an expert - I clearly would be. But I was nervous they might expect something I wouldn’t be able to provide. But after some time it was fine, I realised I was able to really help them with anything they asked, so I was able to really get in there and write a whole implementation plan for them, development tasks, I felt really useful, it was great. Ever since then I'm less nervous about training and consultancy.
Q: One last thing, I happen to know your training ends on Thursday evening and your flight home isn’t until Friday evening, so you have a day in Vienna! Any plans to enjoy the city?
S: [laughs] Yeh, I’m going to try and eat as much as possible! I’d love to try all the traditional Austrian food, try to do some sight-seeing as well. I’ve never been here before, but I hear it’s a beautiful city, I’ve seen the photos, so I’m looking forward to seeing as much as possible before I have to catch my plane.
Code Enigma provide hosted Gitlab and Jenkins servers and the training to help you use them professionally and efficiently.
Find out more >>