Showing posts with label ACM. Show all posts
Showing posts with label ACM. Show all posts

2011-06-06

Thinking Clearly about Performance

Improving the performance of complex software is difficult, but understanding some fundamental principles can make it easier.

Source: Thinking Clearly about Performance via ACM Queue

2009-07-20

Physical limitations of Distributed Systems

(...) Engineers should be aware of some of the fundamental limitations they face when developing (...) distributed applications — in particular, the finite speed of light.


"Fighting Physics: A Tough Battle" by Jonathan M. Smith in "Communications of the ACM", July 2009

Perfect design

It's very hard to find that [perfect] design point, but it’s very satisfying. It’s a lot like mathematics because you’re looking for the elegant solution


Barbara Liskov in "Communications of the ACM", July 2009

2008-11-03

Image Crisis - Inspiring a New Generation of Computer Scientists

Rick Rashid in "Communications of the ACM", July 2008

The author of the article presents some of the misconceptions behind the drop of interest in Computer Science in the Unites States of America, namely:
1 - "the stereotype of the solitary male programmer who slaves over a keyboard and subsists on snack food";
2 - "underestimate the role that computing can play in changing the world";
3 - "belief that computer-related jobs are quickly being outsourced".

He knows what he is talking about, as he is head of Microsoft Research.

My opinions about the misconceptions are the following:

1 - This is not true. In fact, from my experience, computer science is a highly collaborative profession. Communication with other people is crucial to the success of your projects. Just look at the thriving open-source communities... However, the individual discipline and contributions are still very important.

2 - Computer science doesn't save the world by itself, but it helps almost all sciences and businesses to work better and progress faster.

3 - Some jobs will be outsourced, but the demand for computer knowledgeable people at the decision level is on the rise.

2007-12-05

Extreme programming (XP) distilled

Michael A. Cusumano in "Communications of the ACM", October 2007

Key XP practices:
  • Planning around user stories
  • Small releases of functionality
  • System or project metaphor
  • Simple design
  • Continuous testing (or test-driven design)
  • Refactoring
  • Pair programming
  • Collective product (code)
  • Ownership
  • Continuous integration
  • Minimal overtime
  • On-site customer representative
  • Design (coding) standards