Before starting this course, much of my understanding about software engineering came from my summer internship with Qualcomm and my current internship at Achieve Internet. Software engineering is a way of applying engineering principles to software development in order to maximize software’s business value. There are several methods of doing this, as our text explains.
During my time at Qualcomm, I helped manage a product being developed by a business intelligence team in Hyderabad, India. We used Agile to develop product stories that would result in incremental prototypes.
But I also gained exposure to the Waterfall software development cycle while at Qualcomm in developing my own project — a RESTful web API. My mentor and I chose this development cycle so I could a) be exposed to multiple software development lifecycle methods and b) be able to take a good 6-8 weeks to scope out my project and develop a first working prototype (this choice was due to the length of my internship).
Since I’ve started interning at Achieve Internet, I have also been exposed to the Spiral development model and how the various people at Achieve (Project Manager, DevOps engineer, developers, etc) play a role at different points of this model.
While my definition of software engineering hasn’t changed since reading the text, I appreciate the solidification and verification of my existing knowledge and experience. I am looking forward to this class!