As a grade 10 high-school dropout with no formal eduction, who decided to skip school and jump into a career in development, I find my last two careers, the first question they had for me is, What is the difference between a software developer and software engineer? - A question, at it's forefront, that struck me off guard, and helped me appreciate the world of development.
At first, my thought process was to answer with a naive question, "Is there really a difference between a developer and engineer?" - This was struck with hardship from the potential employer at the offset, and indicated there are differences, they asked me to, at a high level, name 10 key differences between a developer and an engineer.
I know what you're thinking, how am I supposed to answer that as a grade 10 dropout? It's a difficult question to answer, so I had a think about it, and here's what I found:
- someone who knows code to any degree
- someone who is able to understand to any degree the requirements and how they could implement it
- someone who is passionate about the code they're writing
- someone who isn't afraid to speak their mind
all of the aforementioned traits, in addition to...
- someone who can quickly and easily scope and understand requirements in depth
- someone who is able to fully digest and design the systems to be scalable within a reasonable technical capactiy
- someone who can speak fluently about the design decisions and principles to non-technical individuals and assist them in understanding the decisions and reasonable requirements made
- someone who, at the off-set, willing to, able to, and will interrupt the design or development process and raise concerns over practical and impractical development guidelines and decisions
- someone who, not only can determine how they can fix a problem or implement a feature, but can also determine how others can, and is willing to assist along the way
How would you define the difference, if any, between a software developer and software engineer?
Single Responsibility Principle (or SRP) is one of the most important concepts in software development. The main idea of this concept is: all pieces of software must have only a single responsibility.