CSCE 181 Guest Lecture 4
« previous | Tuesday, March 8, 2011 | next »
Large Scale Software Developing at High Speed
Mark Cathcart
Senior Distinguished Engineer; Director Software Engineering
Dell Inc.
http://cathcam.wordpress.com
Speed is of the essence
Developing software quickly ("agile development") is vital to stay ahead of the competition
Working in large groups is a very noisy/busy place
FYI: Dell website takes in more money that Amazon and eBay put together!
Engineering is a Discipline
Don't reinvent the wheel; adopt what is available and add value to it.
- Never start from scratch
Common architecture across a series of products:
- Linux Operating System
- Pre-built components
Culture is Critical
World-wide distribution has to take into account other cultures
Even in the development workplace: different people learn and apply what they've learned differently.
A problem given to people in China and India:
- China will have bad code, but do exactly what you asked for
- India will have good code, but have a few "extras"
Process Matters
Documented Interfaces to keep coding standard:
- Testing is crucial
A long time ago, compilation was expensive and slow. Now, everything is faster, so the software development process is more iterative.
Scalability - Will the architecture hold up under large amounts of stress?
Architecture has to enable Engineering
Customer First: Dell's Software Approach
Distributed computing:
Configuring new clients can be very hard
- Developers have to keep it simple! Simple software is easier to develop
Questions
- How do you overcome bugs/instability associated with rapid development?
- Faster compilation allows for developers to test smaller pieces of code more often, so bugs that normally originate are found in a few days.
- Do you run into any portability/compatibility errors when mixing and matching several pre-built components?
- We've been told to write tests for our code and test often, but we've never been taught how. How do you write automated tests for code?