Im starting off college, and dont know what career to take between software engineer and programmer?
I am really into computers, gaming, and decent in math. I havent taking trig, or calculus yet in highschool, and i heard i might have to take it to become a software engineer. I tried teaching myself program languages like c++ and java, and i find it not hard, but challenging. Should i go for the software engineer career and get my associates in that? Or should i just get one in computer programming and become a programmer?
In my opinion, the terms "Programmer" and "Software Engineer" are arbitrary. I don’t feel there are universally accepted definitions for either. That said, I’ll use the construction industry for a concrete (pardon the pun) analogy. Software industry roles are in parenthesis.
Future Homeowner (Client/Customer) – Has a concept of what they want their new home to look like and how they want to use the space inside.
Architect (Analyst) – Works with the future homeowner to turn their concept into representation that others can see. They must be able to communicate with the future homeowner in a way that is natural to the homeowner. They must also be able to communicate effectively with engineers.
Engineer (Software Engineer) – Using the architect’s representation as an expression of what to create, produce a detailed plan of how to create it. To do this, the engineer combines a knowledge of available materials, best practices, applied science, constraints (such as laws, building codes, etc.), etc. They must be able to communicate with architects and craftsmen.
Craftsman(Programmer) – Is skilled at using their tools to assemble a tangible product from raw materials and standardized components according to the engineer’s plans. Their work is specialized. Through their career they may expand their skills and knowledge to enable them to work with more types of tools and materials.
In the software development field, a person may fill any or all the three development roles. It may change between organizations, over the lifetime of a project, or through their career as their experience grows.
When deciding where to go for post-secondary education, look at the curriculum. Is it primarily how to use tools (C++ programming, Web Page Design using Dreamweaver, etc.) or concept based (Data Structures and Algorithms, Human Factors in System Design, etc.)? The former will train you to be a programmer. The later will educate you to be an engineer.
My background:
- Two years of self-paced programming study in high school.
- Bachelors Degree in Computer Science and Engineering. I did take 2 Calculus courses (university-wide requirement) and a couple of other mathematics courses required for my degree.
- Twenty-six years of experience.