Engineering, Management, Posts

Between Waterfall and Agile – The Gray Area

What is the development theory that Steve Jobs used to develop the Apple II computer? Do you think that when Thomas Edison invented and mass-produced the light bulb, and many other inventions, he was thinking about what project development model to apply? What model was on the mind of Henry Ford when he revolutionized the automotive industry (besides the model T)?

If you have great visionary leaders who have a good understanding of the market, and talented people who master the state-of-the-art technology, with a bit of luck, you can develop a best-in-class product, and disrupt the market, without the need for any management/development theory. Following your success, people (not as smart as your people) will try to extract lessons from your good practices, theorize them, and sell them to other companies as remedies to their problems. Good practices will always help to improve the outcome, but will never fix the problem of narrow-minded leadership and unmotivated people.

This sets the ground for the sequel.

Image for post

Product/Software Development

The development of a product/software comprises the following key activities:

Continue reading “Between Waterfall and Agile – The Gray Area”
Engineering, Posts

Edith Clarke – a Pioneering Woman Engineer

Edith Clarke (1883-1959)

Every electrical engineer who works in the field of alternating current (AC) systems should be familiar with the Clarke Transformation concept. It is a fundamental concept used for control, monitoring, and analysis of electric motors, generators, variable speed drives, electric grids, AC power converters, etc.

What not so many engineers know is that Clarke is a (pioneering) woman engineer called Edith, who managed to find a place for her talent in one of the biggest masculine industries in the first half of the 20th century.

Throughout her career, Clarke was often the first in her endeavors, whether the first professionally employed female electrical engineer in the United States, the first female full voting member of the AIEE (that would become IEEE), or the first full-time female professor of electrical engineering in the US. She had substantially contributed to the development of mathematical methods that simplify the design and analysis of AC power systems (equivalent circuits, graphical analysis, etc.).

Life and Career

Clarke was born in Howard County, Maryland, in 1883 and was orphaned at a young age. She studied mathematics and astronomy at Vassar College in Poughkeepsie, New York, USA, and received a bachelor’s degree in 1908. Then after 3 years as a teacher (in mathematics), in the fall of 1911, she enrolled in the civil engineering program at the University of Wisconsin, but left after a year to become a computing assistant to George A. Campbell at American Telephone and Telegraph (AT&T), where she could acquire good knowledge about the transmission lines and electrical circuits. 

From MIT to GE

Edith Clarke enrolled in electrical engineering at Massachusetts Institute of Technology (MIT) in 1918, to earn an M.S. degree in 1919, and was the first woman to receive an electrical engineering degree at the school. She then joined General Electric (GE) in Schenectady in 1920, where she trained and directed a small group of women computers doing calculations of mechanical stresses in turbine rotors. In 1921, she filed a successful patent application on a graphical calculator to be used in solving transmission line problems, and it was published in her first technical paper in the GE Review in 1923.

Continue reading “Edith Clarke – a Pioneering Woman Engineer”

Engineering, Management, Posts

Agility – Beyond Software Development

The digital technology industry has been moving at a very fast pace over the last decades. Companies that are unable to adapt have been left behind (Nokia, Kodak, etc.). Agility is a key skill for a company to remain competitive.

Since the Agile Manifesto for software development, declared in 2001, several software companies have been moving towards this mindset. Some companies went further and adopted the Agile way of development in industries other than software industry.

bobdylan_2275506bIf your time to you is worth saving
Then you better start swimming, or you’ll sink like a stone
For the times they are a-changing.

-Bob Dylan

Is it possible for any company to apply Agile? How about big companies, with complex organizations, top-down policies, rigid processes, over-specialized teams, and other bureaucratic burdens? And above all, what is Agile, and what is not Agile? First, let’s review the life-cycle of a product.

Product life-cycle

A product life-cycle can be broadly divided into 4 phases as shown in the figure below:

Product Life-Cycle

Continue reading “Agility – Beyond Software Development”

Engineering, Management, Posts

What is Agile Software Development ?

Software development is a tough process. It starts off by identifying and understanding what the user/client needs, and ends by deploying a solution that may, or may not, satisfy the user. During this journey, a group of Homo sapiens work together, organize teams, conceive plans, define tasks, rules and tools. They spend time and effort specifying, designing, programming, testing, documenting, bug fixing, etc. and hoping that they will deliver on time.

Some of those sapiens groups outperform their peers, and manage to provide high quality solutions on time. Other groups fail to deliver any solution, and waste their effort, time and resources in vain. Successful software developers (at least some of them) decided to help the others with their skills, by teaching them how they are doing Software development. This is why, on February 11th – 13th, 2001, at The Lodge at Snowbird ski resort in the Wasatch mountains of Utah, USA, seventeen Homo sapiens met to talk, ski, relax, and try to find common ground—and of course, to eat. What emerged was the Agile Software Development Manifesto.

Agile is a Software development mindset that embraces change. It is neither a process nor a model, but rather a set of values and principles. It is a flexible approach for Software development, that helps organizations to adapt fast to the market change.


Processes and documentation are important, but not the main concern in Agile mindset.

Continue reading “What is Agile Software Development ?”

Engineering, Management, Posts

Software Development Models

There exist a wide variety of software development models, that have evolved to address the evolving challenges facing the software industry. In this post, the following models are reviewed:

  • Waterfall Model
  • V-Model
  • Sashimi Model
  • Incremental Model
  • Unified Process Model
  • Spiral Model

We present a summary of their pros and cos, and the cases for which each model is best suited for. Note that the same models apply to other product (or system) development, therefore, we will use software and product interchangeably in this post. It is worth noting also that, in practice, most organizations combine two or more models in their development process.

First, let’s take a look at the software development phases.

Software Development Phases

The Waterfall Model

The conventional way to conduct software development projects consists broadly of the following steps:

  • Requirements: they are gathered from the customer/user at the beginning of the project. Requirements are system-level and independent of the technical solution.
  • Architecture & Design: architecture deals with the high level design, and the definition of the interfaces and interactions between subsystems. Then detailed design deals with components, functions, subsystems, etc.
  • Implementation: the design is now a coded software that is ready to be tested.
  • Testing: it includes verification and validation (V&V) of the product. First, the verification means to check that what we designed is working as expected (unit testing for instance). Then the validation is to check that what we designed and implemented actually fulfills the requirements (system testing).
  • Release: the software is released and is ready for deployment. Sometimes, deployment and maintenance are considered to be part of the software development phases.

This sequential process is called Waterfall, as it can be illustrated in the figure above.  Continue reading “Software Development Models”