rails-girls-summer-of-code / projects-2014

8 stars 1 forks source link

Proposal #16: RailsNews Example Application #17

Open DanielKehoe opened 10 years ago

DanielKehoe commented 10 years ago

My name is Daniel Kehoe and I am the founder of RailsApps, an open source project that produces example applications and tools to build starter apps.

Last year I had the honor and privilege of mentoring a RGSoC team. I learned a lot about what is required for a RGSoC project to deliver deployable code, given that time is limited and team members are new to Rails. This year I have in mind a project that is structured to maximize the learning opportunity for the RGSoC team as well as increase the likelihood of delivering genuine value to the open source project and the larger Rails community.

I'm calling the project "RailsNews" and it will be a site for the Rails community like Hacker News or Reddit. When deployed, the application will be a link aggregator that lets visitors submit links for interesting blog posts or other resources, add comments, and vote for submissions that deserve attention. The site has potential value for the Rails community, providing a focus on Rails-related resources that can't be found on Hacker News and Reddit.

The goal will be to create an example application that Rails developers can easily adapt for use as a link aggregator for any community. The completed example application will be released and maintained as one of the open source RailsApps example applications. The technical requirements are not complex and can be implemented by a new Rails developer with only a few months experience, with the assistance of a coach.

I intend to structure the project so that the RGSoC team can make an immediate contribution without any significant Rails development experience, with the team taking on increasing responsibility as the team's skill level advances over the summer.

Before the project begins, I will expect the team to do the "pre-work" of reading my book for beginners, Learn Ruby on Rails, and building the book's tutorial application, which will give the team a conceptual foundation and overview of the Rails development process.

At the outset of the project, the team will develop a specification for the application by analyzing similar websites such as Hacker News, Reddit, and Lobste.rs, identifying essential features, and writing user stories. At this stage, the goal is for the RGSoC team to approach the project as a product owner and experience the process of producing a specification based on personas and use cases. The team will step into a project management role by breaking the user stories down into features and scenarios and setting up the Trello task management application as a Kanban-style to-do list to track progress on implementing features. At this point, the RGSoC team will see the "big picture" of the software development process but will not yet write Rails code.

With the help of their coaches, and studying the RSpec QuickStart Guide I've written, the RGSoC team will next explore the process of writing integration tests using the RSpec text framework. They will demonstrate their understanding of RSpec by writing simple integration tests for an existing RailsApps example application. This is an opportunity for the team to experience the Behavior-Driven Development process, moving from product management to test development.

At this point, about two weeks into the project, the RGSoC team will begin assigning features for development to an experienced developer on the RailsApps team. The RGSoC team will ask the experienced developer to implement a feature, examine the code that is delivered, and then observe as their coaches conduct a code review of the developer's implementation. The RGSoC team will take notes and write a descriptive "walk-through" of the implementation, explaining each line of code. This exercise serves two purposes. First, it is an opportunity for the team to identify and understand any Rails or Ruby code they haven't encountered before. Second, the walk-through will serve as documentation for future learners who examine the example application.

The RGSoC team will continue with this process of assigning features for implementation by an experienced developer, reviewing the code with their coaches, and documenting the implementation. When the RGSoC team feels confident, the team members will begin implementing features themselves, getting code review from their coaches, and continuing to document the implementation. As the RGSoC team gains confidence over the summer, they will take on more of the responsibility of implementing features. Given the scope of the project, it is likely that both the RGSoC team and the participating RailsApps developer will work in tandem through the end of the summer to bring the application to completion. The RGSoC team will be responsible to keep the project on track and report on progress, writing integration tests to verify that all the features have been implemented as specified. It is my hope that the application will be close to completion by the end of the summer so the team can participate in the actual launch of the application as a useful website for the Rails community.

I believe this structured approach will increase the likelihood of delivering an application that meets the goals of the RailsApps project, which is to release excellent example applications that are models for any developer to learn from. Given that the RGSoC team begins with inexperience, it is practical to begin by learning about product management and requirements analysis, then progress to examining an implementation that an experienced developer delivers, also participating in code review with coaches, and then transitioning to active development as the team gains confidence and experience. I believe this approach will give the team the best opportunity to participate in professional software development, making a practical and constructive contribution to the open source project while developing the team members' skills as managers, testers, and software engineers, as well as Rails coders.

monikabu commented 10 years ago

Hi, my pair and I are very interested to work on this project and we would love to be a part of it!!! We've already spoken to some coaches and two of them are willing to help us during the summer and share their working space with us.

ghost commented 10 years ago

Yes we are! Thank you Daniel for your proposal - it's great!

KatiRG commented 10 years ago

Wow, Daniel, your structured approach is fantastic! It's very systematic and breaks down the learning curve step-by-step. Thanks for the thorough plan, my pair and I would love to apply.

Akanksha08 commented 10 years ago

Hi, the idea seems good. Me and my pair would love to work on it.