Blog

Advantages & Disadvantages of the SDLC

A Little Disambiguation

The acronym ‘SDLC’ is used within the technology field for more than just one ‘thing’ and those ‘things’ are so closely related we enter what seems to be a recursive loop in defining one or the other.

  1. Systems Development Life Cycle
  2. Software Development Life Cycle


I come from a software development background as a Web Application Architect for a healthcare technology provider. When I initially read the first chapter of ‘Systems Analysis and Design’ I was completely confused in that what they were describing as ‘Systems Development Life Cycle’ was in fact the good old ‘Software Development Life Cycle’ I have been using in one form or another over the past 7 years they had just given it a different name.

After a little research online I found the reason they are so familiar, ‘Software Development Life Cycle’ is thought to be a subset of ‘Systems Development Life Cycle’. This is due to the fact that it focuses not on the complete system but instead on a specific piece of software or a product which may only be a component of the complete system (“Software Development Process”, n.d.).

Assumptions

Another concern I ran into in the reading is that the book treats the SDLC as an actual step by step methodology for system design and implementation whereas in my experience it has been considered to be the overarching ‘theory’ as to the cycles involved in a systems life not necessarily how they should be designed. With the SDLC being the theory of the life of an application there have been various methodologies spawned from it in order to actually do the design and implementation.

From my understanding and experience the following design and implementation methodologies were created in direct response to handle the SDLC (Systems Development Life Cycle, n.d.):

  • Waterfall
  • Spiral
  • Agile
  • Rapid Prototyping
  • Incremental
  • Synchronize and Stabilize


Please feel free to help me out on this one if my understanding is imperfect or skewed based on my perspective. I have just never run into a development effort where someone said we were going to use the SDLC this time, they have always utilized one of the methodologies listed above.

Since the book is treating the SDLC not as a theory but as an actual methodology I am assuming our discussion is focused on the strict SDLC process as outlined in the book (Kendall,2011). It is from this standpoint I will address the following points.

Advantages

Strictly speaking, the reality of all system design efforts is the fact that no methodology is ever perfectly executed as prescribed. But if we were to step into a perfect world and were to execute the SDLC in its entirety we would obtain the following benefits:

Complete Documentation of the Entire System

The SDLC dictates that there be painstaking attention to detail in documenting not only the overall design of the system but all pieces thereof,including but not limited to: existing systems, business needs, business processes, software, databases, interfaces, user manuals, training material, etc (Kendall, K.E. 2011).

Complete System Design prior to Development

The entire system including all of its pieces are designed prior to the start of development. A benefit of this is you have a much better understanding of the overall system, how each piece fits into the whole, and the responsibilities each piece has within the system. It removes a lot of the uncertainty and doubt once development begins.

Disadvantages

Slow Rate of Change to Meet Business Needs

Due to the extremely detailed and step by step processes within the SDLC it is extremely rigid and inflexible. Businesses today are constantly changing in order to pull ahead of the pack and gain competitive advantage. A lot of this change is due to just how fast paced technology is developing and its direct impact on said businesses. Mixing a rigid design process with an extremely dynamic business can only lead to the inability for a system to change at a rate fast enough to keep up with the business needs.

Lack of, or Monopolization of Resources

Because the enormous amount of effort required to design, document and then develop an entire information system and all of its required features at once using the SDLC it requires an equally enormous amount of talent. This leads to either a lack of resources or a monopolization of existing resources. In either case it will end up costing the business in additional salaries or the inability to hit other business directives due to lack of resources.

Suitability

Based on the identified factors above the systems which would benefit the most from a strict adherence to the SDLC would be large to extremely large information systems which are relatively stable. In other words complicated, possibly distributed, systems which live within industries which have a relative low rate of change in their business process. Examples would be industries like: Healthcare, Finance, and Government.

The converse also holds, the SDLC would not be a viable option for medium to small information systems which live within industries which have a relatively high level of fluctuation in both business processes and accelerated advancements in the technology used to gain competitive advantage.

Conclusion

No matter the methodology you end up selecting it will have its advantages and its disadvantages. It is up to you to weigh them all and select the one whose advantages outweigh the disadvantages or whose advantages best fit the business needs creating greater competitive edge.

Sources/References

Kendall, K.E. (2011). Systems Analysis and Design.
      Pearson Education, Inc., publishing as Prentice Hall

Software Development Process, (n.d.). In Wikipedia’s online encyclopedia
     Retrieved from http://en.wikipedia.org/wiki/Software_development_process

Systems Development Life Cycle, (n.d.). In Wikipedia’s online encyclopedia
     Retrieved from http://en.wikipedia.org/wiki/Systems_development_life-cycle

Should Top Management Vacancies be filled by IT Senior Managers?

Top Management Decoded

To begin such an argument we need to clarify what exactly ‘top management’ really means and to what it is limited. Being that no definition was given I will create one of my own based on my knowledge of business structure as well as my experience at that ‘level’. Once defined it will be the basis for my arguments below.

When I hear the term top management I instantly think of the ‘Big Cs’ or the chiefs of a company. It is the duty of these chiefs to direct and steer a company based on its goals and ambitions within its realm of business. Lets define them now as well as their roles:

Chief Executive Officer (CEO) – Is responsible for maintaining and modifying the overall goals, vision, and direction of the business. Acts as a mediator and coordinator between all the other Cs.

Chief Operations Officer (COO) – Is responsible for managing and maintaining the day-to-day operations of the business.

Chief Financial Officer (CFO) – Is responsible for keeping the business financially viable, responsible, as well as honest.

Chief Information Officer (CIO) – Is responsible for the information within a business. This includes its use, security, and its availability. This individual is usually responsible for all the information systems which manipulate and control said information.

Chief Technology Officer (CTO) – Is responsible for the underlying infrastructure and office applications on which the business runs. This includes networks, servers, computers, and telecom.

The Vacancy Conundrum

The Statement: Because IT managers must understand all phases of a business, companies should have a policy of filling top management vacancies by promoting IT senior managers.

From my perspective a policy as describe above would be detrimental to the organization in which it was implemented. Filling a job vacancy is a complicated task by itself, finding the right person to fill that vacancy is extremely difficult even when where you search for that individual is not limited. Adding such limitations to the search would make the chore downright impossible.

Even if the search is only to begin from within the IT department and gradually expands if a suitable candidate is not located there is still another factor to discuss.

Understanding vs. Expertise


Although IT managers must understand all phases of a business they do not necessarily posses expertise in all or any of those phases.

Having an understanding of something does not qualify someone to become a leader in it. I believe I have a fairly decent understanding of business finance being that I have owned my own business as well as have acted as an interim CIO for another. I can explain to you why we separate expenses into Capital Expenditures and Operational Expenditures. I can even tell you how to track them.

Would I say I am qualified based on my knowledge to become the next CFO? No way! Why? I am not an expert in the field of finance. Could I learn it over time? I am pretty sure I have the aptitude to learn just about anything. Can the company wait for me to become an expert? Not at all.

Understanding simply cannot replace expertise and expertise is exactly what has to be possessed by those in ‘top management’. Expertise gives an individual the ability to make complex, risky, or even dangerous decision quickly, effectively, and with confidence. Businesses only survive when they have a team of Cs with expertise in their individual fields all of which together make up a business.

Restricted Policy Coverage

Based on my logic from above I do not think the policy is a complete disaster. When taken in a more restricted approach it actually makes sense. The initial statement is that any ‘top management’ vacancy should be filled from IT senior management. But when you restrict this statement to any ‘technical top management’ vacancy the policy makes complete sense.

By ‘technical top management’ I am referring to positions such as the CIO and CTO or any other contrived C that a business may create to fit a technical management need. For these positions moving an existing senior IT manager into that vacancy will only be a win win situation due to the fact that the individual has intimate IT knowledge specific to that company as well as a deep understanding of the company’s motivations and goals.

What are people saying about Tim

To date I have been called a lot of things, those most worth noting are as follows: Skilled Communicator, Team Player, Task Oriented, Dedicated, Dependable, Reliable, Self-directed Learner, Detail Oriented, and sometimes Obsessive Compulsive.

Despite the fact I usually discount any mention of the above in casual conversation, deep down I believe my personality encompasses a bit of all of them. I have a very strong sense of who I am and what I want out of life. Due to my moral upbringing my sense of work ethic and integrity have hardened to stone and do not slacken at the first sign of stress. I can be counted on to deliver what is promised when promised.

But what I have to say about myself is by far less convincing than that which has been said by my peers:

“Tim is one of the most talented developers I have ever worked with. He is an extremely hard worker and is detail oriented. Tim is very easy to work with and an excellent communicator.”

“Tim is a highly intelligent and creative software professional. He is a friend and an inspiration. I have worked with Tim on several projects as a fellow team member and as a business partner and have great respect for his development and interpersonal skills. He strives for excellence in every area of his life and is a successful software professional, husband and father.
Tim would be an exceptional asset to any team.”

“Tim is a superb problem-solver. He is excellent at discovering the core of a problem and using the resources around him to find a solution. He is a very talented software developer who is able to meet and cope with tight deadlines. He is dedicated, hard-working, and I would be hard-pressed to find another person I would rather have as a partner, team member, or developer.”

“Tim is an energetic, result driven individual. He works wonderfully in a team environment and is always looking for a way to contribute. He has superior technical knowledge and the capacity to learn new concepts. Tim works well with people and has the ability to explain complex concepts in a way that everyone can understand. Tim was a great person to work with and I would not hesitate to work anywhere with Tim again.”

Academic Experience

In late 2006 I graduated from Neumont University at the top of my class, honored summa cud laude, and was the Valedictorian giving the commencement speech to my graduating class. I received my degree after completing an extremely rigorous accelerated program in which a standard 4 year Bachelor of Science in Computer Science degree was taught over the course of 2 years. To give you an idea of the intensity, I attended courses 8 hours a day and completed 4-6 hours of homework a night for 24 consecutive months. In the end, my cumulative GPA was 3.9125.     

In 2010, my work took me abroad and deep into southeast Asia. I was contacted by one of my old Neumont professors who was at the time working for INTI Laureate International Universities (a Laureate International University) as their CIO. He asked that I come assist them in bringing their current hardware infrastructure up to date as well as replace their software systems with custom built solutions of my own design. As part of the contract I was offered the chance to earn a Masters of Science in Information Technology. Unfortunately, with only a few completed courses, I came home before I was able to complete the degree. This was due to the quick timeframes in which, projects vital to my purpose there, were completed as well as changes in the corporate IT initiatives and direction. Ever since, it has been my goal to finish what I started, and obtain a Masters of Science in Technology.

Professional Experience

I am currently a Professor at Neumont University, teaching various Computer Science courses. As a Professor I spend the majority of my time teaching interactive material which have a project based group learning focus. In addition I spend a large part of my time assisting students one on one with understanding the course material and concepts.


Prior to Neumont, I served as Chief Software Architect and (Interim) Chief Information Officer for INTI Laureate International Universities. As Chief Software Architect I designed and oversaw the development and integration of various core business information systems: Accounting/Bookkeeping, CRM (Client Relationship Management System), LMS (Learning Management System), SIS (Student Information System). As CIO I managed the whole of INTI’s IT; encompassing 8 university campuses which spanned 2 countries: Malaysia and Indonesia.   


For StayWell Interactive I was promoted from Developer/Analyst to Senior Developer, then on to Application Architect. As Architect I managed 4 of the business’s core revenue generating systems. My duties included the management of development teams, quality assurance teams, application/software design, development, testing, deployment, as well as the infrastructure on which those systems run.

I have also been a Ruby on Rails Developer, a Senior Web Developer/DBA, Solutions Architect, Web Designer, and a 3D modeler.

Mint12 : Heroku Toolbelt – `require’: cannot load such file

If you are running Linux Mint 12 as your Ruby / Rails development environment and you are planning on deploying to Heroku you will need to install Heroku’s Toolbelt in order to execute the commands necessary to create an application in their cloud as well as various other administrative commands.

Heroku provides detailed tutorials to assist you in setting up your environment but as expected they are pretty agnostic when it comes to specific Linux distributions.

For Linux Mint 12 doing the GEM install of the Toolbelt you run the following command and it executes without issue:

gem install heroku foreman

But when you attempt the login command you may get the following error:

heroku login
/rubygems/custom_require.rb:55:in `require': cannot load such file -- readline (LoadError)

I found this was due to a missing gem which is required by either the Heroku Toolbelt or Foreman gems. To correct this issue I installed the ruby readline gem with the following command:

gem install rb-readline

Once the install completed I attempted the Heroku login command again and it was successful.