What is the difference between software developer and software engineer?
I am really interested in working with technology in my future career(s). #engineer #engineering #technology #tech #computer-software # computer-science #software-engineer #software-developer
A software developer does the coding based on the solution the engineer defines. They likely work in a collaborative environment (i.e. scrum team) and are encouraged to bring ideas for improvement to the table with the engineer. A software developer also does assembly testing of their work before passing it to more extensive testing of the larger functionality.
It is a responsibility of both roles to stay on top of the latest trends in technology to stay relevant and drive towards improvements.
Drew Peake, MSME, M.Eng., MBA, PE, FNAFE, DEE, CIH, CSP
The difference between software engineers and software developers is that the engineers need to be able to solve the underlying problems that require software. For example, fluid and heat flow models require more than coding expertise.
Software developers are critically important to our economy. Unlike engineering, becoming a software developer is an easier path. A four-year college degree is an important qualification for most employers. Knowing how to use computer code to make information useful is a critical success factor regardless of how that skill is developed. Good software developers are paid well also.
Drew recommends the following next steps:
There are similarities and differences between software developer and software engineer, may be a hypothetical situation will explain this better.
The short version:
Anyone who can write functional software that solves a problem could be seens as a software developer whereas software engineer requires more knowledge in other different areas including but not limited to:
1. Know there are many ways of solving the same problem and each of them have pros and cons. Be able to find the optimal solution given the time/budget/scale/people constraints.
2. Understanding the domain knowledge(Financial, Logistics, Food Industry, etc ) your software is serving and applying them to achieve the optimal solution in this domain.
3. Work in a team and communicate the ideas across people with different backgrounds (Product manager, project manager, customer and of course other software engineers, etc)
The long version:
Let's tell a story of Amy, who is interested in programming and learn how to write program by herself.
She found that there is no platform for college students to connect to each other and she decide to write on her own. After two weeks of sleepless days and nights she launched her first version of a website that college students can signup and post ideas, pictures and people could find the other people they know by name and comment on their post or follow them if they are really interested in their activity.
Things goes pretty well while some of her close friends and friends of friends signed up and she is happy with her work. At this point, she is a pretty good developer that design the system and write it all by her own from the things she learned.
One day, out of nowhere, the website became popular and the students from thousands of other colleges knows about this website and they want to get on it. Suddenly there are millions of people signing up, post ideas, pictures, find people they like and comment on their post and following them. The little server that Amy used out of her old laptop is not able to handle that many network traffic simultaneously and people start to not able to login, post ideas and comment due to the limited capacity of the little server.
Luckily, her close friends also likes programming and some of them even work as a professional software engineer and offer to help. Now she got a team with 6 people. They needs to solve the scaling challenge of her website. And each of them taking on the challenge of a specific area (Sign up, login, create post, comment post, search for a particular person, following a particular person, etc). Now they need to communicate with each other about the progress they made on each specific area and how each component work together as a seamless product to the students.
It is the same website with the same functionality but now there are also challenges that wasn't there before which you probably won't learn from a college CS degree or online programming class.
1. How do you handle the millions of request coming in and make sure no one's request is rejected and have a bad experience?
2. Once all the request are taken in, how do you make sure the order of those events are maintained so people have a real representation of the timeline of all the comments people making if its a hot topic?
3. As more people are joining and more comments are made, the database that store all those information took longer and longer to find the information you need as there are more things to search from everyday goes by, how do you make sure people have the same experience as they did before.
The main functionality sounds a lot like Facebook and sometimes you have to wonder why does it need 60,000+ full-time employees to building and maintaining a website (Including phone app and other side projects).
Hope this helps clear things up,
I'll suggest that the difference may or may not be important for you right now. If you have an interest in the technology / computer-science pathway, then great! There will be actually so many different role options you might consider, it is possibly hard to imagine. You can actual write code. You can design software packages to fit "user requirements". You can work in sales or marketing or business development for a software or technology company. I'm not sure what age or level of schooling, but would just suggest to follow your natural interests - be curious and constantly learning and be somewhat broad in the subjects and areas you pursue. This all should give you a solid and diverse foundation as you further develop your schooling and coursework towards a potential career in computers / technology.
In some parts of the world, such as Canada, and even in several non-software engineering fields in the US, the title "engineer" implies a licensing board and examination process, and you can't call yourself an engineer unless you've taken courses in mathematics, physics and/or chemistry, passed an exam, and studied under an engineer who is leading your team at work, sometimes for several years. This is not true of software engineering.
Whether I call myself a "software engineer" or a "software developer" depends only on the term that my company uses to describe my work. I do NOT think it is true that a software engineer is more focused on architecture/system design and a software developer is more focused on coding. To be successful in a role with either title involves both architecture and coding.