PSC Image Practical Software Construction, LLC PSC Image

 

  Software Contractor with 40 Years Experience

 




Principles

Keep it Simple

AI Image

When I was at USC my Artificial Intelligence Professor from JPL said that if you did an honest appraisal of how sentient and independent we could make an AI, such that it could survive on its own without human intervention, we could make something as intelligent as a cockroach. Human beings have the ability to change their own rule sets when confronted with challenging problems; something computers can't do without human intervention. What computers do best is remember and look up vast quantities of data. My approach to writing applications is that they should assist a human doing what he does best, which is making decisions, by providing data. When applications try to make decisions for humans, humans typically get irritated. I don't know how many automated features I've turned off in my Microsoft Office applications, like automatic capitalization. I like to keep it simple and let the computer and the human each do what they do best.

Prefer Open Source Technology

Open Source

Take a close look at today’s cutting edge technology and you’ll see a healthy dose of open source platforms, libraries, and standards - from Big Data (Hadoop, HBase) to the latest in cloud support (Docker, Pivotal). The academic community, startups, and innovators are refining and contributing to the constant improvement of open source platforms. Closed Source platforms have a vested interest in making it difficult for developers to find solutions without engaging their professional services.

I don't resent companies like Apple trying to make money and provide value for their customers, but when they refuse to participate in interoperability standards just so they can squeeze their customers to buy every little cable and connector at exorbitant prices, they are not operating in good faith. In fact they are inconveniencing their customers from buying the best peripherals

Separation of Concerns

Lego

Separation of Concerns refers to modular programming as opposed to ‘spaghetti bowl’ programming. Modern programs have the following components: raw data, data marshalled into business objects, business logic, controller logic that parses incoming user requests, and ‘view’ logic that creates HTML and Java Script viewable by the user in their browser. When you keep all these things separate, you have an easy to maintain and easy to change program because you know where to find everything. When you mix all this stuff up in your code, you have a nightmare. I can’t tell you how much rookie code I’ve reviewed that puts business logic in the data layer or the view logic.

Loose Coupling

Loose Coupling

Loose Coupling is related to Separation of Concerns. When you keep things separate, they communicate via interfaces because they aren’t part of the same single entity. There are two general classes of interfaces: tightly coupled and loosely coupled. With loosely coupled interfaces neither side has to know anything about the other; all context required to handle a request or communication is contained in the communication. With tightly coupled interfaces each side has to know some internal state of the other side. Loose Coupling allows me to hook up heterogeneous pieces of software together to create your IT landscape. For example, I don’t need to write an email server for your website if you have a gmail account because I can call the gmai mail server and leverage it.

Made in the USA

AI Image

IMHO nothing comes close to the quality of code produced by American college graduates. I think one well educated USA developer can exceed the combined value of ANY number of cheaper substitutes. Companies frustrated by the ROI they get from their offshoring partners should reconsider USA resources.