- This post has 785 words.
- Estimated read time is 3.74 minute(s).
We asked ChatGPT to use all it’s training data and do an analysis to determine in which discipline Software Development falls.Here’s the results:
Analyzing software development in comparison to science, engineering, and trade craft disciplines is a complex task because software development encompasses aspects of all these fields. Below is a detailed analysis of software development in comparison to science, engineering, and trade craft disciplines, considering various properties of each discipline.
Table of Disciplines Considered and Properties Analyzed:
|Science||Empirical research, systematic study, theoretical framework, experimentation, peer review, established scientific laws.|
|Engineering||Application of scientific principles, design and analysis, problem-solving, project management, standards, ethics.|
|Trade Craft||Skill-based knowledge, hands-on experience, apprenticeship, tradition, practical techniques, adaptability.|
|Software Development||Algorithmic design, coding, testing, debugging, version control, collaboration, agile methodologies, best practices.|
- Empirical Nature:
- Science: Relies heavily on empirical research and experimentation to formulate theories and validate hypotheses.
- Engineering: Applies scientific principles to design and create practical solutions, ensuring that these solutions are reliable and effective.
- Trade Craft: Based on hands-on experience and techniques passed down through generations, emphasizing skill mastery. Software Development: Involves experimental design during testing phases, making it similar to science. However, coding and design are more akin to engineering, and the iterative nature aligns with trade craft.
- Theoretical Framework:
- Science: Develops theoretical models to explain natural phenomena, often rooted in mathematics and abstract concepts.
- Engineering: Applies scientific theories to solve real-world problems, integrating theoretical knowledge with practical applications.
- Trade Craft: Lacks rigorous theoretical frameworks; skills are developed through practice and experience.
- Software Development: Involves theoretical aspects like algorithms and data structures, but also relies heavily on practical implementation, making it a blend of theory and practice.
- Problem-Solving Approach:
- Science: Focuses on understanding and explaining natural phenomena through observation, experimentation, and analysis.
- Engineering: Applies scientific knowledge to develop solutions for specific problems, considering constraints like cost and resources.
- Trade Craft: Relies on practical techniques and intuition, emphasizing efficient solutions to common problems.
- Software Development: Involves problem-solving through algorithmic design and code optimization, akin to engineering, but also relies on creative and practical solutions, resembling trade craft.
- Tools and Techniques:
- Science: Utilizes specialized instruments and methods for experimentation and data analysis.
- Engineering: Utilizes design tools, simulation software, and methodologies like CAD for product development.
- Trade Craft: Utilizes specialized tools and techniques passed down through generations, often involving manual skills. Software Development: Involves various tools such as integrated development environments (IDEs), version control systems, and debugging tools, emphasizing a mix of traditional and modern techniques.
Software development exhibits characteristics of all three disciplines: science, engineering, and trade craft. It combines the theoretical foundations of computer science (akin to science) with the practical application of algorithms and data structures (akin to engineering). Additionally, software development relies on hands-on experience, creative problem-solving, and iterative techniques, aligning with trade craft principles.
Therefore, software development can be considered a hybrid discipline, integrating aspects of science, engineering, and trade craft. Its interdisciplinary nature allows it to draw upon various methodologies and techniques, making it a unique and evolving field.
So there you have it! Software Development doesn’t fit neatly into any single discipline. It is a hybrid of multiple disciplines and uses techniques from all. Those who claim SD is a Science, are correct. Those who claim SD is engineering, are correct, and those who claim SD is a trade craft are also correct. It is all these things and more! Anyone who says it is just one of these things has a very narrow view, and that narrow view may come from seeing software development from a very narrow perspective, or a narrow range of experiences in software development.
The controversy over where software development fits into large disciplines has raged on for decades. ChatGPT isn’t the first to claim that software development is an amalgam of various disciplines, others have postulated this position and with evidence to support their position. It’s time we as an industry realize that software development is not a pure science, engineering, or craft discipline, and therefore, our interviews, skill assessments, and practices must be uniquely developed to suit our unique discipline. Furthermore, the skill we test new hires for must be uniquely shaped to the positions they will fill and the portion of the industry we service. Software development doesn’t fit cleanly into any one discipline because it is many different unique disciplines!
- Sommerville, Ian. Software Engineering. Addison-Wesley, 2016.
- Pressman, Roger S. Software Engineering: A Practitioner’s Approach. McGraw-Hill, 2014.
- IEEE Computer Society. “Software Engineering Body of Knowledge (SWEBOK).” https://www.computer.org/education/bodies-of-knowledge/software-engineering
- Brooks, Frederick P. The Mythical Man-Month: Essays on Software Engineering. Addison-Wesley, 1995.