Sunday, November 13, 2016

Architecture is defined by the recommended practice as the fundamental organization of a system, embodied in its components, their relationships to each other and the environment, and the principles governing its design and evolution.
[ANSI/IEEE Std 1471-2000, Recommended Practice for Architectural Description of Software-Intensive Systems]

Sunday, November 6, 2016

"All the choices and challenges facing the modern software architect are staggeringly intertwined. Each of them both constrains the others and affects multiple key outcomes. Minor decisions often have huge implica- tions. As in the physical world, this is the difference between engineering and architecting." IEEE Software,2016 nov.

Philippe Kruchten put it, “The life of a software architect is a long and rapid succession of suboptimal design decisions taken partly in the dark.” IEEE

Friday, October 14, 2016

"A state of software is a coordinate in the state space that contains exactly one value for every internal data structure." - James A. Whittaker
“Every now and again you just have to stop and invest in your  career, and I encourage you to do that now. Stop what you're  doing, and invest in PowerShell and you'll be rewarded for having  done so.” Jeffrey Snove

Sunday, September 25, 2016

“Information is data endowed with relevance and purpose. Converting data into information thus requires knowledge. And knowledge, by definition, is specialized. In fact, truly knowledgeable people tend toward  overspecialization, whatever their field, precisely because there is always so much more to know.”
— Peter Drucker, “The Coming of the New Organization,” Harvard Business Review, January–February 1998

Monday, September 5, 2016

“Would you tell me please, which way I ought to go from here?” asked Alice.
“That depends a good deal on where you want to get to,” said the Cat.
“I don’t much care where,” said Alice.
“Then, it doesn’t matter which way you go,” said the Cat.
Alice’s Adventures in Wonderland
Lewis Lewis Carroll

Tuesday, August 30, 2016

"Testing is a philosophy. You can test the design. You can test the requirements. And you can even design modules to test the modules you are creating." - 
Randy May

Tuesday, August 23, 2016

"An  extremely  strange,  but  common,  feature  of  many  software  projects  is  that  for long  periods  of  time  during  the  development  process  the  application  is  not  in  a working  state.  In  fact,  most  software  developed  by  large  teams  spends  a  significant proportion  of  its  development  time  in  an  unusable  state.  The  reason  for  this  is easy  to  understand:  Nobody  is  interested  in  trying  to  run  the  whole  application until  it  is  finished." Ref.pend.

Monday, August 15, 2016

Self-organization proceeds from the premise that effective organization is evolved, not designed. It aims to create an environment in which successful divisions of labor and routines not only emerge but also self-adjust in response to environmental changes. This happens because management sets up an environment and encourages rapid evolution toward higher fitness, not because management has mastered the art of planning and monitoring workflows.—
Philip Anderson, The Biology of Business© Copyright Mountain Goat Software

Sunday, August 14, 2016

Knuth’s dictum, optimizations should be deferred to the point when it is clear that they are required, deferred until the last responsible moment, and targeted based on runtime application profiling so as to attack bottlenecks in descending order of importance.

Saturday, August 13, 2016

Donald Knuth’s famous dictum:

We should forget about small efficiencies, say, about 97% of the time: Premature
optimization is the root of all evil. Yet we should not pass up our opportunities in
that critical 3%. A good programmer will not be lulled into complacency by such
reasoning, he will be wise to look carefully at the critical code; but only after that
code has been identified.



"He inspired us through his passion, his generosity, and the gift of laughter. He will be greatly missed."

RWilliams Apple.com

Friday, August 5, 2016

Computer programs are the most intricate, delicately balanced and finely interwoven of all the products of human industry to date. They are machines with far more moving parts than any engine: the parts don’t wear out, but they interact and rub up against one another in ways the programmers themselves cannot predict.
[Gleik 1992]

“The drive to reduce complexity is at the heart of software development”
[McConnell 2004]

Sunday, July 31, 2016

The value of metaphors should not be underestimated. Metaphors have the virtue of an expected behavior that is understood by all. Unnecessary communication and misunderstandings are reduced. Learning and education are quicker. In effect, metaphors are a way of internalizing and abstracting concepts, allowing one’s thinking to be on a higher plane and low-level mistakes to be avoided. —

Fernando J. Corbató

The value of metaphors should not be underestimated. Metaphors have the virtue of an expected behavior that is understood by all. Unnecessary communication and misunderstandings are reduced. Learning and education are quicker. In effect, metaphors are a way of internalizing and abstracting concepts, allowing one’s thinking to be on a higher plane and low-level mistakes to be avoided. —

Fernando J. Corbató

“What is success?
To laugh often and much;
To win the respect of intelligent people and the affection of children;
To earn the appreciation of honest critics and endure the betrayal of false friends;
To appreciate beauty;
To find the best in others;
To leave the world a bit better, whether by a healthy child, a garden patch or a redeemed social condition;
To know even one life has breathed
easier because you have lived;
This is to have succeeded.

Bessie Anderson Stanley (1879–1952)
Traditionally attributed to Ralph Waldo Emerson (1803–1882)”
Excerpt From: Richard N. Bolles. “What Color Is Your Parachute? 2014.” Ten Speed Press, 2013-08-13.
The gap between the best software engineering practice and the average practice is very wide—perhaps wider than in any other engineering discipline. A tool that disseminates good practice would be important. —Fred Brooks

Saturday, July 30, 2016

“Until you’ve written about your software, you have no idea what you’ll be coding.”

Tom Preston-Werner, Co-Founder of Github
>>> import this
The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

>>> 

Sunday, July 24, 2016

"The software architecture of a program or computing system is the structure or structures of the system, which comprise software elements, the externally visible properties of those elements, and the relationships among them."

[Software Architecture in Practice, 2nd Edition By Len Bass, Paul Clements, Rick Kazman]

"An architecture is a description of system structures, of which there are several (module decomposition,process, deployment, layered, etc.). Architecture is the first artifact that can be analyzed to determine how well its quality attributes are being achieved, and it also serves as the project blueprint. An architecture serves as the vehicle for communication, is the manifestation of the earliest design decisions, and is a reusable abstraction that can be transferred to new systems. These are the things we mean when we use the word architecture."

[Software Architecture in Practice, 2nd Edition By Len Bass, Paul Clements, Rick Kazman]

Saturday, July 23, 2016

"Simply stated, competitive success flows to the company that manages to establish
proprietary architectural control over a broad, fast-moving, competitive space."

C. Morris and C. Ferguson [Morris 93]
I should have no objection to go over the same life from its beginning to the end: requesting only the advantage authors have, of correcting in a [third] edition the faults of the first [two]. —

[Benjamin Franklin]
I should have no objection to go over the same life from its beginning to the end: requesting only the advantage authors have, of correcting in a [third] edition the faults of the first [two]. —

[Benjamin Franklin]

Friday, July 22, 2016

“The drive to reduce complexity is at the heart of software development” 
[McConnell 2004]
"CI involves making small changes to software and then building and applying quality assurance processes. Defects do not only occur in the code, but also appear in naming conventions, documentation, how the software is designed, build scripts, the process of deploying the software to servers, and so on. CI forces the defects to emerge early, rather than waiting for software to be fully produced. If defects are caught in the later stages of the software development life cycle, the process will be more expensive. The cost of repair radically increases as soon as the bugs escape to production. Estimates suggest it is 100 to 1,000 times cheaper to capture defects early."

[Alan Mark Berg]
"Computer programs are the most intricate, delicately balanced and finely interwoven of all the products of human industry to date. They are machines with far more moving parts than any engine: the parts don’t wear out, but they interact and rub up against one another in ways the programmers themselves cannot predict".

 [Gleik 1992]
"Extensibility is the ability to add functionality or modify existing functionality without impacting existing system functionality. You cannot measure extensibility when the system is deployed, but it shows up the first time you must extend the functionality of the system".

 [Cade and Roberts 2002]
"The most important first step in designing a data warehouse (DW)/business intelligence (BI) system, paradoxically, is to stop." —Ralph Kimball