Software Engineering Need not be Difficult


"Progress in scientific research is dependent on the quality and accessibility of software at all levels" (the overall premise of the workshop). We argue that true progress depends on embracing the best traditional–and emergent– practices in software engineering, especially agile practices that intersect with the tradition of software engineering. Software engineering as practiced today is more than the stereotypical monolithic lifecycle processes (e.g. waterfall, spiral, etc.) that historically have impeded progress for small/medium sized development efforts. In addition, the discipline and practice of software engineering includes software quality (with an established tradition of software metrics). Software processes can be pragmatic and use best features/practices of various models without impeding developer productivity. The embracement of these practices may also be important to prevent a brain drain of sorts, as students are increasingly eschewing traditional scientific/computation science research in favor of industry opportunities, where they can literally apply what they have learned in software development courses where pragmatic software engineering practices (e.g. test-driven design, RESTful architecture, etc.) are already prevalent."