As one of Spica’s newest recruits I was lucky enough to chat to Flutter expert and one of Spica’s many brilliant staff members, Senior Software Engineer Lukasz Ciastko. Asking him some questions about his gateway into tech, his role within the company and his various areas of expertise. He shared some great insights into the advantages and drawbacks of working with new technology, the similarities between learning a programming language vs a spoken language and some words of wisdom for those at the early stages of their career in tech.
So first things first, I’d like to get a bit of an insight into your background, how did you end up as a software engineer? It is something that you always planned to go into?
“Yes and no. I actually graduated in Linguistics, I studied English and German, that’s what I did at university. Software development was more of a hobby. I didn’t really want to go into computer science mostly because I don’t really like maths. All of the computer science degrees are based on mathematics or physics, so I didn’t really want to do it. I did linguistics and then I was just playing with my own things and learning along the way. I decided to apply to SPICA and that was my first proper job – my only job in this field so far. I’ve been interested in computers since I was young, so I created my first, sort of like a class website when I was around twelve/thirteen, that was like the first steps in web development. It was always something I was keen on learning and exploring.”
It’s so interesting that you did languages at university as well, do you think there are similarities in learning a programming language versus a spoken language?
“Yeah I think there are quite a lot of similarities actually, there isn’t that much research on this topic but I read something that basically your brain when you are developing software thinks in the same way. It’s the same parts of your brain that are active during writing code as when you are learning a foreign language for example so I think it is quite similar. I think there are two different approaches to software development, the computer science, that centres more on mathematical parts of software development. That is one path you can take but when you want to make applications and develop software that people interact with its more like speaking a language. What you are doing is using a computer language to express something, you are creating and designing something that people will be interacting with. It’s a bit like speaking the language the computer speaks to ask the computer to do something, there are a lot of similarities in my opinion.”
You just mentioned the first thing you ever built, can you tell me a bit more about that?
“It was a website for my class at school, I think I was twelve/thirteen so pretty young. We had a list of pupils and teachers, it was pre GDPR era where you could have these things on the internet. We had pictures and the schedules so what subjects we had on what days.”
Wow, twelve years old is young to be doing something like that, it’s nice you have been coding for such a long time. You said that your first role was with SPICA? When did you start?
“Actually in May it will be five years.”
Can you tell me a little bit about your role?
“Right now, I’m pretty much only focused on mobile applications. We started with the EY MyDay application, that was three years ago. Since then I have been focused on mobile applications. On a daily basis I pretty much do code reviews, I am responsible for the architecture of the app and some tricky bits, if there is something really hard then probably that’s going to be me to develop it. Right now it is more organisational, keeping the structure of the application in place and helping people work towards their tasks, that’s what I’m doing.”
You said that at the moment you are working within mobile app development. What do you enjoy about working within app dev in comparison to the work that you were doing before?
“Previously I was working on GemEx so it’s obviously a much bigger platform, what I like about mobile app development is that it is such a nice, small thing. We design it and can take control of that small space that people use on a daily basis. It’s quite interesting to know that you know you are designing this little app and you have hundreds or thousands of people using it, interacting with it, booking desks and searching for things, that’s pretty exciting, making something out of nothing that people are using daily.”
Did you know that you wanted to go into mobile development?
“I think initially what I really wanted to do was mobile development but when I started looking for work it was in web development. That’s what SPICA was looking for and we weren’t even thinking about mobile development at that time. There was an opportunity and so we started looking into mobile development and I jumped on the project. I really enjoyed it. I think mobile app development was what I always wanted to do.”
I’ve been informed that you are a bit of a guru with Flutter, can you tell me a little bit about Flutter?
“I guess you could say that, we’ve been using Flutter since version one was released so the last three years was pretty much Flutter. Flutter is a framework that Google developed to make User Interface (UI) development on IOS and Android easier so basically its mostly an UI platform to develop interfaces, like a cross platform framework but it focuses on the UI part mostly. You can develop the whole application, but the main focus is the UI. It is very easy to create customisable UI in just very little code and it works on IOS and on Android. We thought that might be a good use for SPICA since we don’t want to really spend too much time developing two applications for android and then another one for IOS. The first project that we did was actually a native IOS application so we created a native application and released that and almost a year after that we had started working on the android version. It was really slow so we decided that we were going to do the android version using Flutter, even though we had a native one. Now with Luna we are pretty much doing everything using Flutter. I think it was really helpful, I wouldn’t like to say it’s the solution for everything but I think for our particular need where we have a lot of UI that we need to share between platforms, I think it works quite well. There are challenges but the challenges are still not as big as if we were to have two teams, one developing an IOS application and one developing an android application. So that is in short, what is Flutter and why we use it.”
How does it compare to native app development, what are the advantages of using Flutter?
“The most obvious benefit is you basically write it once. You write an application and it can run on android, on IOS and it can actually run on the web. There are some adjustments that you need to make if you want to make it more friendly for IOS or more friendly for the web, but out of the box you are getting this. You create one application and it just works everywhere so like with Luna, we have an android version, an IOS version and we do have a web version specifically for Zurich right now so we are using that. This means we can have one person working on a feature and they can develop and test that feature and then it is immediately available on all platforms, we don’t have to redo it for another platform. In the case of Zurich that would mean redoing everything or at least most of the things three times. It would be a lot of work. We spent a few months developing the app with Flutter and if we were to do it three times that’s, say, instead of three months it would be nine months, so we are getting a lot of benefit out of it.”
What do you think the benefits are of working with a new technology?
“It’s a tough question because it is difficult when you take new technology, it is really risky. I think we made a big bet in a way; I think we believed this would be good and so far it has been working out pretty well. In terms of benefits, I think the most obvious one is that you’re learning the latest thing and its always exciting, at least for me there isn’t really anything more frustrating than working with old technology, staying behind can be really annoying. You want to do the latest thing, you want to do the thing that everyone is doing and that’s not always possible. It is also not really something you want to be doing, at least from a company perspective you want to use stable tools that everybody knows but as a developer it is exciting to use the latest things, so that’s the biggest benefit. It is risky but at the same time you know; it is still in development. We’ve got this relationship with Google as well where we can give them feedback and if there are bugs that need to improve, we can talk to them.”
Off the back of that then, are there any negatives with working with a new technology?
“It is risky. There are positives and negatives, you are using the latest tools. Something I should have probably said about using the latest technology is that you actually have some impact on what direction the technology goes because you can give feedback to the developers of that technology. I think that you can have an impact. At the same time there is a price because you are having this impact, it means that something is not working quite right. That’s the worst thing, you have this channel of communicating what is wrong but at the same time it’s because it’s a new technology and you have challenges. It is nice that we have this contact and we can talk to people but that’s one of the biggest disadvantages. You are the first to try things and the likelihood of there being bugs and things not working correctly is really high, that’s the biggest challenge. I think with Flutter it was a pretty safe bet and we saw that google was committed to development and support.”
Yeah totally, I guess if you were using JavaScript or React or some other language / framework that has been around for longer, you would have a lot more information if something went wrong, for example you could check online to see what information is out there. Have you found this to be an issue?
“We have had challenges finding people to work because we have actually had to train everyone. At least at the beginning you wouldn’t get people with five years of experience with Flutter because Flutter hasn’t been around for five years. Everyone you interviewed was new to the technology as well so that was another challenging thing. It is difficult, you try to interview someone and see whether they can actually work with the technology but they’ve just started learning so you can’t really ask them hard questions because they haven’t really had a chance to learn it. You want to help people develop the materials but at the same time there isn’t enough good quality content on how to use this new technology.”
So, talking about new technology, what excites you about the future of tech, what kinds of things would you like to go into in the future?
“The thing that I would like to do is probably to not get involved that much in creating. From my perspective it would be nice to carry on with what I’m doing right now which is kind of just helping people with how to use the technology. I think it’s true for every developer that you start, you do a bit of coding and then you either stay coding or you try to mentor other people or actually try to be a tech guru to teach people how to use technology so I think what really excites me is going into this direction where I can actually help people learn new technologies.”
On the subject of mentoring or guiding people, what kind of advice would you give to someone right at the beginning of their career in tech?
“The more you learn, the more you don’t know. When you start with the development initially you think there’s just a few simple things to learn and then you make apps but the more you know, the less you know. That’s something that people should be aware of, also don’t try to think you know everything. The more you learn there is more to learn. Technology is always changing so the other thing is that it is important to try new things, even if you are working in a specific technology, I would say it’s very important to have your own playground where you can try – make a small side project, a small app, just to experiment with different things so that you are not just focusing on one single thing. Technology is changing all the time. There wasn’t Flutter three years ago, it wasn’t something that people are using, and they are using it today. There were lots of technologies that didn’t exist three or five years ago and they are being used now. It is very important to keep learning and trying new things.
It’s an interesting field, I like to think that you can develop to a certain extent vertically and then you start to develop horizontally. Let me explain it with languages, so let us say vertically you learn a language, say you learn French. You start with the basics and you vertically go to the top right, and then horizontally. Which means you just learnt French and then there is Spanish to the left and German to the right, so you start developing your spectrum and I think with technology it’s the same. It’s very quick to go from bottom to top in this vertical way where you learn a single programming language for example but then you realise to be in the job market you need to know five or six or ten different programming languages, that’s how I see it anyway.”
This interview was conducted as part of a series of blog posts to showcase the talent and expertise within our team at SPICA Technologies. If you found this interesting, please keep your eyes peeled for future blog posts. Thank you to Lukasz Ciastko for giving his time to participate in this interview.