Although I'm a programmer looking to explore social software patterns, I'm also interested in their psychological and sociological origins.
My proposed format is to limit each reply to ONE reading with a short summary of why it's important.
The idea is that we will then be able to see which particular readings are most important. Since community wiki posts don't count towards one's reputation, hopefully there won't be too many complaints.
I've read a few papers and a few books myself, so I'll get the conversation started...
Shirky: Community, Audiences, and Scale
A 2002 essay arguing that communities don't scale, since humans have a finite capacity for connections with other people, and that those connections are what make communities useful. I agree.
designing for the social web
Author Joshua Porter is a web designer so the writing has advice in how to design social web applications; however, there is plenty of psychological and sociological analysis here that leads up to the advice. You may also be interested in this NY Times article on ambient intimacy.
The Delicious Lesson
The Del.icio.us Lesson, from Bokardo, is that personal value precedes network value in social applications. In other words, you shouldn't expect your users to contribute meaningfully to the health of a group function. What you can and should do, is to assume that users will act in their own self-interest, and then try to learn from what they do. That derived information is what's useful to the group.
Anyway, that's what I take from it. There's also a bunch of talk about the merits of tagging in general, but the reason this reading is important is for the lesson outlined above.
The Lessons of Lucasfilm's Habitat
The principle developers of Habitat, a "multi-user online environment" write about their experiences and lessons learned. Habitat was a virtual community that can be thought of as a very early precursor to Second Life. In the paper, the authors declare some guidelines for social software, some of which are widely accepted today. Some of the guidelines, such as the assumption that bandwidth will always be a scarce resource, were prescient. The authors spend a lot of time trying to say, I think, that complexity in social software should come from the users, not the programmers.
In another feat of foresight, the authors warn administrators of social software to try to "work within the system". I've seen a good number of social apps get a lot of negative attention when they censored a user's action for reasons that seemed unjust. Flickr and Digg come immediately to mind. The authors might have recommended that the moderators of flickr and digg attempt to discourage unwanted behavior without pulling the adminstrator card and wiping out user content.
Like the LambdaMOO paper, there's an implicit warning against assuming any sort of higher-mindedness from the users of your software. Assume that online identities will display every baser behavior that offline humans do. The authors remind us that real people are behind those avatars.
There's also an extensive bibliography at the end of this paper, although the listed material is by now quite dated.
Shirky: A Group is Its Own Worst Enemy
In 2003, Clay Shirky (shirky.com) gave a speech at The O'Reilly Emerging Technology Conference about social software, and this article is essentially a transcript. Borrowing from Experiences in Groups by W.R. Bion, he begins by talking about ways groups, online and offline tend to self-destruct.
This is a wide-ranging article in which Shirky explains many of the typical problems in social software design, lists assumptions that designers of such software should make, and outlines solutions to common pitfalls.
Overall, it's a fantastic read. If you're thinking about writing some new social software offering, I suggest you read it periodically to stay on track.
Related
Does anyone have any evidence of TDD being used at any big technology companies - e.g. Apple, Microsoft, Facebook?
Perhaps there's someone that's worked in one of these big companies that can shed some light on how TDD is used there.
Plenty of evidence is here, I started a site just about that. WeDoTDD.com, hope you enjoy!
It's not only evidence, it's recent evidence and includes stories behind the teams doing it at those companies. The list will just keep growing so revist it often.
There has always been quite a few companies that TDD, you just didn't know about them. Well now everyone can discover this a little bit easier on our site.
Check out this paper
"Realizing quality improvement through test driven development: results and experiences of four industrial Teams"
http://www.msr-waypoint.net/en-us/groups/ese/nagappan_tdd.pdf
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 4 years ago.
Improve this question
As a front-end developer, I would like to develop nice and good usability web applications. However, normally developers are good at coding. So, I would ask how to get started with learning some UI design knowledge? What's your recommended books or courses for a newbie to learn? Basically for graphic design, fonts and colors etc etc.
As a UI/UX developer myself, graphic design techniques are questions related to Photoshop, Illustrator, color theory, typography, etc. Usability is related to UI/UX, coding and web architecture. Graphic design and web usability are two very distinctive fields.
What is User Experience Design? - Wiki article on UX
User Experience is any aspect of a person's interaction with a given
IT system, including the interface, graphics, industrial design,
physical interaction, and the manual.
What is graphic Design? - Wiki article on Graphic Design
"Graphic design is the art of communication, stylizing, and
problem-solving through the use of type and image."
Resources #Nathan provided are great, I would also add this to your reading arsenal, education and inspiration:
Open University classes
University of Washington - Visualization
MIT - Drawings & Numbers
USQ - Multimedia
Berkeley - Computer Graphics
Sites & Inspirations
OnePageLove
Responsive.ly
A List Apart
Awwwards
Css Tricks
Tuts plus
Can I use
As with any other skill set, to way to get better is practice, practice, practice. I would just keep building projects as case studies and learn the skill sets as you venture through different types of web applications.
Best of luck on this journey.
Books are good, but to stay upfront and get aware of what is happening the latest and what tools and techniques are in, I suggest you to actively participate on webistes like
Smashing Magazine,
Sitepoint &
Web design Ledger
to name a few, but top quality resources. To know more about the books, you can refer to
Apress Books for front end development
for start to ninja resources.
Hope this helps.
Build on the shoulders of those who have gone before. To be a great developer, you have to know your stuff. In the same way, to be a good designer requires understanding of some basic foundational guidelines. Some of it may seem pretty simple and tedious, but understanding the proper principles of typography, color theory, grid systems and so on can help you a lot. A few resources to get you going are:
Universal Principles of Design
The Elements of Typographic Design by Robert Bringhurst
Thinking with Type by Ellen Lupton
Grid Systems: Principles of Organizing Type by Kimberly Elam
The Design of Everyday Things by Donald Norman
Don't Make Me Think: A Common Sense Approach to Web Usability by Steve Krug
Microinteractions: Designing with Details by Dan Saffer
That list should generate it's own follow-on books / websites reading list for you.
Ask questions. Find some designers you really like and ask questions. Try to understand why they made the decisions they did. Most people are pretty willing to talk about their own work. Asking questions helps you to understand why designers use (or don't use) certain design principles in their work.
Actually design (and seek out constructive criticism.) Like anything you do in life, reading and learning can only take you so far. At some point, you have to start practicing. Find a small circle / community of more senior designers who can review your designers and give you some brutal, but constructive criticism. Your stuff will suck at first. Everyone's work does. Designers spend hours upon hours honing their talents and skills. Don't get discouraged by it. Just like anything you can gain mastery in, it takes time. Having people in your life who can give constructive feedback is a huge help.
Have a look at WebAwwards never let me down yet... Great selection and new websites added every day
I'm looking to find any articles/books on usability. I'd like to get a handle on best practices when designing a UI, this can be anything from which user controls are more intuitive to a new user, to how to phrase text that is displayed to the user to avoid confusing dialogs. I mainly do Windows desktop applications, but most usability standards, I assume, would stand true regardless of the platform.
As an example, here's an MSDN article about the Windows User Experience Guidelines:
http://msdn.microsoft.com/en-us/library/aa511258.aspx
Try reading this book: Don't Make Me Think. While it's focused on web usability it is applicable to all facets of UI design.
The Design of Everyday Things by Donald A. Norman is a standard book on general usability considerations that can be applied to just about everything in day-to-day life. It's not specifically about software, but it's worth it to read it.
Universal Principles of Design is a recommended textbook for my university's Engineering Methods of Software Usability course. Myself, and others who have taken this course, have found this book to be more useful than the required textbook. There appears to be an updated version, called Universal Principles of Design, Revised and Updated: 125 Ways to Enhance Usability, Influence Perception, Increase Appeal, Make Better Design Decisions, and Teach through Design, but I can't speak about that one.
Designing for People Who Have Better Things To Do With Their Lives
by Joel Spolsky (one of the guys behind this site)
when designing UI, please do consider accessibility as well. it's mostly relevant for web sites, but could also be applicable for rich client (desktop apps).
so, these links has a lot of info on the subject, though it's not pure usability info.
a good resource on usability and accessibility:
Design Guidelines for Electronic Publications, Multimedia and the Web
you might find this check list useful:
Checklist of Checkpoints for Web Content Accessibility Guidelines 1.0
and also this tool that will check your web site accessibility:
web aim
Designing Interfaces by Jenifer Tidwell is pretty good.
Well, a long-standing favorite specifically for user interface design is Alan Cooper's About Face. It should touch most important topics when designing Windows desktop applications.
Then there are also various UX patterns which are well-presented in Quince (needs Silverlight).
Jef Raskin's The Humane Interface is also rather good, but very radical in his ideas. Still, this book points out many fallacies in modern UI design. If you need to stick to the WIMP world, then following his suggestions might be a little hard as he tends to suggest to overthrow everything we're used to. But well-written and good for provoking thoughts, even if you don't follow all his advice.
As for books/articles on usability in general or on slightly different topics:
Jakob Nielsen's website useit.com. While not particularly fancy-designed it is a trove of thoughts and advice on usability in general.
Steve Krug's Don't Make Me Think. Web usability, but also a very good read.
Donald Norman's The Design of Everyday Things. Usability in general and has many pointers on how to think about usability without going into specific technologies. It's applicable to desktop application usability anyway, though.
Regarding articles, try Boxes and Arrows
Designing Visual Interfaces by Mullet and Sano provides a great foundation for different layout-related issues. Not a book on usability per se but still relevant, I'd say.
As for web resources, try:
useit.com: Jakob Nielsen's Website
Usable Web
A List Apart on usability
For book inspiration, see Suggested Readings in Human-Computer Interaction (HCI), User Interface (UI) Development, & Human Factors (HF) (and all the great answers in this thread).
My favorite usability blog contains very well-constructed, insightful and thoughtful posts, by David Hamill.
You can find his blog at goodusability.co.uk
Enjoy.
I read articles from http://ui-patterns.com/ and http://www.uxbooth.com/. Those have been helpful for me.
I would like to second uxbooth.com - we recently had an article published there which might be what you are looking for - check it out at http://www.uxbooth.com/blog/usability-testing-dont-guess-test/
usefulusability.com
is another good site, they regularly have good articles up there.
Oh, and another article we had published recently:
www.1stwebdesigner.com/development/usability-ux-pitfalls-howto-avoid/
I think this one provides some pretty good examples of issues that frequently pop up, and how to avoid them.
And if you are looking to run a simple usability test, what not check us out at IntuitionHQ.com
Good luck!
I want to add a "Community" section (Bulletin Board) to my website so everyone can communicate, but I don't know what I'm doing.
How would I go about adding this and which one offers the most documentation and support?
Whatever you do, make certain that you read the instructions on configuring your discussion software to protect you and your community for the worst parts of the internet: spam, spoofing, and abuse.
Make certain that you immediately change the admin password from the one that comes with the installation.
If you leave your communities wide open to all kinds of posting, harvesting, and general mis-use, you'll spend your days playing whack-a-mole with thousands of idiots. Develop your acceptable use policy, configure your boards to support it, then enforce it.
And if the software you are looking at doesn't support things like e-mail verification, moderation, abuse reporting, anti-spamming controls, etc., just keep looking.
Be prepared to spend time managing your community so that it doesn't become another one of the millions of web forums out there full of off topic posts that drive people away from your website.
I think what you needed is a forum software, there are tones of free and open source ones available on the net. DotNetNuke is a .NET one but can be expensive to host and phpBB is another popular choice and there are a lot of cheap hosting solutions.
is your site based on php/mysql or asp/sql? Chances are if you do not know where to even find tables, that you are not able to what you actually want.
HOWEVER, if it's php/mysql, i recommend Cool Php Scripts book. It covers creating sort of a community forum/message board.
As i said again, you are probably not going to do it alone, at least, without a long frustrating learning curve.
You can always post a job and someone would be more than willing to bid on it at elance or rentacoder or any other site of your choice
Wikipedia has a big honking list of forum software. Pick the one that best matches the programming language(s) you're familiar with, the features you need, etc.
This is what you need.
Edit: They don't offer a hosted version there. You can use this instead. It's hosted on it's own site, free, and doesn't require a download.
I find Vanilla to be a much better forum application that phpBB for reasons of aesthetics as well as extensibility. I have not seen/used it in a situation where many sub-forums were required, so depending on your scope it may not be the right choice, but for small-to-medium sized forums I'd suggest trying it first.
First, you need to choose a forum software that matchs your requirements.
Then, just follow the Installation Guide provided by the software you have choosen.
More information at Forum Software Reviews
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 9 years ago.
Improve this question
We are looking at hiring a software development project manager. His job is going to be concerned with running multiple dedicated project teams focused on delivery of software for external customers. He will also need to provide support to our business development unit and oversee post-implementations support of the aforementioned software. What level of hands on development experience should we expect from the applicants? Successful candidate is not expected to do any coding.
Not important. We should be focused on proven project management experience in software area.
None.
Some experience, exact technology does not matter.
Heavy experience, exact technology does not matter.
Some experience involving same acronyms as we use daily over here.
Heavy experience involving same acronyms as we use daily over here.
Some experience, mostly with technologies we do not use.
Heavy experience, mostly with technologies we do not use.
This question is regarding the best level and quality of required technical experience and is not concerned with any other skills and qualifications of a software project manager. Many thanks.
As with any position, you need to assess first and foremost what skills and experience you need on the team for you to be successful. Then hire to fill the gap for the skills that you do not already have on your team.
If you already have a team with strong technical and technical leadership skills then you don't need to hire someone who is likely to compete with the people you already have. If you are missing this, you probably want to hire a technical manager with some project planning and tracking skills.
Great project managers are those that are multidisciplinary - they are most successful where they can bridge the divide between the various stakeholders and team. The primary role of the project manager is to manage risk and facilitate communication and collaboration. As a minimum, you should look for someone that has proven experience in either your industry or with the technology space that you are playing in, otherwise they will be unable to gain the respect of the rest of the team and perform their primary role.
Which brings me to something else you should consider carefully - what is your culture? For example in a previous job, we had development leads that were very strong technically and wilful. Project managers were always relegated to second chair, and pretty much ended up as glorified MS Project admin. assistants. Anyone good did not stay long. What do you need to do to allow the type of skills you want to acquire for the team to flourish?
Most of our project managers have zero technical experience, so I'm guessing the skill sets are different enough that it's not necessary. However, they have to be bright enough to grasp/learn the concepts involved in development -- just not the implementation.
That's not to say that a technical background would be a bad thing -- it could be a "nice to have". Then again, it could possibly get in the way and they could try to control the implementation.
In my experience the very best technical managers I've had had very strong technical backgrounds (and usually were a little reluctant to trade herding code for herding coders). The worst were the the ones that were merely average programmers at best and had more of a management background.
The tentative conclusion I've drawn from this is that while not all programmers are management material, all good technical managers started out as good programmers.
Note that this answer is coming more from the perspective of hiring an engineering lead. For a project manager - someone whose job is to interface between the technical people and the customer - technical acuity is probably less of a requirement.
Some technical skill would be nice, but far more important is that they understand the functional area your company exists in. So if you sell an OS, then you probably want stronger technical skills than if you're writing banking software, for example.
Go with point 1. "Not important. We should be focused on proven project management experience in software area."
Edit: (after re-reading your intro-para) Seems what you want is a product-manager, and in support you need team-leaders on the diverse teams to handle and report on the technical issues. (Also since customer-contact is involved: a little marketing experience won't hurt!)
As an aside:
You are focusing on the wrong skill-set. You want proven administrative skill; proven organizational skill; and above all: proven people skills - (s)he must be able to communicate without antagonizing or patronizing the audience. The technical staff and programming staff will have all the necessary experience in development. (S)He must be able to manage and control these staff members effectitively.
The manager has to be able to communicate with developers. This either requires a decent technical background, although not necessarily with the same technology, or enough humility to know when the developers know more about something than the manager. I've seen both work well.
I think what I'm saying is that having respect for the developers is important, and there's two paths to it: understanding what they do, or understanding that you don't understand what they do.
Answer is "4".
Heavy experience with some technology is critical. I know the mindset is "project manager does not have to understand technology, he just manages people".
Well no, PM does not manage people: he manages project that is supposed to produce some deliverable that is acceptable at least across some desired aspects (capability, performance, reliability, security, maintainability, etc). If he can't understand technology, he's lost. Of course, he does not have to be an expert in peculiar technologies used in a project: but he has to be able to filter BS away, to question programmer's estimates (we know how those go), to feel at least technical risk here or there, to be able to formulate business ramifications of particular technologies.
In some ways I think that PM's challenges re technology are even bigger than those of programmer: he has to be genuinely interested in technology, yet he can't / should not have any technology bigotry, to be actually fair towards them (what they are actually good for and what they are actually not good for).
Read "In search of stupidity" for evidence how non-technical managers drove many tech companies into the ground.
This is excellent summary by Spolsky: http://www.joelonsoftware.com/articles/Stupidity.html
Now, the small print #1: not every programmer will make a good PM, of course. In short, control freaks, toxic personalities, egomaniacs, people who are good at coding but not at negotiating, people who are good at coding but yield to pressure too easily -- will FUBR their projects.
Small print #2: It might be possible that people with very good analytical skills might make up for lack of experience with technology. I've worked with people who were excellent business process and procedure designers, who instinctively understood how UI should be organized and what the software should be doing in this particular place and why and who could detect BS quickly even when served by domain experts but who could not program if their life depended on it.
Most has been answered already, but I'll add this:
Keep the same mindset that you would have when hiring an office manager. While the technology knowledge is important, you'll find that ambition, a will to learn, coupled with a team leader attitude will get you a better manager than looking at mostly technology knowledge. Most projects have some company/industry-specific skills that are involved and a quick learner / great leader will bridge that gap quickly.