Skip to content

froyvalencia/newsRank

 
 

Repository files navigation

newsRank

The development of News Rank was an extremely enjoyable and rewarding introduction to software engineering and project management. News Rank is a reliability site intended to provide users feedback on the accuracy of the news source, i.e. a solution to the controversial topic of fake news spread on social media. The inspiration for this project came from the new trend of social media sites like Snapchat and Twitter curating; the project will fact check these dubious new sources and provide a reliable or unreliable label. Facebook, on the other hand, is now partners with fact-checking organizations and also relying on users to flag stories. The issue with these current solutions is that they are labor intensive. News Rank while not a perfect solution will allow the user to filter out news on their own as opposed receiving curated news without the need for thousands manual reviewers.

For the development of News Rank, we followed Scrum and agile software methodologies for development. The group of 5 was broken down into Product Owner (myself), Lead Developer (myself), Scrum Master (rotational for each of the 3 sprints), and development and design team. In our specific approach, we broke down our development and design team into subgroups; I had 2 members work on frontend UI and UX design, I worked on the backend implementation of the logic for the machine learning aspect as well as feature selection and data mining articles for the purpose of training the classifier. I had 1 member work on external and internal tools to interact with our application such as managing the GitHub repository, external search and setting up a hosting server (Heroku). This approach worked very well for us as we were using the Model View Controller Framework Django, which is known for being highly abstracted and allows for the functionality of the app to be modularized.

In regards to the specific role of product owner for this project, some of the duties I was involved in included creating a prioritized wish list of product features (product backlog) and participating in sprint planning. During each sprint plan meeting, we select features from product backlog and decide how to implement these features, as well as assign weights based on the work and effort required. I chose the tools to be used, as well as framework selection and assigning users to tasks based on their strengths. Tools we used during development included Slack (communication), GitHub (version control), zube (scrum board, burnup, and burndown charts), and Heroku (cloud hosting service).

During the process we encountered techniques that worked extremely well, a specific instance was our switch to pair programming in sprint 2. Pair programming is an agile software development technique that has two programmers work in unison at one computer. A key benefit of pair programming was that it allowed me to assist some of the more junior developers on our team. Another benefit was the team as a unit had a better understanding of the code base, where if in the issue came up one of 2 developers could help communicate or resolve the issue. We did not use pair programming much during the first sprint and what we saw was that certain tasks for the frontend and backend tended to be inter-reliant on each other so it was difficult to test functionality.

During the process, we also encountered things that did not work as efficiently as I would have liked. Some of these included our research phase taking longer than expected which caused a delay in starting development of our software. The delay was also in part due to the steep learning curve faced by our development team, as the majority of the team had very little experience with the Django framework, the natural language toolkit, or machine learning classification algorithms. In regards to our scrum meetings and collaborative environment, we had one member who was using Skype for meetings as he lived 3 hours away; while this was an adequate solution for occasional meetings and communicating, his specific productivity during sprint 3 was much higher when we worked together side by side.

My favorite aspect of the scrum methodology was the collaborative environment it created for our development team. Since we could only meet 3 times a week for scrum, we would have additional daily scrums over slack. For a team of 5 members, we were surprisingly flexible in terms of scheduling meetings, we maintained a group calendar with everyone’s work and time commitments blocked off. This allowed us to know when other members were available and allowed us to set a meeting time easily. This cut the time spent communicating directly and planning meetings times drastically.

The project as a whole was an extremely great experience in project management and full stack development. A great lesson I learned was to build core functionalities first. For example, one feature I implemented relied on data gathered from our articles text extraction and was then used to asynchronously gather sentiment analysis from Twitter users on a particular subject; we saw that this feature did not increase the reliability or accuracy of our main product and was unnecessary in the long run.

Releases

No releases published

Packages

No packages published

Languages

  • CSS 45.3%
  • JavaScript 41.6%
  • Python 11.0%
  • HTML 2.1%