Yesterday I signed up for an online class via EdX. EdX is a learning site where MIT, Harvard, and Berkeley have come together to offer free class on various topics. It’s basically like watching a classroom lecture online. One of the downsides to this though, is that the lecture is more based for the in-class physical students and not the online students. The good thing, however, is that both types of students have the same homeworks that they need to complete. Online students go through quizzes as well. The course I am taking is Software as a Service from BerkeleyX. This course will basically go over developing software using Agile techniques and using the framework of Ruby on Rails. I’ve been wanting to get some training in Ruby on Rails for a while so this is definitely a good opportunity for me. Lectures for this class come out every week and take up about two hours every week.
This week was mostly an introduction into using software as a service and different software development methodologies. The methodology that we will be learning in this class is called Agile. Agile development is in contrast to Waterfall development. The Waterfall life cycle is more rigid and it has to go through the following phases: writing requirements, designing the architecture, developing the code, verifying the code, and operating and maintaining the product. Each phase of this requires extensive documentation as well. This method is better when the specification of the project doesn’t change that much. If you have a project where the specs can change quickly, it is better to follow an Agile methodology. The Agile Manifesto values four items: individual/interactions over processes/tools, working software over documentation, customer collaboration over contract negotiation, and responding to change over following a plan. This course also seeks to teach us to follow test-driven development. This means that we write the test before we write the code. The second lecture goes more in depth into cloud computing and what infrastructure is required for SaaS (Software as a Service). The three things that are critical to this architecture are: communication (between the clients and the service), scalability (software can grow to meet demand as user base grows), and dependability (service is available almost all the time). Over the next five weeks, I’ll have a post each week about what I’ve learned in this class. Next Friday we will be learning Ruby!