My job: Software Engineer
We at Cybernews Academy spoke to Kenneth Seals-Nutt, a software engineer with multiple years of experience, about the mechanics of software Engineering and how to break into the industry.
Meet Kenneth, a software engineer with over seven years of experience in software engineering and engineering management whose career actually started in the kitchen. “I came to software engineering in a roundabout way. I started as a young chef leading kitchens. I originally worked at an Italian restaurant and was Head Pasta Chef.” This was one of the first instances that Kenneth had driven a large group to a common goal. Kenneth eventually pursued Computer Science at a university after exploring several different subjects. “I didn't even know anything about coding, and I didn’t think that engineering was for me at the time, but some of my roommates started in the computer science program.” During this time, Kenneth was figuring out what he wanted to do with his four years in college. Then it struck him. “I would notice that the tasks my roommates had as homework were like putting puzzles together. The same type of problem-solving and instructions they focused on resonated with me from my time in the kitchen.” The skills that Kenneth gained from his previous profession, such as collaboration, communication, and empathy, helped him excel as a software engineer.
What is a software engineer?
According to our expert, a software engineer is a person who uses technology and programming to build products. “Frequently, software engineers execute a technical vision through software to either build a service or system. I use engineering to integrate multiple systems to achieve a business or product strategy.” In essence, software engineers aim to make life more efficient for users of online products and services by building tools that companies and the public can use. Software engineers are the secret heroes behind the scenes that build and deploy software you use regularly.
What does a software engineer do?
The role of a software engineer is to engineer, create, and manage applications and other software used regularly by the public and in business. “The most common things used today are user-facing products like applications. However, what most people don’t know is that software engineers also build internal tools for companies to use, which allows them to work more efficiently.” Software engineers may be responsible for building CRMs and other interfaces that have interaction with a lot of the company's users. “Sometimes, we build tools that can extract data and report on metrics – sometimes, it’s tools for improving workflows.” In addition, software engineers can build applications that are custom-made to fit that exact workflow and can automate a lot of the processes. So, humans aren't doing many remedial tasks, which makes the organization more efficient.
How are software engineers unique?
Kenneth told us that software engineers are the equivalent of construction workers in the digital space. Software engineers are integral in upholding the structure of corporations, businesses, and organizations that use software like applications and internal tools (that’s pretty much everyone). “Software engineers can build whatever a company needs, depending on its goals and what the organization is trying to accomplish.” These individuals can use the power of machinery to automate processes, ensuring that menial tasks are taken care of and that the organization is running at maximum efficiency. Kenneth explained that “one of the nuances with being a software engineer is that your environment is always changing and projects are never technically finished. You’re building the first version of everything, and you’re also moving through future iterations, which is always at the top of an engineer's mind.” The role of a software engineer is unique as this individual wears various hats and has many different responsibilities.
Software engineers responsibilities
As a software engineer, some responsibilities include ensuring that the engineer and others clearly understand the project's requirements. “Often, these requirements are provided by a product manager or someone on the business side who says I want you to build this thing, and as a software engineer, I want to make sure I’m building the right thing.” Software Engineers ensure there is an agreement upfront on what is expected of them throughout the process. “I also am communicating with others along the way as much as I can to ensure that things are on track in terms of writing code.” Software engineers are responsible for the code that they write; “we make sure we write code that is high quality, clean and isn’t overly complicated as other people will be reading our code so we make sure that anyone can understand the code we write. ”
Software engineering life cycle
The Software Development Life Cycle or SDLC is a process that crafts software of the highest quality with the lowest possible cost while completing the project quickly. Kenneth explained that software engineers often adhere to the agile methodology or Scrum, an agile project management system.
“We separate all of our pacing into two-week sprints. These are two-week blocks of time where we’re going to commit to working on ‘this many projects’ or ‘this many features.’”
Kenneth told Cybernews Academy that an engineering manager usually liaises with product managers and stakeholders to perform a backlog grooming session. “That’s where we would gather all of the project requirements and make sure we sign off on the priorities, if any designs need to be made, or proof of concepts prototyped.”
At the beginning of every sprint, the software engineering team will have a planning session outlining their strategies for the upcoming project. In this planning session, everyone delegates what tasks they want to take, and they get to ask their final questions before the team begins working.
Kenneth’s teams typically convert their strategy into ‘story points’ where every task would be considered a story, and the team has to score that story based on how long they thought the task would take. With every sprint, the team will usually get faster as they are more aware of the codebases. “We continue to improve our velocity more and more every sprint. We are then able to take on more responsibilities.”
Iterations of the software development process
There are multiple versions of the software development process – Kenneth mentioned that depending on how the teams are structured, there are two scenarios where one is a more scheduled release and the other is based on continuous integration.
What industries need software engineers?
According to Kenneth, all industries need software engineers, “I can’t think of an industry that doesn’t need software engineers. All industries that use the internet have users online or have an online presence have software engineers.” Even if you have a company that doesn’t have a software engineer or software engineering team, you’re still probably relying on software built by software engineers.” Therefore, these systems must be maintained somehow, and those that can maintain the software are the ones that built the software in the first place.
Software engineers at the university
“From a hiring standpoint, many people look for some form of computer science training, whether through a formal bachelor’s degree at university or some other supplementary course.” Bootcamps and certifications are starting to emerge as viable ways to transition into a career in software engineering, according to our expert. “I think it’s becoming even more important to have somewhat of a computer science background as a software engineer.” Skills such as user empathy, collaboration, communication, and the ability to code are other key skills you need to consider when starting your career as a software engineer.
Here are a few courses you could consider if you are interested in becoming a software engineer:
- Computer science - this degree provides strong fundamentals in logic, algorithms, and data structures. These are essential skills required for a career in Software Engineering.
- Software engineering - this degree focuses primarily on the fundamentals and techniques for designing, developing, testing, and maintaining software. These are core aspects of programming-based careers.
- Computer engineering - this can help understand the features of systems that can aid in the overall development of software.
- Information technology - IT degrees detail a vast range of topics relating to the management and implementation of IT solutions. This includes, but isn’t limited to, networking, databases, and systems administration. These are critical competencies needed for a job in software engineering and IT.
Kenneth encourages all individuals interested in software engineering to take a course in computer science and software engineering, as this will help them understand the mechanics of the craft. This will also help you become more familiar, involved, and integrated with the job functions.
What employers value
Kenneth expressed that employers look for those who have practical experience behind them. “Having a few projects under your belt shows that you’ve gone through the process of learning because theory is great, but it doesn’t click until you start writing the code yourself and going through all the edge cases.” Software engineers should have a portfolio of projects they can call upon during a job interview. “Try taking on some open source projects and collaborate on personal projects to gain some experience.” Kenneth believes that some level of experience is necessary, mainly because the expectations for engineers are increasing with the relevance of AI. He also expressed that internships are a great way to gain industry experience.
- Start with education - if you are currently in college, pursue a computer science or information technology degree, as a formal education provides a foolproof foundation for professional development. If you are not in a formal program, enrolling in boot camps and online programs is often very affordable to help you land your first role as an engineer.
- Seek hands-on experience - those who want to pursue this path should engage in personal projects that help them understand tools and develop their skills.
- Apply for internships - engage with companies and organizations that will help you get hands-on experience in the industry.
- Find people passionate about what you do - networking with others can help you find a job post-graduation and friends to help you navigate the software engineering space
- Stay updated - Kenneth strongly emphasized this appetite for continuous learning and development as the technological landscape changes rapidly. Reading articles and other literature, listening to podcasts, and attending meet-ups are great ways to stay updated with the latest products.
- Consider smaller companies - Kenneth recommends focusing on smaller start-ups because everyone focuses on the big companies that can have highly challenging interview processes. However, interning at small start-ups could be equally, if not more, rewarding as you are building your professional career journey.