Life as a Software Engineer with Nick Tsim.
Nick Tsim is one of our Senior Software Engineers at Hive IT and it was a pleasure to welcome him onto the Make Things Better Podcast.
- Nick Tsim
- 24 mins
Tom: Hello and welcome to Episode Six of the Make Things Better podcast. Today, I have Nick Tsim on the podcast to talk to us a little bit about software engineering. My first question for you, Nick, is can you tell us a little bit about your background and how you went from graduating with a chemistry degree to working as a senior software engineer at Hive IT?
Nick: Yeah. That’s a bit of a long story I suppose, but yeah I used to quite enjoy working with computers when I was younger, but I never really crossed over into like being a proper programmer or anything. But in my final year of university, I was doing a project involving computers and like that just kind of piqued my interest a little bit. At the time, it wasn’t any serious programming, it was just really basic scripts and things. But, yeah it kind of made me want to explore the whole like area of programming a lot more. So it kind of went from there really, it took about four or five months for me to kind of transition from doing chemistry at university to actually getting my first grad scheme job, I suppose. Well, it wasn’t like a proper grad scheme job, but it was at a little company in Sheffield called Switchstance. Yeah, that was a really, a really good opportunity for me, because it helped me get my foot in the door and it’s just snowballed from there ever since really and it’s been about 6 years now, which is a pretty long time.
Tom: Sure. So throughout your degree, did you ever think that you’d end up going into software engineering?
Nick: Hmm, no I didn’t. It was like a really last moment decision because I was a bit umming and ahing about doing Chemistry professionally for a while. Then I just ended up thinking, I’m not feeling this. I realised I don’t feel passionate enough about this to do it professionally so I moved into programming, because if you work with computers all day long you start to get interested in ‘how do people actually make this work?’ That was my main motivation I think.
Tom: Yeah. It’s an interesting question. It is funny how we use so much technology and the majority of us don’t really understand what’s gone into make it actually work and program? I do find that fascinating myself.
Nick: Exactly. Once you’ve kind of pulled the curtain back a little bit, it’s not as glamorous as you might think it is, there’s not nearly as much, you know, like what you see in films there’s just lines of code on monitors all flashing by. It’s just nothing like that. It’s very, it’s very, um, boring in comparison.
Tom: Aw I’m sure it’s not boring.
Nick: Yeah, well you know, I find it quite interesting.
Tom: What do you specifically like about being a software engineer?
Nick: Yeah, for me, it’s all about the puzzle solving aspect of a thing. So yeah, every day there’s usually something like new, slightly different about the kind of problems you’re encountering and being able to solve them in kind of progressively more elegant ways is like kind of what I’m really most interested in I suppose. So when you start off as a beginner, you’re usually doing things quite simple, like they get the job done, but they don’t really solve the problem elegantly. But then, as you learn more and more, you kind of start applying new techniques and new solutions to your problems until you kind of get to this kind of end point, basically. And that’s like part of the thing that keeps me coming back to code every day is just like being able to approach problems in different ways. And then there’s also just like the aspect of it when you actually build something, you can actually see it working, you know, like you’ve made a thing, you can look at it and be like, ‘oh yeah, I made that, you know, and that’s really quite cool isn’t it, you know?’
Tom: Yeah that is really cool. What is your favourite project that you’ve worked on with Hive IT or any other company?
Nick: Yeah. So, I’d probably say our current projects with the Department of Education. We’re working on the Explore Education Statistics platform, which is pretty cool. We, at Hive, kind of have full ownership over the project, so it allows us to actually be able to call the shots on what we kind of do with it. And yeah, the team’s just really great. We have like one of the best product owners I’ve ever worked with, shout out to Laura if she ever listens to this. The project is just quite interesting as well because we’re solving kind of data problems. There’s quite a lot of data that the DFE wants to get out there for people to kind of analyze and look at, but previously they didn’t really have a good way of doing that. So, a lot of it was just like putting, you know, big bundles of data in like a CSV format onto like a page and someone would have to download it and open the potentially massive files in Excel and then look through that. But now we’ve kind of created this platform where users can actually go into the data and like immediately see how it all kind of fits together rather than kind of having to figure out what all of this raw data is supposed to do. Yeah I think it’s a lot better, I would say, but you know, there’s still a lot of things that we need to do and yeah, there’s a lot of work to be done.
Tom: It sounds like an absolutely massive project though. Like the amounts of data involved, it just sounds vast. How do you like go about tackling that? Like, what was the starting place for approaching and trying to find a solution to that problem?
Nick: Well, I didn’t directly do a lot of all the initial work on that stuff. We have a really good team and we kind of like have like backend engineers and front end engineers. At the time I was doing mostly front end stuff, but I was semi involved in kind of the backend stuff as well. We went through a bunch of iterations, shall we say, to try and get it to work. It wasn’t like a straightforward ‘yeah, we know exactly what to do’. The problem is it’s about standardization of the data. Because the DFE has all these different departments within the DFE and they themselves create different sets of data that previously looked quite different. And this isn’t just us either, the DFE themselves are working hard to kind of standardize their data so that when it comes into our platform, it’s already gone through an entire pipeline to try and clean it up and get it into the format that works within our platform, basically. So yeah, this is quite a big effort across like two organizations essentially, you know. But yeah it’s been pretty rewarding because if you use the tool, it does actually work fairly well.
Tom: Yeah I saw a talk about it a few years ago, maybe on Sheffield Digital’s YouTube channel. Just like seeing the difference was quite satisfying, I’d say. Yeah, it does look like it’s improved quite a lot and obviously that can be extremely useful. So in your job, how much of your day do you think you spend actually writing code?
Nick: Yeah, so it depends really, most of the time I wouldn’t say I actually spend, like, people might have this kind of assumption, that coders are like constantly just like on their keyboards hammering out code, like looking like the matrix or something, you know what I mean? It’s really not that. And a lot of it, I would say is actually reading and just purely understanding like what you’re actually writing, but also like what other people have written. So like a lot of this work we do at Hive is actually just like reviewing each other’s code. So like, this is all part of the code review process basically. And that bit does take up a fairly significant amount of time, but it’s quite good. Cause we can kind of like make each other’s code better and, you know, we’re kind of always like keeping on top of the kind of the code as a whole, rather than like thinking I have this like one thing I need to deliver and I’m just going to ignore everyone else whilst I’m just getting that done. That’s like not how it really works. And if you want to like run an efficient team, you want to like, be able to actually have that kind of redundancy and have people know about everything rather than like people that just like try and get their single part of the system done. So yeah, I would say it’s about 30% coding 40% like reading, understanding, and then it like 30% for like communicating and, you know, talking to the people on the team and you know, all the other stuff that you have to do in your job that isn’t like actually producing.
Tom: Yeah. Sure, sure. That make sense. Does different people’s working styles impact on how you get on with people? Because is there some people who may be more sensitive to owning their own code and then you’re all writing and reading each other’s code? How does that really work?
Nick: Oh, this is a tricky question, I think like for sure, there are certainly personalities in the industry, you can see it on Twitter as well. And like, across the industry as a whole, like, you know, this is definitely something that like, people can get a bit precious about, because you know if you create something you do feel like it’s your baby. It’s hard to take criticism sometimes about it, but, you know, it’s natural to feel that way, but I think like gradually the more that you do code and the more that you do communicate with other people about code the less attached you start to feel about it. I don’t know if there’s an easy way for people to feel that less. But, you know, I would say that just participating in the whole life kind of code review process and like kind of, all like checking each other’s code and just trying to be open to people’s suggestions about things is like the main way of doing it. Obviously there’s the feedback itself as well. I’m guilty of it just as much as anyone else, but sometimes you might write something that’s just a little bit too blunt, or like, you know, you put it in the wrong way. And so someone might take it in the wrong way. Most of the time for me, I’m trying to like suggest, you know, changes that are like, you know, you could do this, or you could…You know, this might make it better? But I’m not trying to tell you directly, not most of the time, anyway, sometimes I’m like, you know, you need to, you do need to change this as this isn’t going to fly. So yeah, it’s just like kind of getting that kind of balance really. You know, it’s people’s feelings after all and it’s just like good communication isn’t it? Like, you know, you’re not trying to like make someone feel bad, well most people aren’t trying to make people feel bad when they’re just like doing code reviews.
Tom: Yeah, sure. That makes sense. What skills and perhaps character traits do you think are useful as a software engineer? Yeah, so I would say there’s probably a few things here. I’d say one of the main things would be that you want to be asking for help quite a lot. Like, especially when you’re first starting out, like you really can’t be afraid of asking for help. And that, that could be through like so many different means nowadays. Cause like now we’ve got massive social media networks that have people who are willing to give up their time, like for basically free. Like if you ask for it and like, you know, you can do that really easily. Like you can go on Twitter, you can go on Reddit. You can go on… Well, I mean, probably don’t go on hacker news, but, yeah, there’s like a whole, bunch of communities you can ask for help in and yeah, that’d be a good place to start. I’d also think about like, you know, just having that kind of like graft mentality, I suppose. Especially when you’re first starting out because like there’s so much stuff you just don’t understand. Like, I remember it really vividly just like looking at code back in the day. Like, I’d just be like, ‘I don’t understand. I’m so confused. I’m just losing my mind here. Just trying to understand this stuff.’ And then like, there’s just a moment at one point after you’ve done it long enough where it just clicks and you’re like ‘I know exactly what’s happening now.’ It just clicks and everything just kind of falls into place. But the problem is like, kind of getting those building blocks in your experience so that you can actually work your way up to that point. It can feel like a bit of a gap, a bit of a chasm I suppose. Which yeah, it can be quite difficult for people coming in because it could be a little bit like de-motivating for people, but, you know, if you push through that pain and just like, kind of ignore all of the complexity as much as possible, and just try and say ‘I want to do one thing. How can I do it in the most simple way possible?’ And you just keep doing that again and again, until you can gradually build more and more complicated things, I think is the main thing.
Tom: So you have like building blocks and you’re just building up those blocks over time and then you have that skill and then you can use that in the future and you just keep on learning continuously.
Nick: Exactly, exactly. If you get actual paid work and you’re actually working at a company it really helps if you have seniors that are willing to help you out as well. That really really accelerates your growth because there’s only so much you can do when you’re doing it on a voluntary basis. If you’re doing it because it’s your job and there’s other people who’s job it is to help you, then your growth goes through the roof. From my experience, if you can get some freelance work earlier on, it doesn’t have to be complicated stuff, but just working with other people who are also coding is going to help you a lot. Just to have that feedback process. I guess that’s partly why people may still think that going to university for programming is a good idea because you’ll be in that environment where people are all doing the same thing and that may be true. But there isn’t any reason why you couldn’t do it outside of university because if you go out there and look for people for help then you will find them.
Tom: Yeah sure, I guess you can teach yourself a lot of things as well right?
Nick: Yeah 100%. For me, it felt like there wasn’t a lot of resources at the time, but maybe that’s because I didn’t know where to look. Nowadays, there’s so much material just on YouTube itself now. You could easily learn code to a decent level just by using YouTube. There are also sites like freecodecamp I think, they just like publish entire courses for free. You can get into coding for very little money basically. The barrier to entry is very low now. It’s just the kind of learning process which a lot of people have to stick with. Not everyone’s cut out for it I guess. If you do stick with it then ultimately it is quite a rewarding journey, well from my personal experience. I’m not going to say that everyone feels the same way about it.
Tom: So, you mentioned there that there are some character traits that people may have and that you may need to be a bit disciplined at times. How do you find concentrating on code? Because it seems to me like it’s the type of work where you could really get into it and get lots of deep work where you almost don’t want to leave it, because there’s a problem there and a possible solution and you want to find it. I don’t know, with other jobs I’ve had in the past, you’re going to get distractions. So, as a coder how important is concentration and focus?
Nick: I’d say it’s really important and I’d say I’m dealing with this kind of problem right now. It’s one of these problems which I’ve not had to deal with for quite a while. As a lot of complexity reveals itself throughout the problem, what looks fairly simple on the surface can result in you falling into a cave of complexity where you’re trying to swim to get out. It can be a bit of a struggle and having distractions can break your flow a little bit. I think it is a bit of a struggle. For other people, they can be affected quite a lot by it. It’s in popular culture but people kind of know it as getting into the zone. Yeah, you have a kind of stereotype of coders of once they’re in the zone and they’re in flow and you break them out of it then they’re going to be really annoyed. It’s not the case for everyone but yeah you do see it with some people when you disturb them when they’re in the middle of something really important. I’ve felt like that sometimes when I am so close to completing something and then I have a 3-hour meeting and it’s like this is going to disturb my thought-process. But you have to be kind of okay with it because your job isn’t just code, it’s working with a team most of the time. You have to be able to communicate and multi-task as there’s other problems going on. You have to be able to do some context-switching, especially at Hive because we have a lot of projects going on. Context-switching is common here. You might not get that at another company where they’re just producing a single-product. I do find the variety of work keeps me quite interested as well.
Tom: Yeah there is a range of projects at Hive isn’t there. And then we have stand-up as well. Every day at 2pm we see each other and we share what we’ve been getting up to. It can be nice to take a break from your work but on other days it can be distracting. But of course it’s not compulsory. Talking about Hive IT, what do you like about working at Hive in particular?
Nick: I’d say it’s mostly about the relaxed environment because everyone is so chilled out and so friendly. I know a lot of people at other companies do say that but at Hive, everyone kind of works as one big family. I think everyone really gets on. I think we all kind of get each other and I think it really shows because staff turnover is so low at Hive. We rarely lose people. It’s a really good work environment but for me, as I mentioned earlier, the variety of work I really enjoy. Being able to just do different things because I think that I do like working on single-projects but sometimes you do want to just do something else every now and then. If you are working on a single-project for years and years it can get a bit dull. Some people would be fine with that, but for me I like to have some variety. I also like the type of work we do. We do a lot of charity sector work as well and that’s really good because it’s good that we’re doing our little bit. That’s a nice part about Hive as you don’t see it at every company so it’s good that we’re doing that. It gives you that sense of satisfaction in your work that you’re actually helping people and you’re helping your clients. Everyone’s winning from the situation is the nice thing about it.
Tom: Yeah it does always feel like it’s always a win-win situation for everyone involved and we build nice relationships with our clients. And you can see that the work is helping society and having a positive impact which is what we’re all about at Hive. On that topic, what would you say people can do to make things a bit better in the world? This is my cliche question now that I’ll be asking everyone. But yeah in your opinion what can people do to make things better in the world?
Nick: Well, if we are talking about tech and coding. I guess it would be good if people took a bit more time to do things for non-profits and charities, like try and offer non-profit plans if they’re offering a product or taking a pro-burner at work if they work in contract work or whatever. Just trying to help out your fellow humans, do a bit better in the world you know, it’s a fairly straightforward thing but it does get missed out by quite a lot of places. Especially, with some companies where there profit margins are actually humongous… it’s like they should be doing a bit more to help people out. I’m not going to name any names but you know.
Tom: Yeah that’s a great answer. What I like about asking this question is that everyone seems to bring something unique to them and that’s really cool. I feel like everyone’s trying to make the world a bit better, well on this podcast anyway. I’m not going to be getting on bad people. It’s really interesting to hear everyone’s thoughts on that. Thanks for coming on, you’ve been an awesome guest, I’ve learnt a lot so thanks for that.Thanks to everyone reading and I hope you have a great rest of your day.
Subscribe and keep up to date.
Each episode is available to stream from: