First, some background about my own journey into software development. When I went to college, my plan was to become a civil engineer. I took two semesters of physics and realized that the plan was not going to work. I found out that I really did not like physics, and to be an engineer you need a solid physics background. Thankfully, I did not need to decide on a major until my second year was completed, and I did some research. I had settled on Industrial Engineering, where I could take some engineering classes as well as some operations and finance classes. It sounded interesting enough, but I thought I might need some help getting a job when I graduated. So, I decided to take an introductory programming class.
This was not my first taste of programming. Like any geek my age, I had written some Basic on a TRS-80 during school. However, my first programming class was like turning on the light bulb. I quickly realized that programming was what I really wanted to do. I changed my major, eventually graduated and have had several jobs in our industry. I have now been coding professionally for over 17 years.
What does this have to do with whether you should become a software engineer? The whole story is not entirely important, but there are some points that need to be understood.
You must enjoy what you are doing.
This is even more important in software engineering that some other industries. In many cases, software engineering is not a typical 9 to 5 job. It is fairly stressful as well. If you do not enjoy programming, the stress will demotivate you to the point that your code will eventually suck. I wrote what was meant to be a humorous post about the trials of the job in August 2010. It is supposed to be a joke, but in some environments those points are too true.
You can have some level of job security.
In this economy, any level of job security is good. This does not mean that programmers always keep their jobs. We go through layoffs just like everyone else. However, there are a lot of available jobs and the industry continues to grow.
There is good money in software engineering.
You may not see large wads of cash to start, but over time your salary will grow. If you look at salary surveys for different locations, senior level engineers can make $100,000 or more.
There is a lot of job diversity available.
Do you like working with real-time devices like embedded systems? Mobile devices, like phones and tablets, are growing rapidly and there is a ton of development occurring in the mobile space. Web sites and web applications are continuously being built and require people to know UI development, some server side development and maybe even some database code. If you like to code, there are plenty of niches to explore.
What is your inspiration?
Why do you code? Some people like the idea of creating something. Others like solving puzzles. You may like the fast feedback cycle in programming. If you have no inspiration for programming, you probably will not really enjoy the job.
Easier path to independence.
Some people may not like the idea of being a wage-slave at some big corporation. Software development allows you to work remotely or build your own consulting business. This is easier than in many other industries, where working remotely is just not a possibility.
Obviously, there is no clear reason to become a software engineer. It is a personal choice and not some stereotype like introverted math and science lovers who are devoted Star Wars and Star Trek fanatics. To find out if you like programming, try writing some simple code. Do not try to build a significant web application or some mobile app, that is too much to start with. Look at some basic tutorials on learning a language and start coding.
Other related posts:
- 15 Tenets For The Software Engineer
- Programming Is About Keeping Basic Skills Sharp
- 7 Resume Tips For a Software Developer
This guide will introduce you to the world of Software Architecture!
This 162 page guide will cover topics within the field of software architecture including: software architecture as a solution balancing the concerns of different stakeholders, quality assurance, methods to describe and evaluate architectures, the influence of architecture on reuse, and the life cycle of a system and its architecture. This guide concludes with a comparison between the professions of software architect and software engineer.