To create or have the ability to create — this is the dream of so many people. There are only a select few, however, who actually get the chance to just ... make something.
One somewhat unlikely place to find this sort of freedom is by taking on the role of software development engineer at an information technology (IT) company. Let's explore this critically important job. So what exactly does a software development engineer do?
As with many IT jobs, 'It depends' is an entirely legitimate answer. Movies and television would say that a software development engineer is like Neo in The Matrix — a genius-level programmer who creates custom software solutions for client. I have met individuals like that — and if you don't like The Matrix, then we can't be friends — but that isn't quite what real work software engineering is like.
Maybe you envision a corporate-style engineer, someone who wears headphones, guzzles caffeinated energy drinks, and stands in the corner at daily scrum meetings in an office. Or a freelance 'digital nomad' engineer who has a laptop next to a cocktail with an umbrella in it on a cafe on the beach.
There's a little truth in all of these tropes. Simply put, however, a software engineer uses computer science principles to develop software solutions that will satisfy the wants and needs of businesses and consumers. Software engineers create many types of solutions such as desktop and web applications, mobile apps, games, robots, operating systems, network systems, and more.
They do so using programming languages, frameworks, databases, servers, and other technologies to turn an idea into a final product. You can use a wide variety of tools for this effort, and many computer languages to develop your code. The principle and logic remain the same, however, whether you are developing an AI robot or a simple web site for your friends.
What in a name? (Maybe more than you think)
Because software engineers work on many types of projects, they also take on varying job roles, responsibilities, and even personalities. In the industry, the terms "software developer" and "software engineer" are often used interchangeably. Most people call them by the same name.
So you could say that the title "software development engineer" is just covering all of the bases. Or maybe it's a little more complicated than that.
A software engineer is someone who applies computer science and engineering concepts to create software solutions. A software engineer understands and writes the code works, and the best, most efficient way to write it.
On the other hand, a software developer is the creative driving force behind making the solution come to life. In a sense, they combine the roles of product manager and software engineer.
For many people, the title of "software development engineer," brings to mind an individual who stays hunched over a computer in a private office all day while you you slip Twinkies and Mountain Dew under the door. I had a supervisor once that hated the word 'Engineer' for anyone outside of traditional mechanical engineering because, in his opinion, they didn't achieve that title.
When I think of a Software Engineer, I think of a creative, sharp-minded individual who has their eye on the ball, take direction well, and helps their fellow teammates. A well-rounded individual, even though 'head down' coding is a big part of what you want them to do.
In more concrete terms, a software engineer architects software solutions by making plans and designing systems, so that a software developer can build the solution with code. We agree that 'engineer' has a bit more weight to it than 'developer,' but for simplicity's sake we'll use them interchangeably. So now: What do software engineers do?
From an org chart/workflow perspective, software engineers support the product delivery process to take a project from its goals and requirements to the final product. If you are working in a financial firm, for example, then you may see some job duties such as, design, implement, test, and maintain logic and components. Or you might be asked to consistently improve the maintainability and stability of the codebase.
Some software engineers collaborate with product and business operations teams to translate business requirements and build highly robust and scalable products. A person who can develop code and understand business requirements is a real keeper. If they can talk to the business folks, you have a real strong candidate.
Just bear in mind that, while there will invariably be many different responsibilities, a software development engineer is primarily a "head down" code wizard. If you want to fill the role in almost any setting, then you need to be a versatile and knowledgeable programmer.
To keep pace with changes in technology and evolving workplace demands, you'll need to focus on Machine Learning (ML) and Artificial Intelligence (AI). This will also ensure that have a growing toolset for development.
Not only is the language changing, but the machines are writing the language that their creators are putting into their neural networks. Look for these toolsets to grow, to the point at which — maybe not as far down the road as the casual observer might predict — a software development engineer is hooked up, brain to computer, with the machines. (If that isn't The Matrix come to life, then I don't know what would be.)
A successful software development engineer should be critical thinker with a rock-solid grasp of machine logic. Most dreamers that have abstract ways of thinking won't make good software engineers. If you grew up thinking about numbers and enjoy the logic of math, then you probably have a natural aptitude for software engineering.
Having the right education and certification background will help you no matter where you end up. I strongly recommend the formal education in technology of a traditional four-year degree for this job role, although those with the right aptitude can succeed by skilling up through course-based boot camps.
Signing up for a Java course or a 'fundamentals of software development' off of Udemy may work just as well for those who aren't starting from scratch. Why? Because the knowledge is all tools-based after you absorb the logic of software development. If you already have some sense of what you're doing, then tools-based learning is the way to go.
For certifications, I recommend staying on the same track of software engineering and getting certified in the actual tools. Seek out a React class, pass the course, and get the certificate. Microsoft offers a C# certification? Get that. Certify yourself in the tools and you will be very marketable.
In summary, no matter what you are developing, how you are growing or what you are certifying in, the software development and engineering realm will continue to grow and continue to be a hot commodity for years to come. I wish you the best and happy certifying!