An Inside Look with Codeship: Daniela Sfregola, Independent Tech Consultant
Daniela Sfregola is an independent tech consultant in London, working with early startup companies like Happence. This week, we had the chance to chat with her about when it's time to start your own business, what to look for in a client, and why you really should start writing already.
An Inside Look with Codeship is a regular series providing an insider’s perspective on the tech industry. Each session, we chat with some of the most exciting voices in tech and ask them where they’ve been, where they’re going, and what we could all be doing together. You can read all Inside Look interviews here.
You were a software developer with OVO Energy until early this year — why is now the time to make the change to creating your own IT contracting company?
I’ve been in London for six years, and I’ve learned a lot. So I started contributing to the community, which led to a couple of open source projects, and then to running a blog. And after a while, I realized that that was taking more and more of my time. My own consulting company gives me the freedom and the time to dedicate my time to those things.
I wanted to make a call, I wanted to dedicate more time on these kind of things. So that’s why I decided to make the move. Obviously there is always concern at the beginning, so it took me a little bit of research before the transition. Still, the market in London is really good.
Tell me what your vision is for your career personally. Starting your own company? CTO? Continuing to work independently?
My dream is to have my own project where it doesn’t actually mean having my own company. I've seen that having a CTO role or a C-level role means also talking a lot with people that are not in tech. What I love now is just to mess with my computer. That’s where I want to be.
Obviously in the future if I get bored of this side of my job, I would rethink it, but right now just give me a keyboard and some code to write. I definitely want my own project. My own company, it depends. It depends.
Can you walk me through a typical problem or project you might be contracted to consult on?
My speciality is to write APIs that are scalable and thread-safe. So I focus on building back-end services written in a way that any client from any platform can use them easily without having huge pages of documentation.
Do you have criteria that you’re looking for in your clients?
It’s just one word, "vision." I like to work with people that have a clear idea of where they want to go.
For example, if you talk with a CEO and all you can get from them is that they want to make money -- that to me is like, "Good. Good luck to you.” I like to work on startups that, although they are at the early stages, have a clear view of the product that they want to build. What's the problem that they are trying to solve?
One of the things that usually upset me the most in the corporate world was that you can spend so much time on a project, you put yourself, your mind, your time, and then suddenly they decide to shut it down without a strong motivation for doing so. And you’re like, “Oh, but I spent six months on that!”
So I like to work on projects that at least have a clear vision in them rather than just making money. I’m quite proud of what I build, even though it’s not mine, because I don’t have my own thing yet. So, I love to see what I build to go live and to actually make it out there.
What lessons are you taking with you from the corporate world as you transition into your own consulting business?
I think that will be organization. The fact that sometimes -- although it can be extremely boring -- you need to stop and have meetings, discuss how you want to work, discuss structure. That definitely is needed.
In particular, with startups. Usually the way a startup works is just to build everything, just build everything by next week, right? No requirements, nothing. You just want something by next week. So definitely having a clear structure, again, a clear vision, is important. So, defining these are the features I want. This is the time that we have. These are the resources that we have, and this is how we can fit it all together. Definitely organization and planning.
Have there been any unexpected hurdles so far in running your own shop?
You do think, “Oh, actually, I’m going to work less.” No, it’s not true! You actually work a lot more because obviously, when you work for a company for a long time, like I did for OVO -- I worked for them for three years -- you build a trust relationship. When you do consultancies, you have a lot of companies, and you have to build trust with each of them. Every day you have to give 100 percent.
The other -- not so challenging bit, I would say, it’s the interesting bit -- is that if a company is asking for a consultancy, it’s because they have specific challenges and they expect you to solve them. So you really need to know what you’re doing. Otherwise you’re in trouble.
You always need to be on top of new technologies, and you've got to just start studying and playing with things. Otherwise you’re going to be out of business quite quickly.
You maintain a technical blog as well. Why is that an important investment to you?
It all started because I wanted to force myself to study every week. For the ambitions that I have and for the goals that I have set for myself, I need to be always up to speed with the latest technologies and news. So I said, “It doesn’t matter what you study, but every time you study something new you have to write an article on it.”
Actually, it worked out really well because then the thing evolved, right? It now it is a lot more than that. I think now it's been one year and a half?
Because of my blog, I’ve managed to get in a couple of conferences, I’ve got a lot of contacts from possible clients. It's not just me giving to the community. For example, sometimes it happens that I wrote something that wasn't true. Someone in the community will write me and say, “No, that's not how it works. This is a better solution.”
So I learn, as well, from the community. So that's awesome, right? It's a win-win. I give to the community, and the community gives back to me.
I've been trying to encourage some friends and colleagues of mine to write as well. And most of them either they say they do not have time, or they think, “No, my pen's shy. I don't want to get trolled by the community if I make a mistake.”
I think people are a little bit scared of writing because they are worried of any negative feedback. Once in a while you get negative feedback as well, but thank god, at least for me, most of the feedback is really positive. So it's definitely worth it.
[vimeo 132302923 w=500 h=268]
Daniela Sfregola speaking at Scala Italy 2015
Any tools and/or languages that you prefer working in?
My favorite language at the moment is Scala. These days, I tend to write probably 90 percent of all my code in Scala. It’s also the language that my blog is currently focusing on. It combines the functional programming style together with the object-oriented one, which allows you to shape the code the way you want.
In other languages, usually you start with, “This is the goal I want to achieve.” In Scala, I can do the opposite. I can say, “This is how I would like my code to look.” It’s quite challenging but at the same time quite performant as well in terms of productivity.
Of course, what I’ve seen in the past is that I change my mind quite often. So now it's my language of preference, but obviously who knows what they are going to invent in a couple of months, right? I always like to learn something new. So although that’s my favorite language, I know many more languages and am keen to learn many more. Any language is good.
What’s the most unique technological difficulty you’ve had to figure out?
Integrating libraries that are written in different languages. For example, recently I had to integrate a Java library that is called Liquibase, with Scala, to make sure that when we run tests we actually created a new DB with the schema, all the tables. We needed to make sure that not only is the API working as expected, the data is stored correctly as well.
That was quite challenging because the Java library wasn’t thread-safe. So it was working the first week, and then when we starting more and more writing tests, everything was randomly blowing up. It took me a whole day to fix the thread-safe issue.
The problem is that you assume, “Oh, that’s a library so it will work.” But actually, when you hammer on it, you realize that that’s not always the case. So you need to find the bit inside the library that’s not thread-safe and somehow solve it. So that was quite challenging and miserable. But I learned a lot in one day, so it wasn't so bad.
How do you decide if you’re being successful at whatever you’re attempting?
When something is useful to someone else. If I write an article and then someone sends an email and says, “Hey, thank you. I'm doing a PhD, and I decided to use this technology, and I'm actually using your article as a model to start my project.” That means that it's useful. So, obviously, if everyone reads it, and I get tons of visits, I'm happy as well. But one person is enough. If you help one person, it's enough.
A lot of people are doing self-guided study later in adulthood to get into programming these days. How would you say a college education served you?
I would say that the most important thing that my university gave me was tools. Because I know the basics, and I know the basic principles behind technology in general, I'm able to do research by myself, play with things by myself, and quite quickly learn about new technologies.
I don't think a course or a module or other online resources could give you such a broad view of the technology world. Because, at the end of the day, people are going to invent new things, but the basic principles will be more or less the same. So in my opinion, people that have gone to college tend to be faster in learning new things and probably understand them without huge efforts. It doesn't mean that you have to have a degree to learn in this field. It's just that it's probably going to be easier.
What drew you to a bachelor’s in computer systems engineering?
I've always known that I wanted to do something practical; during my secondary school years, I studied Latin and Greece. It's something that Italians do. So, after spending five years translating books that were written so many years ago and so many people have already translated, I really wanted to do something practical. So that's why at the time I decided to go for computer science.
I’m still happy about it. I think I chose the right path for me. Definitely. I want to do the most practical thing I can do without killing anyone.
What would you have liked someone to tell you when you first dipped your toe into the industry?
I would say it's a magical, magical, magical sector.
You can really create whatever you want. But you need to be always ready to learn from other people. It will never happen that you’ll meet someone, and they won’t teach you something. Even the most junior person will teach you something, even just by asking a question. At minimum, you are going to be forced to clarify the concept in your mind, to let them understand the concept.
This is an amazing job, but the day you think that you are done -- that you know everything -- it's over. You always need to keep studying and playing with things and listening to other people. It's really a machine-focused job, but at the same time it's not. You need to be willing to communicate with people as well.
Thanks, Daniela!
Stay up to date
We'll never share your email address and you can opt out at any time, we promise.