While the terms “software engineering” and “software development” are used by many interchangeably, I do use them in specific ways. For some, the difference might be subtle, but for me there is more to it and this difference is of great importance when hiring for different kinds of software projects. Depending on your project and budget, you will have to make trade-off decisions on the level of skills that are needed.
Software engineering applies engineering, design, and scientific methods to the practice of building software. Software engineers have a specific state of mind and typically have a strong background in CS, mathematics, and engineering principles. They put great emphasis on software and system design and architecture, and on efficient, effective, scalable, and maintainable software. They tend to spend time ahead of coding complex software on investigation and design with the goal of understanding low-level details such as data structures and algorithms, the proper programming language and approach to use, and projections and needs for proper network, compute and storage needs that will have significant impacts on speed, response and latency times. They also understand related risks and trade-off considerations, and offer alternate designs and proposals. They typically also are strong software developers.
Software development or coding focuses more on pure writing and maintaining of software applications that meets business requirements. Software developers have a strong background on specific areas such as programming languages and frameworks, and databases, but not necessarily care about the software engineering and CS aspects that I described above. I have found that it is much harder to have them spend time on the software engineering practices that I described above, as their main focus and what they care most about is on pure coding.
So I described the two approaches and skill sets for building software, and depending on the level of system and software complexity, you may decide to hire a software engineer versus a software developer.
/carlos enrique