First Assumptions

Jason Salber-Black
2 min readFeb 11, 2016

When sharing my thoughts on a subject, any subject, it is difficult to dive right in. With few exceptions, I will start talking about X by immediately hopping backwards one or more topics and begin explaining and justifying why I am talking about X to begin with. This habit (unsurprisingly) hinders any attempt on my part to be brief or to just start saying what I want to say.

I intend to break this habit by indulging it at least one more time. So, my very first post on Medium is going to be the stating of my First Assumptions. This will hopefully prevent me from repeating myself ad nauseum, provide context to any future readers, and (if I am lucky) will help to advance discussion.

Future assumptions about the listed and additional subjects will be added here as I continue writing.

It’s time to stop procrastinating and start writing. { Photo by MMT }

Assumptions about Writing a Blog

  1. Writing will improve my own ability to communicate.
  2. Sharing my experiences is helpful to others.
  3. I encourage discussion about anything I write about, especially if the discussion results in one or more people, including myself, having expanded their views or knowledge.

Assumptions about Software as a Profession

  1. Designing, writing, testing, or otherwise being involved in the software creation process involves a combination of engineering and craftsmanship.
  2. Being professional in this field means simultaneously striving to improve both the product and the process for the business, the customer, co-workers, and yourself at all times.
  3. Being a technical professional in this field means applying the scientific method and iterating on the results whether dealing with the performance of an algorithm, the health of a physical server, or the quality of communication between human beings.

Assumptions about Software Processes

  1. Definition: A software process is a workflow, a life cycle, or a set of rules that define how one or more humans or programs can accomplish one or more goals related to the design, creation, or maintenance of software.
  2. Any time a software process is used, that process can be refined to be more efficient, less cumbersome, and overall implemented better for that specific use case.
  3. It is not possible to improve many processes at the same time without collateral damage or unintended consequences.
  4. Processes should be continuously reevaluated and improved upon.
  5. There is not a final, perfect form of a given process that works in all cases. No Free Lunch applies.

Assumptions about Implementing Software

  1. My recent experience with software architecture has been in the context of a SaaS application suite written in C# and JavaScript. My thoughts on designing software are molded by this experience.
  2. The same assumptions that apply to software processes also hold for software architecture and design.

--

--