Back to Homepage

Credit: unknown

Situating software organizations

Andrew Begel

Every software organization has a role in the world; usually an economic one, but also likely a functional one. As software engineers, a critical skill is to be able to analyze a software organization and understand its role. This is useful if you're trying to decide whether to join an organization, but also if you're starting one.

This analysis skill involves doing the following

  1. Analyze what software the organization makes.
  2. Analyze what value that product offers.
  3. Analyze how the organization is funded.
  4. Analyze who the product is intended for.
  5. Analyze the relationship between the organization's funding and the software's value.
  6. Analyze what the software automates.
  7. Identify other organizations that offer the same value.
  8. Analyze the ethical values promoted by the organization and its software.
  9. Synthesize all of the above into a story about the organization's role in society.

Let's try Uber as an example:

  1. Uber makes software to match drivers to passengers.
  2. This allows passengers to get rides quickly and drivers to maximize earnings.
  3. Uber takes a cut of the fare that passengers pay, and more if there's high demand or low supply.
  4. Uber is for drivers and passengers.
  5. The faster drivers and passengers are matched, the more rides happen, and the more Uber makes.
  6. Uber automates the dispatcher role at taxi companies (the person you call for a ride)
  7. Taxi companies and Lyft do the same thing as Uber.
  8. Uber defines drivers as contractors rather than employees, which enables it to evade many workplace regulations on employers.
  9. Uber's goal for society is to get people into rides faster. In the process, they will eliminate dispatcher jobs and the taxi companies that employ them. If they're successful, there will be no taxi companies other than companies like Uber, fewer jobs in the taxi industry, and faster access to rides.

With the analysis above, you as a future software engineer can ask:

  1. Do you believe the future envisioned by the company is a good one?
  2. Do you want to automate what they help automate?

Partner and analyze (15 min)

Find a partner in class. Select a software company that you'd both like to understand better. Conduct the analysis above, researching their websites, their funding, their products, and write answers to the seven prompts, then reflect personally on the questions above.

Present (20 min)

One pair a time, present your findings to the class.

Discuss (10 min)


Uber's internal “bro”grammer culture has become a bellweather for sexist behavior in Silicon Valley startups. What are some ways to change a toxic company culture into an inclusive one?