Introduction to Software Engineering
February 13, 2020
What is Code?
Let's start at the very beginning. Before we dive into what Software Engineering is and what it entails, we must first understand what code is.
Code, simply put, is written instruction for a machine.
Think for a moment about the ways that we, as humans, communicate. In the realm of verbal and written communication, we exchange words with others in an attempt to convey meaning.
Code works in the same way, yet we are conveying meaning to a computer instead of another person.
Just like other forms of communication, code can be written in different languages. Each language is made up of a unique system of recognized words, syntax and spacing.
When these words are arranged in an accepted order as dictated by the language, the developer can pass on instructions that the machine understands and can act on.
What is Code Used For?
If we think about our daily routines, code is everywhere we turn. From web pages and applications, to electronics, and even the vehicles and aircrafts we ride in, code is a foundational component of each.
When it comes to companies that depend on code, the small sphere of technology entities that dominate the news cycle usually come to mind.
But the reality is that practically every industry relies on it in one way or another. Whether it's the tracking and logistics of manufactured goods, or something as commonplace as a credit card transaction to make payment, code makes it all possible.
It doesn't stop there!
Not only does it power the world around us, but code is also changing the world, as well.
With the rise and application of machine learning, we're able to extend past our own human processing limitations, using algorithms to detect cancer at earlier stages and with greater accuracy, for example.
And we're barely scratching the surface on that front.
What is a Software Engineer?
Software engineers, web developers, programmers, coders: though there exists slight distinctions between them, all are used to describe an individual that writes code.
So, what do the people who told these titles actually do?
They solve problems (by writing code)
Developers take ideas and turn them into a reality.
They work with product experts, business shareholders and designers to bring to life software solutions for the problems that people and businesses face.
Of the code that is written, a good portion of it is fixing previously written code that is now broken or was written incorrectly in the first place.
They "speak" different (computer) languages.
Different languages are better suited for different problems. We have languages specifically for web-based development, for example, and others for analysis-heavy areas such as data science.
Often, the languages a developer works in depends on their own choice and/or the company they happen to work at.
According to Wikipedia, there are about 700 different programming languages in existence.
But, take heart if you've yet to learn even one programming language of the hundreds available: once you know one, it's significantly easier to pick the next one up.
They are constantly learning new things.
Whether it's a brand new language, a new tool, or just a better way of doing things than the way it was previously done, developers are always learning.
It's arguably one of the biggest perks of the job: if you love learning, to be paid to do so each and every day feels almost too good to be true.
How Much Do Engineers Make?
As with most things in life, it depends!
Straight out of the gate, as a junior developer in San Francisco, one's very first role could command a salary somewhere between 85K and 175K.
With years of experience and the acquisition of knowledge, salaries naturally reflect that growth.
Now, that being said, as of the time of this writing, estimates of the national average sit at around 100K.
In places that boast a lower cost of living, the salary for a software engineer is likely to be significantly lower than what we have here San Francisco.
But, all things being equal, writing code for a living pays very well.
Benefits of the Job
There are many perks to being a software engineer, but below are those that tend to speak to people most:
Flexibility
Every year, more companies seem to be embracing the switch to remote work: letting their employees work from home (or even a beach somewhere in Tahiti).
If not remote, it isn't uncommon for companies to have the attitude that so long as engineers get their work done and attend any meetings deemed mandatory, they can be flexible with the hours they put in.
Future-Proof
With technology booming bigger than ever, the need for developers isn't going anywhere. There are more available jobs than their are engineers and that isn't set to change any time soon.
Job security is all but a guarantee.
Compensation
As discussed in the previous section, software engineers are paid very well for the knowledge and skills that they have.
Creative Challenge
Writing code is a creative process: it requires a lot of mental energy, but also creativity and ingenuity. There is rarely one way to do accomplish a task -- and it's up to you to decide the best way to do so.
What Makes a Good Software Engineer?
It's a common misconception that programmers must fit a series of outdated stereotypes that refuse to let go.
Engineers are people, and everyone is different, but below are some individual characteristics that might signal that software engineering as a career would be worth exploring:
You enjoy solving problems
You enjoy puzzles, playing games, or generally figuring things out.
You love learning new things
Whether it's languages, skills, or hobbies, you just really enjoy learning.
You don't give up easily
We all get frustrated, especially when faced with challenges or concepts we haven't yet come up against. But when things get difficult or you don't "get it" right away, you're not the type of person to just give up.
The act of creating something sparks joy
You feel a sense of fulfillment and satisfaction when you're creating something.
This doesn't have to be anything close to related to technology! It could be cooking/baking, scrapbooking or other crafts, or any other sort of creative endeavor.
Whatever it is, you get enjoyment out of bringing forth something from what started as an idea.
No, You Do Not Need to Like or Be "Good" at Math
This gets its own section because despite the changing landscape and progression of our industry, this belief persists and prevents individuals who would otherwise be great engineers from exploring development further.
A strength in and enjoyment of math usually corresponds to having a strength and enjoyment of problem solving.
But, you can be an excellent problem solver without enjoying or being particularly proficient at math: these two things can be mutually exclusive.
It's the problem-solving ability that matters, not the ability to do complex algebra.
Can I Become a Software Engineer?
If you've read this post, the content spoke to you and you're considering a switch in careers, you owe it to yourself to explore software engineering as a potential next step.
The barrier to entry is low, compared to other vocations, and a surplus of jobs awaits you.
Yes, it will take time and some sort of financial investment, but that investment will pay off in spades if you truly enjoy the act of coding.