Remote-pairing

Set project destination point

You need to know where to go to accomplish your goals. Today I’ll set mine to shape my project journey and be clear about what needs to bet done yet at each point of the project timeline.

Flow

In the last post, I told you roughly how I think the project may look like, but since then I thought this over precisely and came up with some wireframes to share my concept with you. Let’s see what I created.

Scheduling

At the beginning, the website shows you the calendar view of scheduled all Pair Programming events for this week. As shown above you can either attach to existing event or create your own one. The description pop-up should be shown when you hover your mouse on the event you are curious about. When you decide to schedule a new one, you’ll be asked to define project name, describe it roughly, enumerate each applying technology tag and set exact location (or remote option). As you may have noticed I was inspired by Google Calendar – let’s follow the best 🙂 I really appreciate its usability and I hope I’ll manage to replicate it here.

Event view

Event view has few shapes – depending on who already attached to the event. Right after creation, there is only host available and the description of the project is provided. At this point, an interested user which searches for PP opportunities may join the session to enjoy it later on. I don’t know yet if I should implement workflow of accepting subscribers by the host or not – I have to think it over, but I will start without this enhancement.

When the event ends, there will be confirmation point to make sure the PP session really took its place. Based on that, the system will gratify users with reputation points (or won’t).

User view

As in almost every Web app with logging module, there will be user panel, where you can see user’s details, avatar, integrations he successfully set, events he participated in / he has planned and reputation he gained. Apart from points, I would like to display user’s most used technology tags (e.g. C#, ASP.NET etc.) and badges for various types of activity (like on StackOverflow). For example Host – for being host at the event, Doubtful – for canceling the event, PP devotee – for visiting this site daily for let’s say 2 weeks… and we can think of many more here, but the principle is to implement a mechanism to handle that.

All together now!

Flow - high resolution

The flow then looks like above, firstly you pick existing or schedule a new event. Then if you haven’t been logged in – the login page displays and you’ll be asked to log in with GitHub account. You are brought to event view afterward where you can see your partner contact details to make your session happen. There is project description displayed and action buttons to cancel the event and let your partner know beforehand if your plans changed.

Goal

My goal for that 3-months-contest is to ship the product. I’ll do my best to avoid ending this project up in sandbox-like creature where tons of brand-new frameworks are put in just for fun. What I learned from one of my wise teacher on studies is the importance of business value delivery attitude so the user can actually benefit from our efforts. And this is what I want to do here. The application may not have all of the mentioned integrations, may not have my dreamt badges or fancy style, but I truly want to ship that piece of software. When I’ll see that at least two strangers have paired for PP thanks to my website, I’d be more than happy for it.

Crucial stuff

Having above in mind, I need to (at least) do:

  • calendar functionality to allow users scheduling
  • OAuth to log in to service
  • User and Event View to present basic information

Additionally database is something that is necessary and takes a time to design it nicely – this is what I have to remember about as well.

Further development

There are few ideas already that may have extended the fundamental approach, however, at this point, I will direct my focus to essential functionality. Nevertheless, it is a rational idea to have possible extensions in mind during architectural design, so I will share my ideas here for reference.

  • mail notifications when your event starts shortly / somebody attached to your event / you have unapproved passed event etc.
  • logging with other services (StackOverflow, Facebook, Google)
  • user recommendations when you are alone in the event
  • integration with Hangouts/Skype/ScreenHero and other streaming services
  • the educational part of the website – why PP is good, what can you learn, testimonials

So! That’s all for today. I hope I stated my goals clearly for you. I consider it very important to set such project roadmap – even for relatively small side projects – to always be sure what needs to be done and if actual product concept is at least similar to what we wanted to create at the beginning. 🙂

What do you think about this all? Will it fly? Would you like to use such application? I’d be glad to see your comments.

In upcoming posts, we’ll set up the project with its environment (e.g. with Travis) and try to understand OAuth authorization protocol so we could make use of it later.

Thanks!

Somewhat experienced programmer who tries to find intrinsic meaning in each act he does. Increasingly builds his courage to let his life be driven by passion. Currently giving blogging a whirl.

2 thoughts on “Set project destination point”

  1. Great Post! Now your idea has been revealed !

    About calendar – some time ago I’ve researched this topic for professional work- you could also create a sub-calendar for each Google-authenticated person and keep information about events that this people are added in their-own-calendar as well.

    Only thing that’s left – spread the idea among others 🙂

    1. Thanks for this valuable calendar suggestion, I will keep it in mind!
      Yeah, spreading will be difficult, but luckily I need to create some code that is worth sharing before, so one moment, please 🙂
      Cheers!

Leave a Reply

Your email address will not be published. Required fields are marked *