Sunday, September 24, 2023

Thinking about skills in people and in software

Here is a handy way categorize levels of software sophistication:

  1. Software implements features
  2. Software  supports software that implements features
  3. Software supports software to support software that implements features
Here is handy way to categorize levels of people skills:
  1. Person implements features
  2. Person supports people that implement features
  3. Person support people that support people that implement features
Let us combine some of these people skills and levels of software sophistication:
  1. Person implements software that implements features
  2. Person implements software that supports software that implements features
  3. Person supports people that implement software that implement features
  4. Person implements software that support people that implement software that implement features
  5. Person support people that support people that implement software that implement features
  6. ...
Note how entry 4 is a hybrid of people skills and software expertise!

The above lists actually makes sense, yet they are too simple. We can do better!

We can distinguish between support as:
  • Direct support
  • Proactive support
For example:
  • A unit test is software that directly supports software.
  • A library or a framework is software that proactively supports software.
More examples:
  • A project manager directly support members of a project with a plan.
  • A servant leader proactively support his or her team members.
We can bring this together as:
  1. Person implements software that implements features
  2. Person implements software that directly supports software that implements features
  3. Person implements software that proactively supports software that implements features
  4. Person directly supports people that implement software that implement features
  5. Person proactively supports people that implement software that implement features
  6. Person implements software that directly support people that implement software that implement features
  7. Person implements software that proactively support people that implement software that implement features
  8. Person directly supports people that directly supports people that implement software that implement features
  9. Person directly supports people that proactively supports people that implement software that implement features
  10. Person proactively support people that directly supports people that implement software that implement features
  11. Person proactively supports people that proactively supports people that implement software that implement features
  12. ...
You might be thinking: this stops making sense!
Not so! Each of these categories are different, and imply different levels of skills and experience. Some need more people skills, while some need more software skills. 

Wrapping this up: Yes, it makes little sense to enumerate these categories. However, it makes total sense to understand them, and understand how the micro-structures of software and teamwork combine in different ways and demand different levels of experience and skills. 

Wishing you continued success with your project!

 All original content copyright James Litsios, 2023.