I think the first question I need to answer is: why did I choose Software Engineering? Firstly, let me make something very clear. I had a very hard time trying to make up my mind when I was choosing my specialisation. In fact, I never intended to do Software Engineering, so the story about how I came to this decision is a very long story which I will make a video on later when I get time. For now, here is the short story of how it happened.
Why I Chose Software Engineering
I went into first year assuming I would end up in mechanical or maybe mechatronics. Then in my second semester, I absolutely fell in love with programming. It was when we learned C in ENGGEN 131 (which in my opinion was taught very well). I still remember the first time I compiled my first ever hello world program, and that’s when I started to say to myself “maybe I should seriously consider software as my first choice”. Yes, I know what you’re thinking. “But Zain, people say not to judge a specialisation based off first year courses!” Well in my opinion, this is where it’s okay. If you get that feeling of satisfaction when you program in C, you are most likely going to enjoy programming in other languages too and will want to expand on your knowledge of good software design and practices. This is, by definition, Software Engineering.
There’s just something special about programming – I really get a kick out of it. I find it so rewarding every time I’m trying to come up with some kind of solution or trace a bug and I manage to get a piece of code to work. I liked how easy it was to just create and change things so fast – no need to buy any materials first or send any documents to a manufacturer. It’s enthralling and just makes me want to do more and more. Coding is something I could do for hours and not feel like I’m doing work.
Think of this on a larger scale – how exciting it must be to be building large programs, across multiple platforms, for many clients, for different purposes and industries. It is a really exciting time where major technological advances in software engineering and the “Internet of Things” are changing how we do things every day. Having realised that this kind of stuff interested me, I decided I just had to be a part of it.
Then vs Now
Okay well, here I am, coming toward the end of Semester One. How did it turn out? The answer is, I honestly couldn’t be happier. I was really worried that I was going to regret my decision, big time. But for the first time ever I can honestly and proudly say stuff like “I really enjoy what I am studying” and “I deliberately get up and go to uni early because I like doing what I’m doing and I want to do more”. Like every specialisation, there are upsides and downsides. But the upsides make the downsides worth it. So here are a few thoughts about my first few weeks.
- Software Engineering is hard. I’m not going to lie about it or sugar coat it. Yes, it is quite hard – but Part II in general anyway is quite hard. Do not let a specialisation put you off because how hard it might be. Engineering is just hard anyway – I mean that’s the whole point, it’s about designing good solutions to difficult problems. So no matter what you will choose, you will find it challenging, so choose based on how much you will enjoy the challenge rather than how easy/difficult it is. So what exactly do I find hard about software? Well a lot of the ideas are very abstract, or very complex. It takes a while to get your head around them. It’s not like the old days, where you just turn up to the lecture, sit there and listen, and go home and do the assignment. I spend a lot of my time re-reading slides or notes or assignment problems, because not a lot of things just “click” straight away. Software Engineering is still a very young profession (which in some ways can be good and bad) and so not all the concepts and ideas are as clear cut as some of the older engineering specialisations.
- The cohort is the best cohort I could’ve asked for. Having a smaller cohort really makes a difference! Honestly, no matter how hard things get, the cohort keeps me going. You will see what I mean if I get time to vlog this year. I have met so many amazing and funny people. Everyone is really willing to get along. It’s really incredible how we started off not really knowing each other and now we’re like family. We’re in this together no matter how difficult or stressful it gets. You will often hear me say “softeng is not just a degree, it’s a family”. You will probably get tired of hearing me say this, but it’s true!
- It’s so interesting! No really, even the hardest stuff which I have spent hours trying to understand, has interested me. Particularly in SOFTENG 251 and SOFTENG 250. It really changes the way you think about things and makes you appreciate the beauty and complexity of good software design, efficient algorithms, and good engineering practices in the software industry.
- You have to learn a lot of things by yourself. While the University will teach you what you need to know, no one is going to spoon feed you everything. You will spend a lot of time looking up APIs or documentation or on forums trying to figure out stuff on your own! This is just the nature of programming. The problems you work on are always going to be different and you have to be passionate enough to want to adapt to this and be keen to keep learning all the time. Even once you are working you will probably be learning all the time. If you love what you do, this won’t be a problem at all.
- Everyone in software is really smart, but don’t let this put you off. In the last few years, it has been quite competitive to get into some of the specialisations with less places such as Software Engineering and as a result, most people in software have a high GPA and are quite smart. Don’t let this put you off though, if you’re the kind of person who worries about feeling “not smart enough” around heaps of smart people. Not everything is about having a good GPA. There’s a lot more to it than that, such as how much time you spend on creating your own projects, how passionate you are, how well you can communicate your ideas and how willing you are to learn.
- There just aren’t enough hours in the day to do everything. Most Part II timetables you’ll find are quite full-on, and ours is no exception. This means you really have to get creative with the time you have leftover for assignments and studying. How people use their time varies quite a bit across the cohort, but I find that one thing everyone has in common is that we pretty much are pulling late-nighters every day.
- There’s just so much out there. There really is. So many languages, concepts, ideas, algorithms which I haven’t even heard of. Basically you’re always learning. This doesn’t make this specialisation daunting – it makes it exciting.
Until next time.