Introduction
Software Engineering is very relevant in today's world. The demand for software engineers has been rising with no sign of stopping. The need for Software Engineers will grow by 21% in 2028. Over 400% of the average projected growth rate for all occupations (5%).
You might want to ask why the demand for software engineers is so high;
companies are quickly adopting digital technologies to optimize performance with projects increasing in complexity. Companies typically hire several engineers to deliver exceptional results for internal and external customers.
MyJobMag South Africa, the publisher of the top jobs in South Africa, reached out to several Software Engineers in South Africa. The aim is to help aspiring Software Engineers know the necessary skills required to secure a Software Engineering job and eventually become successful on the job.
For conciseness, the Software Engineers shared insights in response to these two (2) questions. And they are as follows below;
1. What advice would you give to an aspiring software engineer without a computer science/ engineering background?
2. Give us an insight into what your work-day looks like and your most frequently used tools
In no particular order, we detailed the responses received below. Each piece of advice also carries the name, job position, company, LinkedIn Profile, and the image of the Software Engineer. They are as thus as follow;
1. Mandlenkosi Shezi
Software Engineer
Bridge Labs
1. What advice would you give to an aspiring software engineer without a computer science/ engineering background?
You can learn a lot from online resources if you follow a good approach. Please do not start by skipping everything else to learn a programming language. Get a basic understanding of what an Information System is, this will help you understand the role of software engineering with a focus on what matters the most- empowering the end-user. Give yourself some time to build a solid programming foundation by learning the basics of data structures and algorithms. This will enable you to become an efficient problem solver. I would suggest implementing these concepts with either Python or Java. Thereafter, depending on what you are interested in you can start learning a certain framework juggling both front-end and back-end concepts. Not everyone wants to be a full-stack engineer but I deem it as important to have a basic understanding of everything as this will help you create better solutions and will enable you to decide on a career path based on your experiences over assumptions and/or hearsay. Documentation first, coding communities, and YouTube after. Post this phase the possibilities are endless for as long as you are aware of new developments in your domain and continue to solve more problems.
2. Give us an insight into what your work-day looks like and your most frequently used tools
Just like in any other role, I start off my day by checking my mailbox. I then head straight to Slack to check if there are any announcements on our work channel. My Slack app is linked to Asana, Google Calendar, Github, and Google Drive. This enables me to have a central app that I can use to keep track of everything else. The first meeting for the day is usually the daily stand-up wherein my teammates and I meet to discuss any updates we have on the previous day’s tasks and share what we will be working on for the current day. Thereafter, I do some personal lightweight task planning to break down my tasks into smaller subtasks and update this on Asana so that everyone else can be aware of what I am up to. I then start working and collaborating with my mates. My tasks involve but are not limited to writing/testing/refactoring code, doing git commits, code reviews, and PRs, reading documentation, and more. My most used tools are Slack, Visual Studio Code, Asana, Github, Postman, and Google Chrome.
2. Dimakatso Makgatho
Software Engineer
Jobox
1. What advice would you give to an aspiring software engineer without a computer science/ engineering background?
If you are aspiring to be a software engineer, you must not make syntax your biggest priority. At the end of the day, it's about if you can solve the problem presented in front of you with a programming language. If you can solve the problem, one of the primary roles of a software engineer is already fulfilled. The thing about programming languages is they can always be learned, as the basics of most languages are closely related (i.e. conditionals). Consider, putting time into understanding data structures and algorithms as these will make learning most programming languages easier. One thing for certain is there is no set path to becoming a software engineer, it is all about just starting, learning the basics, deciding what kind of developer you want to be and what you aspire to work as eventually. Is it a web developer? A backend engineer? A front-end engineer? Once the decision is made it makes it easier to start your journey.
2. Give us an insight into what your work-day looks like and your most frequently used tools
Generally, my workday is kicked off with my development team standup, where we report back what you did the previous day, what you plan to do on the day, and if you have any impedances. Then I'd then move forward to either solve bugs or develop a new. On certain days, there is a handful of meetings that could limit the time you have for coding, the meeting could be with clients, sprint planning, and design sessions. You need to have a handy toolset to get through a day almost successfully like having a notepad handy (electronic or classic). I would say the most important part of your toolset is you as there are a few attributes that your should exhibit, like patience, understanding of concepts, knowing when to get help, these will help add longevity to your career as a software engineer.
3. Ayomide Fajobi
Senior Software Engineer
Ignition Group
1. What advice would you give to an aspiring software engineer without a computer science/ engineering background?
The only advice I'll give an aspiring software engineer is, do not chase money while you haven't even gotten your legs in a professional environment. I'd advise that whatever job comes your way, do not chase money but grab that opportunity cause once you get your first job it's easier to get another. since you have got experience.
2. Give us an insight into what your work-day looks like and your most frequently used tools
My typical workday is just like every software engineer's workday, which is, jump in meetings, meet up with clients, group requirements and turn those requirements into code.
4. Thabo Ben Mehale Teffu
Software Engineer
BDD
1. What advice would you give to an aspiring software engineer without a computer science/ engineering background?
I would recommend that one starts learning data structures. This is the important foundation of solving any algorithm, is knowing which structures can help you solve a programming problem. Thankfully, there are great sources online to learn about data structures. One's I have used personally is GeeksForGeeks, Hackerrank, and Udemy.
2. Give us an insight into what your work-day looks like and your most frequently used tools
Usually in the morning I practice solving a programming problem on Leetcode. Then login into work, check my emails, and the Jira board to see what I have left to complete in a sprint. Then depending on the task at hand, I go dev whatever Jira task I have, before standup. After standup, I continue developing, and maybe I'll catch up with a teammate during the course of the day to find out how they are doing, and if they need any input in their tasks. Depending on deadlines, I will continue on my tasks until 4-5 pm, take a break, and then do some reading on what's happening in tech or if I found a new data structure I want to use, I will practice it. Then my day is up.
5. Clara van Staden
Software Engineer
Go | React | Artist
1. What advice would you give to an aspiring software engineer without a computer science/ engineering background?
With or without a degree or engineering background, side projects (like building your own apps in a tech stack you would like to find a job in, contributing to open source) and technical (and even non-technical!) writing are your best bets to show credibility. It shows enthusiasm about your craft and that you have taken the initiative to showcase your ability. Writing proves that you can communicate clearly and explain complex concepts. I have written 2 articles on LinkedIn and in almost every job interview I've had they have been brought up favorably. I have found writing to be a low effort, high output, relatively speaking. Writing is still hard, but if you take into account each article took me a few hours and it paid off years afterward, it's totally worth it.
2. Give us an insight into what your work-day looks like and your most frequently used tools
I typically start my day on Jira (task management and sprint planning tool). I look at the work assigned to me and plan out what I'm be working at during the day, taking into account when my meetings are and planning work for the bigger time chunks in the day. In the smaller chunks, I would typically review PRs (code from other engineers) or do admin, if there are any. In my bigger blocks of time, I'll typically code a new feature or work on some DevOps task. I use IntelliJ for the Go code I write. I love IntelliJ! I'll use Postman to test my API endpoints (since I am a backend engineer and mostly create APIs). Meetings are typically for sprint planning, backlog grooming, backend guild meetings, sprint review sessions.
6. Chris Bongers
Software Engineer
Daily.dev
1. What advice would you give to an aspiring software engineer without a computer science/ engineering background?
I would really urge people to get to really know the basics. There should be a perfect mix of learning the theory, but maybe even more importantly, by doing.
Creating projects and writing down what you've learned or why it works that way is one of the best ways to learn.
A cool side effect is that it provides you with a portfolio with all your learnings.
2. Give us an insight into what your work-day looks like and your most frequently used tools
My typical working day is asynchronous, which is essential to note as it might differ from usual. I start by checking any mentions on the company slack that might need my urgent help.
Then I head over to the emails and see if I need to pick up anything urgent from there. If not, I turn to slack again to write my daily standup text. This includes what I did the previous working day, what I'll be working on today, and any blockers. After that, the work starts, and I either pick up a new task from our Jira board or continue working on one. While doing this, I use Visual Studio Code as my IDE. Most of the time, development is in React and consists of writing code, visually testing it, and writing jest test for it. If all is done, I run the test locally and see that the builds are still going through. Then it can be submitted as a new PR for the team to review, I usually take some time to walk through my changes to spot any odd-ends I might have missed. I try to make the PR as descriptive as possible and add images or videos where possible. Then we might jump on a quick off-topic coffee chat with whoever is available. After this, I usually see if I need to review anyone's PR's and the circle begins again.
7. Szarath Kumar
Full Stack Software Engineer
Amecor
1. What advice would you give to an aspiring software engineer without a computer science/ engineering background?
Google and YouTube are great tools. Start by going over the basics of computer science and research on others that have created software that you believe has the potential to change the world. You’re in-software development don’t be afraid to fail. Create as many projects as you want based on any idea you think will help the real world. When you do your research, you will learn about many shortcomings this itself will guide you in developing better logic in your code. Always remember googling is your best friend and get involved with only discussion boards and hackathon sites they are a great source of problems that you can practice with. They also range in difficulty so you can start with any level you feel comfortable on. Make use of GitHub to version control your projects. This can also later be used to showcase your projects.
2. Give us an insight into what your work-day looks like and your most frequently used tools
Wake up in the morning. Grab my coffee. Open my laptop. Look at my emails via outlook and messages via slack. Catch up on and commit any code I failed to finish yesterday or investigate new methods and techniques that will assist in better development. Then have my daily stand-up with my team via Microsoft teams at 9 am where we discuss in short what we intended to achieve and where we currently stand on a certain topic. After a short discussion gets back to the fix/solution I am currently working on. Write up pseudo code about how the logic of the fix/solution will work and discuss with relevant team members if necessary. Take a lunch break from 12 am to 1 pm. After the break starts to implement the fix/solution using the relevant development environment. Then test the implemented solution if all tests are successful then commit the code to GitHub. By 5.30 pm I stop working even if the solution is not ideal and work on it the next morning instead. Some solutions take more than a day to implement as there will always be something that was not accounted for in any business.
8. Vus'muzi Sibanyoni
Software Developer
BCX
1. What advice would you give to an aspiring software engineer without a computer science/ engineering background?
Pick your interests within the software industry, understand what technologies drive your chosen interests, and learn to get certified in those technologies.
To get certified, there is a plethora of free training content offered by companies such as AWS, Microsoft, Google. They offer free certification vouchers when you attend their free online workshops.
Stay active, participate in hackathons and challenges, these will give you exposure and sharpen your skills in the long run.
We are lucky we get to live in times where there are tuition-free institutions that train you to learn software engineering with the guarantee of employment at the completion of your academic period. Look into WeThinkCode, Digital Academy, Umuzi.org, Explore Data Science Academy, MIP and see what possibilities lie beyond.
2. Give us an insight into what your work-day looks like and your most frequently used tools
I work in the digital transformation space, we help SMEs achieve maximum efficiency with their business processes through the use of 4IR technologies such as Robotic Process Automation, Artificial Intelligence, Data Science, Chatbots, and other Enterprise Solutions. Helping clients reach maximum efficiency could be freeing employees from mundane repetitive work so they can focus on work that adds value to themselves and the company, or building an application to help a certain department manage contracts and approvals digitally - effectively building a paperless work environment.
My day-to-day work includes:
Supporting systems that are already in production.
Business Process analysis, to determine what problems our clients are facing and how we can utilize technology stacks to solve these problems.
Daily connect sessions with the team to inspire collaboration.
A lot of research into feasible technologies for specific use cases.
Quick sprints to develop Proof of Concepts, which determine if a certain technology can solve a documented business problem.
9. Drikus Van der Walt
Software Engineer
Synthesis Software Technologies
1. What advice would you give to an aspiring software engineer without a computer science/ engineering background?
It truly is an incredible time to be alive, where access to quality resources is readily available. My advice to aspiring software engineers that lack a formal qualification would be to lean into the available resources online and to get their hands dirty with some projects. Build up a portfolio on Github that can show off your experience and training. An active Github profile is more valuable than an inactive University degree in the tech industry.
2. Give us an insight into what your work-day looks like and your most frequently used tools
As a full-time cloud engineer most of my tools revolve around getting the most out of AWS. To that end, I use a lot of infrastructure as code (Terraform, Cloudformation, CDK) tools. I also strongly advise an aspiring Cloud developer to get familiar with concepts of containerization like Docker and Kubernetes.
10. Bradley Pirie
Junior Software Engineer
BDD
1. What advice would you give to an aspiring software engineer without a computer science/ engineering background?
The advice I'd give to an up-and-coming computer software engineer, would be to read! Stay in touch with all the new tech. Read the news and IT articles, the best thing I have done was install a news app where I read for 10min in the morning with my cup of coffee all the new tech and ideas happening in the industry.
2. Give us an insight into what your work-day looks like and your most frequently used tools
A typical workday for me is working from home.
I like to train and get some sort of exercise in the morning. I then sit down to work the typical 8 hours. Throughout my day if I come across something I don't know or something I need to learn. I will do some reading on it to understand it in my spare time. I then study for my second degree and learn for my certifications in some of the techs I work with.
11. Vijal Patel
Software Engineer
SEACOM LTD
1. What advice would you give to an aspiring software engineer without a computer science/ engineering background?
I am a Mechanical Engineer by educational background so this question is very relevant to me. The best advice I can give is that you should first learn the fundamentals of CS, there are a number of free courses out there and I recommend Stanford CS101. Try applying what you've learned by completing challenges such as the Euler Problems. After you feel confident enough the best way to grow your skills is to build something for yourself or others. Think of a problem you or someone you know has and write some code to solve it. Of course, what you build should have some common ground with your career goals. Doing something from scratch allows you to grow much more than your regular 9-5 job would. If you continue to do this for the rest of your career you will no doubt become an excellent SWE.
2. Give us an insight into what your work-day looks like and your most frequently used tools
My typical workday starts with me catching up with emails, after that I have standup meetings where the teams go through what we are working on and highlight any challenges faced. After that, I am usually writing code for most of the day (with some short meetings in between). Towards the end of the workday, I would check my emails and do whatever admin tasks are required. The only tools I use are Visual Studio Code, pgAdmin, and MongoDB Compass. I prefer to do everything else from the command line (git, docker, k8s).
12. Joshua Dzitiro
Software Engineer
Entelect
1. What advice would you give to an aspiring software engineer without a computer science/ engineering background?
From the technical side, to be a successful software developer you need to be an effective problem solver and you also have to be good at translating your solution into code. A degree in Computer Science/Math/Engineering is a kind of a universally accepted standard that you can solve problems. One can easily learn to code using online courses and programming books. After learning one programming language you can start learning to solve small problems using code. A good place to start will be hacker rank, lint code, and codewars. Once you get comfortable with solving small problems you can start looking into solving larger problems, e.g making a console application. From there one can move to make a few apps (desktop, mobile, or web) and add these applications to your portfolio. Having a portfolio will come in handy when you don't have a degree in Computer Science/Math/Engineering; a portfolio of apps shows that you can solve problems using code. For people who are coming out of high school, I would say it's better to have a degree in Computer Science or Engineering because it will open more doors for you. But, for someone with a degree that is not Computer Science or Engineering the self-taught route might be ideal.
2. Give us an insight into what your work-day looks like and your most frequently used tools
My workday starts at 7:30 with a cup of coffee and greeting my team, I start my work by looking at the task board and making sure that all the tasks are up to date then continue with the task I was solving the previous day or start working on a new task. from 8:30 to 9:00 I will attend a stand-up meeting. From 9:00 to 13:00 I will be programming while listening to lofi-beats and assisting my teammates when required. I usually take lunch from 13:00 to 14:00, and for the rest of day, I will be programming and collaborating with my teammates.
13. Obothlale Kganane
Full Stack Software Engineer
BMW Group
1. What advice would you give to an aspiring software engineer without a computer science/ engineering background?
I was fortunate to have practiced Computer Science from Highschool right through University. In hindsight, when you are in the same space with like-minded individuals, it makes a huge difference! The most important part of anything you do is deciding. Decide to start and make that decision to not quit. These days you do not have to be in a physical space to join a community and there are tons of forums you can sign up to online. You will notice that there will be information overload, but research and reading swiftly through all that information is a part of the game in solving Software Engineering problems. With every problem solved you'll naturally know how to solve more problems and puzzle solutions together.
2. Give us an insight into what your work-day looks like and your most frequently used tools
Software Engineering involves writing code that translates into usable applications(apps) on computers and/or smartphones. The process of creating software is more involved than just writing code. Requirements gathering, planning, and designing are prerequisites to that. My team practices what is called Agile. This is not a Software Engineering specific practice but can really be used personally or in most professions as a way of planning, dividing, and conquering. You can't eat a whole elephant all at once, so Agile helps in cutting up huge problems into smaller solvable ones. Without going into deeper details about Agile, an example of this practice would be: we decide to use two weeks to solve problems. Through planning and discussions, we can break down these problems into smaller manageable problems, that could be solved in that timeframe. Tools such as Integrated Development Environments (IDEs) are an advantage to speeding up developing software. I personally use an IDE called Intellij. Think of an IDE as a single place for getting all the tooling you need to help you solve problems efficiently. Intellij integrates - Database connections - GIT (for storing and managing the code you write) - Various frontend and backend languages in a single place. It can recognize which language you use. In addition to this, it has auto-complete capabilities to help you speed up your writing.
14. Taiani Lange
Software Engineer
VASTech
The two main philosophies I like to live by is:
Both are important. Both are necessary.
This article was birthed because someone asked me what advice I would give aspiring Software Engineers that don’t have a Computer Science or an Engineering Degree. So here goes.
Conclusion
The questions asked were very intentional to get practical insight from Software Engineering professionals in South Africa. And the priceless insights shared above will put aspiring Software Engineers on the front foot to excel in this field.
I'm sure this will contribute to helping you secure your dream Software Engineering job in South Africa or increase your productivity in your current role.
We will love to hear your thoughts and contributions using the comment box below.
Leave a Comment