Skip to content

Instantly share code, notes, and snippets.

@irissilvermoon
Forked from ryansobol/final_project.md
Last active December 18, 2015 08:29
Show Gist options
  • Save irissilvermoon/5754360 to your computer and use it in GitHub Desktop.
Save irissilvermoon/5754360 to your computer and use it in GitHub Desktop.

Deliverables

What I need from you is the following:

These are due Tuesday June 11th by the end of the day.

Grading Criteria

When I look at your final project, here's what I'm going to ask myself.

1. How has your understanding of Ruby on Rails grown?

I feel like all my learning over the last several months has just blurred into itself. Overarchingly, its very clear there is still an immense amount to learn. Over the past several months I have spent time learning javascript and jquery, improved my CSS and HTML, implemented several of the features gone over in the videos such as the Better Errors gem and brakeman. I have a better understanding of SQL and how to use it. In adding new features to my app I also had a review of building controllers from scratch several times, thus learning how much more appropriate it is likely to be to build from scratch vs. using a scaffold (many of my new controllers do not use every part of CRUD nor do they need to). I've learned how one seemingly simple change such as adding the ability for users to have usernames can affect your entire application without you realizing. I continue to learn how important it is to write tests for your app, case in point on this is that active admin seems to no longer work and its the one part of my app that wasn't tested (i did not implement this feature). Since I've rarely used it I'm not sure when it broke and because there are no tests I'm not sure at what point in the quarter (or before!) it broke. Including testing in my app also alternately helped me to find where I'd introduced a bug into my code, where I had to then use git bisect to go back and find where the bug was introduced which helped me find where I needed to fix it.

Probably the biggest space where I've grown is in learning some Javascript and JQuery, prior to that I really only had experience with Ruby, html and CSS. So its exciting to add another language to my repertoire (though i continue to have a lot to learn).

Your project deliverables should demonstrate to me what you've learned as a result from taking this course. Perhaps you plowed through the course with minimal speed bumps? Or perhaps you had to shore up your Ruby on Rails fundamentals before you could tackle new challenges? Where ever you fall on this spectrum, it's critical that you communicate to me how you've grown.

2. What features did you implement?

I was able to get through a significant number of features I wanted to for this class.

  • I added profiles to users along with usernames. When a user signs up with or is invited a profile is automatically included in their sign up. If they have been invited the user will automatically be given a unique username generated from the first part of their email address. User profiles now include ability to invite new users, view who is watching their lists and who's lists they have permission to watch.

  • error with previous facebook logins fixed, you can now login and sign up via facebook (turned out I just had sandbox mode on)

  • users can delete users that they have invited to watch them and stop watching those they have been given permission to watch

  • Users can mark items as purchased, only users who have purchased an item can undo a purchase.

  • added pagination

  • redid layout. While I didn't get to use the foundation gem for this, what i did do was choose a different bootswatch theme and create a grid of wish lists and items myself and changed the styling on several buttons.

  • if a user enters a url for an item rather than having to go back and edit the item to choose an image, a window will automatically pop up and allow the user to choose an image. Each time the user changes the url they can also change the image or if they click on the image box they can choose a new image that way as well.

The things I was not able to get to was setting up a notification system and allowing users to reorder their lists by dragging and dropping into a new order. Additionally users also still need to enter most information by hand.

We discussed many programming techniques and Ruby gems throughout this course. I don't expect your app to implement every single one. However, I do expect your app to leverage a variety of techniques and gems in fun or unique or interesting ways.

3. How is your code organized?

Your future employer (and future self) will expect your code to be well organized. I'll be looking for the following:

  • Data persistence logic should be in model classes.
  • View logic should be in view templates.
  • Glue logic should be in controller actions.
  • Shared logic should be in helper or custom classes.
  • Configuration logic should be in configuration files.

4. How correct is your code?

Bugs happen, but I shouldn't encounter any show-stopping issues just by using your app. I recommend asking your parter, your kids, your friends, your parents, a stranger off the street, etc. to play with your app before submitting it for grading.

Test suites are an awesome tool as well. Just be sure you don't spend too much time wrestling with test code.

5. What challenges have you overcome?

I don't expect everything to go perfectly for you -- both technically and non-technically. But when you get knocked down, it's important to get back up. So it's crutial that I understand the context on how your project was shaped.

The two biggest challanges I had over this course was learning Javascript and jQuery and usernames. Javascript and jQuery because it was an entirely new language, only my second language I've learned to date so that was a huge thing to overcome. I by no means think I am an expert, but I know slightly more than I did before the class started and enough to make a few things move around the page!

the second challenge, the usernames didn't seem like it would be an issue at first. Overcoming this was a lesson in what happens when you have a piece of your app that interacts with just about every part of the app. To date most of the pieces of my app have been relatively contained. This was a huge part, where I had to figure out how to add usernames to users already in the system, be able to allow users to invite people and generate a username based on that invitation that also doesn't mess with users who lose their passwords (which for awhile also generated a new username along with the new password).

Conclusion

I realize it's stressful when you think about your grade for the course being based solely on a final project. Don't freak out. The course is pass / fail. And there are varying degrees of passing. :P

The project is due by the end of the day on Tuesday June 11th. At the time of writing, that's 12 days, or about 300 hours, from now. Also, you started your project 8 weeks ago. And most of you have been working diligently on it during class and at home.

Just like a real-world project, it's time to step up and deliver.

Also, keep in mind that I want you to pass the course. So ask me questions, schedule office hours, and ping Trevor and me if you get stuck. Communicate and you'll do just fine.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment