Software engineering is one of the relatively new courses in Makerere University. As a result, it is still hyped and there is an excitement about it among high school students. Especially those who are techy, geeky or interested in science fiction. Such a hype is good because it increases one’s expectations of the course and can make them love it when they start pursuing it. But there is also this category of students who apply for software engineering because of the fanciness of the name of the course. It’s engineering, you know! This kind of thinking is very problematic and is a source of disappointments for the people who find software engineering not what they made it out to be. It is due to the need to clarify these issues that I have put together five things to know before applying for software engineering.

First and foremost, software engineering is a practical course. This means that you’ll be required to practice what you learn and create real life projects that provide solutions in the real world. Most of these projects are developed by programming. Basically you should be interested in programming. Otherwise, you shall be a tourist, if not a spectator in most of the projects and you will wait for your friends to do the work for you which is not beneficial. This interest should be within you inherently. It’s risky to assume that you’ll develop the interest with time. Instead you can develop hatred for the course. That’s the first step to failure, trust me.

1. Problem based learning.

Software engineering course at Makerere is taught by solving problems that are presented in course works and assignments. The lecturer only touches the introduction of the topic and concept in order to give students the leeway to research further. After a topic is introduced, the students are presented with problems in form of assignments which require them to head to the Internet and look for solutions.

The more you research, the better you understand a concept. I would advise students to solve as many problems as possible and also to do the course works themselves or at least participate and lend a hand. Revision then becomes easy since one has done them practically.

2. Self-driven learning.

Software engineering is one of those courses that when one relies on what the lecturer gives them in class, they may end up wasting all their four years together with the money that accompany them. A student is encouraged to push further, to try to find out more on what has been taught and to discover their interests and focus on them.

What the lecturer gives in class might be enough to give one an A grade, but it surely isn’t enough to make you create anything in the real work environment. You have to make Google your best friend. You need to have a motivation to know a bit more of something even if it might not be examined, but they are these things that will build your curriculum vitae which attracts employees.

Even for the examinable concepts, this principle of self-driven learning applies. For one to excel in this course, you need to read wider, get different explanations from the one the lecturer gives and get real world scenarios of these concepts. This helps you to understand them better, master the concepts and this will allow you to remember them better in an exam. Most of the notes lecturers give are PowerPoint slides which are not well explained. Students are urged to research further in order to better understand them. This can be before the lecture or even after the lecture.

3. You won’t learn hacking.

Most high school students who are interested in software engineering are usually fascinated by the awesome hacking they see in movies and series. Since this is the only course at campus that teaches programming, they imagine that pursuing it, they will be taught how to hack like that and become invincible.

If you’re one of those, not to cut down your expectations, but this is not the case. No one can legally teach you hacking, it’s against the law. Maybe you can teach yourself as a side work after they teach you the principles of programming but you won’t get it in class.

Instead you will be taught methods of how to protect and safeguard your systems from potential hackers. Also this is so basic. If you want to know more, you will have to teach yourself, since all the information you need is available online. This doesn’t make Software engineering insufficient, no. It’s only a Bachelor’s degree course and you can always add on it, say with a Masters in computer security.

Software engineering is an introductory course and it treats all students as very beginners who almost know nothing about computing. Most of the advanced concepts in computing like hacking are not taught. They can be self-taught as hobbies.

4. You should be interested in programming.

All things considered, Software engineering is still about creation of software. And software is created by programming using various programming languages. To be an effective software engineer, you have to be proficient in at least one programming language out of the plethora of languages in existence. Software engineering syllabus allows for the teaching of around four languages. The interesting part is that the really don’t teach them. They only give you the theoretical version; what the various constructs in the language do, how to build simple programs and also the software engineering principles implemented by the language. That is all. Learning how to use the language to create software usable in real life is the responsibility of a student. And for one to embark on such a tedious painful journey of learning a programming language further in order to create something tangible, they really need to have a self-drive that motivates them to keep on pushing on even if things become very tough. They need a desire to learn more, they need to see themselves in future earning a living from these applications they are learning to create. I will repeat again, no one will force you to learn programming, you will need your love and interest in it in order to learn something that will make you near-awesome as those computer geeks we all watch in science fiction and techy movies.

5. Software engineering is not about coding only.

So, after all the hype I have heaped on programming, this is where I tell you that Software engineering is not all about coding or programming if you will. If you are the kind who is not that exhilarated about sitting in front of a computer screen typing, looking for errors and getting stressed and elated when code fails to run or when it does that what you want, respectively, then please don’t think Software engineering is not for you.

This is not a programming course; it is an engineering course. There are various disciplines that constitute engineering of software. There is

  • requirements analysis; which is determining clearly what the software will do
  • software analysis; which is finding out if the software satisfies that what the owners expect it to do and effectively
  • Software design; which is representation of the software operation and interaction of the component on paper to better understand it and enable programmers create the right product
  • Software testing; which is ensuring that the software created does not have errors and can handle all scenarios of the data supplied without breaking down
  • Software deployment; which consists of providing user support and training of users how to use the new  system.
  • Software documentation which is done throughout development of the software so as to record all the activities and why they were done for future reference during the maintenance of the software.

Someone who is not interested in programming can still pursue software engineering and concentrate on any of those disciplines and then later practice them in real life. They are all equally important because without one, a software wouldn’t work efficiently and effectively.

Also even if you are a programming geek, you need to learn and appreciate these other software engineering processes because you can’t avoid them if you are to become a professional software developer. You better appreciate them early because by the end of four years, you’ll have learnt enough of these things. Actually they are more emphasized than coding.

This is what makes a software engineering graduate different from someone who did a crash course about programming from YouTube. You can develop huge high impact critical systems. Also to someone who isn’t into development of software, you can still do software engineering but concentrate on networking. Though this isn’t taught as extensively as software development, but still it gives enough to act as a stepping stone to learn more about networking and survive from it.

In Conclusion,doing a Bachelor of software engineering will expose you to alot of industrial standards in the design of software. It is however the responsibilityof the students to walk out of those gates of that University with a skill in software engineering that is markettable. The title alone "Software Engineer" is useless without the corresponding marketable skills. Good Luck as you embark on that journey of self discovery in Software Engineering.

Compiled By

Allan Muhwezi

Fourth Year Student of Software Engineering at Makerere University