Saturday, November 2, 2013

BOK-BOKs :: PMBOK, BABOK, SWEBOK & ...

Followng are few more points on the PMBOK (Project Management Body Of Knowledge, http://en.wikipedia.org/wiki/A_Guide_to_the_Project_Management_Body_of_Knowledge), BABOK (Business Analysis Body Of Knowledge, http://en.wikipedia.org/wiki/BABOK ), SWEBOK (Software Engineering Body of Knowledge, http://en.wikipedia.org/wiki/SWEBOK) ..


PMBOK:
A Guide to the Project Management Body of Knowledge — Fifth Edition provides guidelines for managing individual projects and defines project management related concepts. It also describes the project management life cycle and its related processes, as well as the project life cycle.
The Guide recognizes 47 processes that fall into five basic process groups and ten knowledge areas that are typical of almost all projects.
  • The five process groups are:
  1. Initiating
  2. Planning
  3. Executing
  4. Monitoring and Controlling
  5. Closing
  • The ten knowledge areas are:
  1. Project Integration Management
  2. Project Scope Management
  3. Project Time Management
  4. Project Cost Management
  5. Project Quality Management
  6. Project Human Resource Management
  7. Project Communications Management
  8. Project Risk Management
  9. Project Procurement Management
  10. Project Stakeholders Management (added in 5th edition)


BABOK's 6 KAs (Knowledge Areas):
1. Business Analysis Planning and Monitoring,
2. Elicitation,
3. Requirements Management and Communication, 
4. Enterprise Analysis,
5. Requirements Analysis,
6. Solution Assessment and Validation

For the Software Requirements, You will need 6 TEAM Skills: (I'm copying the contnts I blogged here before ... :P ...)
----------------------------------------------------------------------------------------
1. Analyzing the Problem (AP)
2. Understanding User Needs (UUN)
3. Defining the System (DS)
4. Managing Scope (MS)
5. Refining the System Definition (RSD)
6. Building the Right System (BRS)

5 Generic Steps in Problem Analysis:
----------------------------------------------------
1. Gain understanding on the Problem Definition
2. Understand the Root Causes - the Problems behind the Problem
3. Identify the Stakeholders and Users
4. Define the Solution System Boundary
5. Identify the Constraints to be imposed on the Solution!

Few tips / advice for the aspiring Young Software Professionals:
--------------------------------------------------------------------------------------------
1. Be Passionate about the Software Development (genuinely...;-)...
2. Have an Agile Mindset in coping with the constant change in IT 
3. Invest in your early career rather than "running after money" (stop hopping...;-)
4. Find your own Mentors ... (or Be your own Mentor with Google & the Net...)
5. Have a Great "AIM" in Life ... (AIM => Assess / Accept your weaknesses / mistakes, Improve on those, and then Move on positively ...)

Few URLs for you to look at:
------------------------------------------

... And many more that you can find by "Googling" which might be more suited to your needs and interests ... :-) ...

Let's ALL enjoy the LEARNING ...:)

Thursday, October 31, 2013

The Tipping Point :: The Growth of our IT Industry Middle Management

Bangladesh IT Services, i.e. mostly Software Development, Testing & Systems Integration Companies often can not grow due to the shortage of good quality mid level experienced Human Resources (i.e. the so-called middle-layer-management people including Project Managers, Product Managers, UX Design Leads, Tech Leads / Lead Architects, QA Leads / Managers, Lead Business Analysts / Lead Use Case Engineers, Lead Systems Analyst / Systems Analysis Managers, Lead Data Scientists, Technical Documentation Leads, Lead Test Engineers, etc), who hold the backbone for planned growth!

Although there is no universally accepted roles, titles, and career paths in the "highly creative ever changing" IT Services / Software Engineering Discipline, but globally the IT Industry agrees with most of the above middle level positions.

And I can also verify the roles / titles from my "hands-on-deep-dive" 24 years of local and global Software / IT Industry experience. Let me try to explain the roles / titles (often overlapping roles) in the following:

1. Project Manager (PM):
-----------------------------------
PM is the most visible middle manager. Manages Software / IT Services Projects defined by deliverables, milestones, time and budget usually set at the beginning of the project.
S/he is responsible for customer management in terms of project deliveries, priority setting, needed HR & related logistics management.
Typically, in the IT Services / Software companies, the software engineers gradually move up to the seniority ladders and become Project Managers. 
But Project Managers do not necessarily need to be technical if s/he has good support from his/her Teach Lead!

2. Product Manager:
-----------------------------
This role is mainly found in the Software Product development companies. A product manager is solely responsible for the product features, releases / versions, etc... Any substantial software product can have multiple development projects in parallel. In that case, a product manager can have multiple project managers to handle different parts of a software product.

Even in a single project, the role "Product Owner" may be synonymous with the "Product Manager" role who solely remains focused on the product features.


3. UX (User Experience) Design Lead:
-------------------------------------------------------
User Experience is any aspect of a person's interaction with a given IT system, including the interface, graphics, industrial design, physical interaction, and the manual. In most cases, User Experience Design (UXD or UED) fully encompasses traditional Human-Computer Interaction (HCI) design, and extends it by addressing all aspects of a product or service as perceived by users. 

UX is becoming very very significant now-a-days given the millions of web sites, mobile apps popping up every now and then. And attracting and retaining Users giving them the best possible experience is the desire of all software / product companies. Since this UX discipline is getting recent importance, so we don't have many good UX Designers let alone having the UX Design Leads.
But having a role of "UX Design Lead" is very important for any aspiring local software / product company to go global! 


4. Tech Lead / Lead Architect:
------------------------------------------
The Lead Software System Architect or the Tech Lead is a very crucial role in any Software Development or Information Technology Services Company. The Lead Software Architect makes the high level system designs of the software products.
Typically software engineers having technology skills and demonstrating proven superior ability in real life projects become Tech Lead or Lead Architect. Then they become CTO (Chief Technology Officer) of that company.



5. QA Lead / Manager:
-------------------------------
QA Manager or QA Lead is the critical role that a software / product company must have to ensure an end-to-end best possible Quality Management System...

People often mix up the "QA Manager" role with the "Lead Test Engineer" role... :-( ... But a QA Lead or Manager (along with the Top Management) is the most responsible for ensuring a Quality Management System (QMS) in an organization. Many companies having CMMI or ISO 9000 usually have a dedicated QA Manager role for their internal QMS.

Even in the companies who completely adopt the lean Agile Process models, they also have the role like QA Manager or Process Owner or Scrum Master, etc...


6. Lead Business Analyst / Lead Use Case Engineer
------------------------------------------------------------------------------
7. Lead Systems Analyst / Systems Analysis Manager
-------------------------------------------------------------------------------
Strictly speaking, all these above 4 roles are actually different in their own rights and specialties. But I'm intentionally grouping / lumping them to describe their large overlaps as currently perceived / practiced by most of our local Software / IT Services companies.

Frankly speaking, many companies do not have a role like "Systems Analysis Manager" or any sort of "Lead" in their "Systems Analysis Unit" ...;-) ... Often the company CEO or CTO fill up that Lead Role!

In fact, in our country since our Software Industry is still in its infancy filled with small start-up companies, many of the middle-layer-management roles are often filled up by our ever-enthusiastic-technocrat-entrepreneurs and thus no stable career path yet for the professionals ... :-( ...

So the Lead Business Analyst or the Lead Use Case Engineer or the Lead Systems Analyst or the Systems Analysis Manager is largely responsible for the Business Analysis / Systems Analysis of any particular software product having a single or multiple domains. Usually a pool of Domain Experts (may not be full time on board) having deep Industry Vertical experience other than IT assist this Systems Analysis Manager to handle the preparing of BRDs (Business Requirements Documents) or BPDs (Business Process Documents) of any software product.



8. Lead Data Scientist:
--------------------------------
This role is also a latest emerging role in the Software / Business Intelligence / Data Science companies ...:) ... We will be very lucky to find dedicated & designated role like "Lead Data Scientist" in our local Software / IT Solution providing companies ... :)  

This role is relevant with the obvious and constant proliferation of Big Data in almost every sphere of Business and Life! The Lead Data Scientist should be responsible for selecting the appropriate Social Media channels / Big Data sources with appropriate Data Mining Strategies for the relevant reporting or Business Analytics needs. As the name implies, the Lead Data Scientist should obviously assisted by other relatively junior Data Scientists or Data Miners to help him accomplishing the Data Analytics Goals... :)...


9. Technical Documentation Lead:
------------------------------------------------
This is also a very important role now visible in some companies as the title: "Technical Documentation Writer"! Most companies often keep this role(at times temporary) mainly due to customer pressure demanding technical documents, which the development teams did not prepare while developing the software solutions / products. And then the companies post-produce those documents with Tech Doc Writers getting help from developers and also by going through the developed software systems...

But the Technical Documentation Lead should create this super-reactive-role into a super-proactive-one! S/he or his/her team should NOT be the "steno-typists" of the "super-proud-programmers-techies", rather they should hold them (the techies) responsible (with the help of the PM and the QM) for the constant ongoing minimal documentation needed for any IT Project or Product! Then the Doc Team can help them to "finish" the documents with needed style and lingo as appropriate for different audiences...!

So this very important middle management role is responsible for ensuring durable and sustainable Intellectual Property (IP) creation including all relevant documents in time with high quality in any IT company.


10. Lead Test Engineer:
----------------------------------
This is another often-neglected / often-confused role in our Software / IT companies...! People often confuse them with the QA Manager. Even software engineers are at times not very encouraged to pursue the Testing career path.

Although the Lead Test Engineer role is recently gaining popularity mostly due to some Big-Testing-Focused-Companies in our country, but this role still has many mists! 

The Lead Test Engineer is an integral part of the Software Engineering Process. For the companies who develop projects / products from the initiation of the SDLC (Software / System Development Lifecycle), the Lead Test Engineer is very much involved in preparing the User Acceptance Test Cases (UATCs), Systems Test Cases (STCs), Integration Test Cases (ITCs), etc... For companies operating in the mid- or late SDLC, the Lead Test Engineer works with the customer supplied Test Cases / Test Documents, but s/he can also suggest changes to the customers based on his / her expertise and experience.. 

One very common misconception among Testers is: Testing profession does not need programming skills...! That's why I often see some girls prefer this, who fear programming ...;-)... Although Testers do not program as heavily as programmers, but programming skills take a tester to higher levels quickly and it is needed for test automation starting from the Integration Test Cases... And better yet, that skill helps a lot in communicating easily and with confidence with the programmers... :)

===================================================================

In fact, in our country since our Software Industry is still in its infancy filled with small start-up companies, many of the middle-layer-management roles are often filled up by our ever-enthusiastic-technocrat-entrepreneurs, often overlapped with each other having one person carrying many roles and thus no stable career path yet for the professionals ... :-( ...

So in summing up, all these above mid-level-positions will need many "specialized-track" trainings, such as: 

A. Project Management, 
B. User Experience (UX) Design, 
C. Software Design / Architecture (SOA, TDD, Arch Patterns, etc),
D. Software Quality Assurance,  
E. Business Analysis
F. Systems Analysis
G. Data Science / Big Data
H. Technical Writing
I. Software Testing

There are many standard good-quality training modules / packages for all these above topics / areas... So I'm not going into those details here ...

BUT I will emphasize on the following "hybrid foundation skills / topics" for training ALL the above mid-level IT Industry Human Resources:

1. Basic Strategic Management skills with Business Model Generation:
----------------------------------------------------------------------------------------------------
 Understanding the fundamental building blocks of business models. Very important  for middle managers to align with the Top Management in the driving seats. For details, pls see this URL: http://www.businessmodelgeneration.com/

2. Clear & Ethical Communication Skills:
----------------------------------------------------------
Mid level managers / resources must be the clear-most  and always ethical communicators, since they sit in the middle. Any lapse in this skill can create confusions and frustrations in the company. Great Ethical, Verbal, Written and Presentation Skills needed for all middle-managers.

3. Ethical Leader with Great Team Building Skills:
----------------------------------------------------------------------
Ethics is of paramount importance in an intangible and almost trust-based industry like IT & IT Enabled Services! So our middle managers must be ethical and apply all good management practices for the well being of the people and the companies.
An ethical leader can build ethical team members / operation-level employees. Team Building Exercise / Games, Team Hangouts, ethical and compassionate informal personal relationship skills, etc...

4. Productivity Tools Basic Hands-on Expertise:
--------------------------------------------------------------------
Project Management, Software Build Tools, Testing Tools, Source Code Version Control Systems like Git / GitHub, Continuous Integration Tools, Time Management, Groupware, Thinking Skills Management (Edward De Bono's Lateral Thinking, Six Thinking Hats, etc...)  

5. Basic Financial Management & Analytical Expertise:
------------------------------------------------------------------------------
Middle managers must be data and result driven, which ultimately affects any company's bottom line!  They should acquire skills on Basic Cash Flow Management, Intellectual Property (IP) Valuation Techniques, Basics on Web Intelligence and Big Data, etc... 

---------------------------------------------------------------------------------------------------------------

PLS also see some of the typical IT positions as practised globally.. 

Information Technology Engineering
===================================

Manager of Hardware Design Engineering:
-------------------------------------------------------------
Directs and coordinates activities related to the design, development and implementation of hardware operating systems for products. Oversees the development of test strategies and systems.

Manager of Software Design Engineering:
------------------------------------------------------------
Directs and coordinates activities related to the design, development and implementation of software operating systems for products. Oversees the development of test strategies and systems.

Hardware Engineering Supervisor:
-------------------------------------------------
Supervises employees engaged in functional and empirical analysis related to the design, development, and implementation of hardware for products including, but not limited to, the circuit design of components, development of structure specifications of a personal computer, and the design of a computer display unit. 
Develops test strategies, devices, and systems. 

Hardware Engineer:
-----------------------------
Provides functional and empirical analysis related to the design, development, and implementation of hardware for products including, but not limited to, the circuit design of components, development of structure specifications of a personal computer, and the design of a computer display unit. 
Participates in the development of test strategies, devices, and systems.


Software Engineering Supervisor:
------------------------------------------------
Supervises employees engaged in the functional and empirical analysis related to the design, development, and implementation of software operating systems, including, but not limited to, utility software, development software, and diagnostic software. 
Develops test strategies, devices and systems. 

Software Engineer:
---------------------------
Provides functional and empirical analysis related to the design, development, and implementation of software operating systems, including, but not limited to, utility software, development software, and diagnostic software. 
Participates in the development of test strategies, devices and systems. 

Network Engineer:
--------------------------
Provides functional and empirical analysis related to the planning, design, installation, and implementation of the network infrastructure. Performs remedial maintenance of file servers and network devices including the restoration of hardware and software. 
Anticipates and mitigates potential attacks through network or other connections to ensure the security of the system. 
Works with end users and vendors to resolve network hardware/software issues. 
May develop and administer end user training to achieve efficient utilization of LAN/WAN.