This class has been a great one to take right before our capstone since it teaches and has us exercise best practices in software engineering. For example, the planning stage of any software development lifecycle is critical because it involves capturing what the stakeholders want–how to build the right thing and how to build it right. During my time at Qualcomm, I followed a Waterfall approach to my intern project and spent a good two weeks on the planning process. In this class, I was able to actively practice Agile with my group members, which involved a more rapid, but continuously iterative planning (and refining) stage.
Another great skill we exercised in this class is communication. Communication is not only important when it comes to soliciting user stories/requirements, but during the development phase among team members. When working on related parts of a microservice or even in a monolith, it is important to communicate what you are working on since it may affect what another teammate is working on. In addition to this, team members may have ideas for how you can approach a problem you are attempting to solve–but they would have no way of offering help if they never know what you are working on.
While “microservices” has definitely been a big buzz word recently, I had a vague understanding of what they were before this class. Now I understand that it isn’t a “silver bullet” and even new projects should start out as monoliths before the project is well-defined and easy to compartmentalize. While developing our final project with my group members, I definitely recognize that there are some pieces on the “front-end” of our project that could be further extracted out as microservices. For example, the front-end allows us to search for restaurants by utilizing the Bing Maps API and the Zomato API. We also include our own schema to store order details. The ordering system could be extracted out as its own microservices separate from the restaurant lookup system. However, this was not clear until we already had several iterations of a working prototype completed.
I was very excited to use Springboot in this class because it seems to be a popular framework in web development careers. Currently I am interning at a web development firm using primarily PHP and Drupal (though I’m on track to become an API Engineer and currently training on Apigee). However, I am eager to learn more web frameworks to open up even more opportunities in the future. This class pushed me to research Springboot’s documentation and community to learn how to implement things we didn’t cover in the scant four weeks before we began working on our final project. This, too, was an opportunity to exercise real-world skills as no one enters a job as a full expert the entire technology stack.
Finally, by exposing us to a longer term final project that spanned the latter half of the class, I believe I became better at delegating tasks. In most of our classes, we either have individual assignments or a short week-long group project. This puts diligent students in the habit of doing much of the work themselves, especially if there is a tight deadline. However, by giving us a longer span of time to interact and work together, I believe it was easier to involve everyone in the development process.