13.07.2015 Views

Software Engineering for Internet Applications - Student Community

Software Engineering for Internet Applications - Student Community

Software Engineering for Internet Applications - Student Community

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

300always been written by programmers who were willing tomake an extra ef<strong>for</strong>t7. a professional programmer teaches face-to-face; we'venot found a substitute <strong>for</strong> face-to-face interaction so asoftware engineering professional should teach fellowworkers via code review, teach short overview lectures tolarge audiences, and help teach multi-week coursesCould one create an organization where programmers can excelalong these seven dimensions? In a previous life, the authors did justthis! We created a free open-source toolkit <strong>for</strong> building <strong>Internet</strong>applications, i.e., something to save customers the agony of doingwhat you've just spent all semester doing (building an applicationfrom scratch). Here's how we worked toward the previously statedobjectives:1. committing to attack the hardest problems <strong>for</strong> a widerange of computer users; niche software products areeasy and profitable to build but most of the programmers onsuch a product are putting in the 10,000th feature. Ourcompany simultaneously attacked the problems of publiconline community, B2B ecommerce, B2C ecommerce,cooperative work inside an organization, cooperative workacross organizations, running a university, accounting andpersonnel (HR) <strong>for</strong> a services company, etc. This gave ourprogrammers plenty of room to grow.2. staying lean on the sales, account management, userinterface, and user experience specialists; aprogramming team was in direct contact with the <strong>Internet</strong>service operator and oftentimes with end-users. Ourprogrammers had a lot of control over and responsibility <strong>for</strong>the end-user experience.3. hiring good people and paying them well; it is onlypossible to build a high-quality system if one has highqualitycolleagues. Despite a tough late 1990s recruitingmarket we limited ourselves to hiring people who haddemonstrated an ability to produce high-quality code on atrio of problem sets (originally developed <strong>for</strong> this course'spredecessor at MIT).4. giving little respect to our old code and not striving <strong>for</strong>compatibility with too many substrate systems; we letour programmers build their professional reputation <strong>for</strong>innovation rather than become embroiled in worrying aboutwhether a new thing will inconvenience legacy users (we• reader -- likes the travel stories like Travels with Samanthaand viewing photographs but does not want to takephotographs him or herselfA final way of dividing users that may be useful is by how theyconnect. In the case of photo.net it is easy to envision the Webbrowser user. This user is uploading and downloading photos,participating in discussions, reading tutorials, shopping <strong>for</strong>equipment, etc. The same person may connect via a mobile phone inwhich case he or she becomes a mobile user. If the mobile user is inthe middle of a photographic project we want to provide in<strong>for</strong>mationabout nearby camera shops, processing labs, repair shops, time ofsunset, good locations, and other useful data. If the mobile user isconnecting <strong>for</strong> social purposes we need to think about what arepractical ways <strong>for</strong> a person on a mobile phone to participate in anonline community. Our engineering challenge is similar <strong>for</strong> thetelephone user.3.2 Usage ScenariosFor each class of user you should write down a rough idea of what aperson in this class would get from your new service. You may wantto hint at page flow.Example: novice photographer shopper at photo.netThe novice should start by reading a bunch of carefully authoredcamera buying advice articles and then reviews of specific cameras.Much of the best shopping advice is contained in question-andanswerexchanges within the discussion <strong>for</strong>ums so editors will need away to pick out and point to the best threads in the <strong>for</strong>um archives.After our user has read all of this stuff, it would be ideal if he or shecould be directed into a Q&A <strong>for</strong>um where "here's what I've decidedto buy; what do you think?" questions are welcomed. That could beimplemented as an explicitly social shopping system with one column<strong>for</strong> responses from other readers and an adjacent column <strong>for</strong> bidsfrom camera shops.Example: site-wide administrator at photo.netThe site-wide administrator should log in and see a page that givesthe pulse of the community with statistics on the number of newusers registered, the quantity of photos uploaded into the photosharing system, the activity in the discussion <strong>for</strong>ums, the relativeef<strong>for</strong>ts of the moderators (volunteers from the community). If thereare unbanned users who been responsible <strong>for</strong> an onerous amount ofmoderator work in deleting off-topic postings, etc., these should be49

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!