: 1 Getting ready for real software World
Advantages of this course : Advantages of this course Participants will learn about wide range of opportunities available in software world
So that
They can take a well informed and well thought decision about their career path
Participants will learn about the right mindset to cultivate
So that
They can be successful in real software world on their chosen career path
Participants will learn how to keep pace with continuously changing technology world
So that
They can continuously enhance their skill sets and always maintain their employability
Participants will learn about real world software development processes and methodologies
so that
They can quickly adjust to real software world 2
Making a choice : Making a choice You have the power of choice
You must take a well informed and well thought decision regarding your career path
It may be even “ a road less travelled “ but it must be “your decision” based upon your “ interest, ability and facts “
Remember that it is important that what you do, but what really matters is “How well you do what you do”
Your Interest
What does really interest you
Seeing the big picture
Programming /Composition
Marketing
Management
Analysis
Your natural ability
What comes naturally to you
Get a feedback from other about your positive and negative points
Know your facts
Frustration is the function of unrealistic expectation 3
Choosing a career path : 4 Choosing a career path Taking a well informed and well thought decision about your career path
SW development Roles
SW development Areas
SW development Companies
SW development Real World : Roles : 5 Requirements
Business Analyst
Process Analyst
Architecture and design
Architect
Designer
Development
Programmer
Developer
Build engineer
Testers
Support
Support engineer
Maintenance Engineer
Documentation
Technical Writers SW development Real World : Roles Training and development
Training Engineer
Management
Project manager
Program Manager
Product manager
Account manager
QA Manager
Development./Delivery Manager
Training manager
Profession Service
Profession service engineer
System Integrators
Consultant Marketing and Sales
Marketing and sales engineers
Software Analysis
Software analyst
Career Path : Career Path 6 Programmer/
Developer Senior developer, tech lead
Designer, Architect
Professional services , Consultants Technical Project Lead , Project Mgr , Program mgr , DevMgr Management Product marketing, Service marketing Marketing and sales Business Analysis , Process Analysis, SW Analysis Analysis
Skill Set for career path : Skill Set for career path For All career path , you must develop your skill set as per T model
Deep knowledge and skill in one area and broad knowledge in other related areas
For example to become a successful architect you should have deep knowledge and skill in technology/domain but you also must have broad knowledge of all other related areas such as project management, testing etc.
To become a successful development manager you should have deep knowledge of project management skills and broad understanding of technology
Days of pure generalist or specialist are over , you need to be a specialist Generalist 7
Slide 8 : 8 SW development- Horizontal
SW verticals : 9 SW verticals BFSI
Telco
Health care
Retail
Manufacturing
Civil aviation and airlines
Engineering and science
Energy (oil and Gas , Power) …
SW development Companies types By nature of business : 10 SW development Companies types By nature of business Software Product vs Software Services vs Hybrid
Product Companies
Develop Software products
Same products are soled to different customers world wide
Normally products are highly configurable
Requires high degree of creativity and innovation for creating new products and continuously adding new features to the products
High risk and reward potential
Working for a product company
Pros
Opportunity to work gain in-depth technical and domain expertise in a particular area
Cons
Quality of experience to some extend depend upon which stage of the product life cycle you get an opportunity to work
SW development Companies types Service Companies : 11 SW development Companies types Service Companies Offer IT services to other companies
Work on shore and off shore mode , now the trends is towards offshore model
Work on time and material basis but now the trend is towards fixed cost basis
Need very high degree of Project execution efficiency for delivering “quality on time “
Work done by service company
ADM (Application development and maintenance)
Software testing services
PDM( Product development and maintenance)
ISM(Infrastructure service management)
IT Consultancy
Enterprise integration services
Working for a service company
Pros
Opportunity to work on different technologies and software development
Opportunity to get on the job training
Cons
It may require a long time to get in depth experience
SW development Companies types : 12 SW development Companies types India’s leading service company : SWITCH
Satyam
Wipro
Infosys
TCS
Cognizant
HCL …….
SW development CompaniesBy Size : 13 SW development CompaniesBy Size Large Companies
IBM
Oracle
Microsoft
SAP
HP …..
Small and Medium Size Companies
Start up
SW development Companies typesBy size : 14 SW development Companies typesBy size Working for large company
Pros
you will get practical training before you get real responsibility
You may find relatively stable environments
Cons
One of the many employee
Lack of visibility
working for a Small and medium Companies
Pros
Opportunity to grow with the company
Opportunity to make a visible contribution
Cons
May have disadvantages of both large and small companies
Working for Startup
Pros
Opportunity to work on cutting edge technologies and on innovative products
May provide very fast growth for you
Cons
Highly risky and unstable environment
Some exciting companies to work with : 15 Some exciting companies to work with NASSCOM Announces Top 15 “Exciting Emerging Companies To Work For”
Corbus (India) Private LimitedRMSI Private LimitedHytech Professionals India Pvt LtdNagarro Software Pvt. Ltd.VCustomer Services India Pvt Ltde4e India Pvt LtdSynygy India Pvt LtdAjuba Solutions (India) Pvt. Ltd.Mindlogicx Infotech LimitedNucleus Software Exports Ltd.Infogain India (P) LtdValueLabs (India)Barry-Wehmiller International Resources Pvt Ltd GlobalLogic India Pvt Ltd AgreeYa Solutions (India) Pvt Ltd
100 IT innovators 2007
http://www.nasscom.in/Nasscom/templates/NormalPage.aspx?id=53050
Right mindset for future world Software Development : 16 Right mindset for future world Software Development “Incremental and Continuous learning” mind set
“Collaboration and Communication” mind set
“ Welcome Change” mind set
“Quality on Time” mind set
Current and future state of software - business world : Current and future state of software - business world Current state of software world
Continuous and pervasive change in technology and business environment
Ambiguity and uncertainty
Competition is increasing day by day
Very few secure and long term jobs
Future state of software world
Velocity of change will increase manifold
There will be more ambiguity, uncertainty and even chaos
No more secure and long term jobs
You will face extreme competition and extreme opportunities
In a globally connected world , work itself will shift to a place which can provide better VMS
In such world of extreme , you will require to sense , understand and adapt to change and continuously re-invent your self
Charles Darwin said something very, very interesting many, many years back
“The species which survived, where not necessarily the strongest and most intelligent, they where one who were most adaptable to change” 17
Continuous and Incremental Learning Mind set : Continuous and Incremental Learning Mind set In future world , software technology and business environment will continuously changing at a rapid pace
The process of software development , delivery, deployment and monitoring is also continuously evolving and changing at a rapid rate
Only by continuously and Incrementally learning new technologies and adopting new and better way of working, you can maintain your employability on long term basis 18
Keeping yourself always employable Continuous learning and improvement : 19 Keeping yourself always employable Continuous learning and improvement Create your custom knowledge portfolio and continuously review and update it
Spend time regularly and in small chunk on learning something relevant and new
Understand the concepts and practice/apply to develop practical skill
Focus on fundamentals
Mastery on at least one programming language : java#, C or C++
Understand at least one relevant domain
OOAD, SOAD,Design patterns, best practices
XML
Standards
RDBMS fundamental/SQL99
Software estimation and evidence based scheduling
Keeping yourself always employable Continuous learning and improvement : 20 Keeping yourself always employable Continuous learning and improvement Read at least one technical or non technical/nontechnical book every quarter
Do not work on internet, make internet work for you
Subscribe customized information via RSS reader like Google Reader etc.
Customized your browser/add relevance plug-in and extensions
Create your customized on line reference library :
Reference management tool like Zotero
Tagging
Wiki
Use Mind map for getting best from your reading/browsing
Like Free mind
Participate in open source projects
Review architecture and source code for an open source projects
Fix bugs in open source projects
Write code for open source Projects
Keeping yourself always employable Continuous learning and improvement : Some of the books you can read
Beginning java objects, from concepts to code by Jacquie barker
Head first java
Head first C#
Applying UML and Patterns by Craig Larman
J2EE 1.4 - A professional Guide by Aaron E. Walsh
Pojo in action by Chris Richardson
Introducing Microsoft .NET by David S. Platt
of web site you should visit regularly
http://en.wikipedia.org/wiki/Main_Page
www.java.world.com
www.infoq.com
www.developer.com
www.serverside.com 21 Keeping yourself always employable Continuous learning and improvement
Collaboration and communication mind set : Collaboration and communication mind set Software development is all about team work
Collaboration means
Making a deliberate effort to understand the team goal and how team wants to achieve the goal
Making a deliberate effort to understand what is your role and how its contributes in meeting the team goal
Taking full responsibility for your work and delivering “quality on time”
Being pro-active and taking appropriate initiative for going an “extra miles” if it helps in meeting the team goal.
Helping other in the interest of over all team goal
Making a sincere and deliberate effort to understand other team members point of view 22
Collaboration and communication : Collaboration and communication We communicate
Verbally
In writing
Via audio-visual medium
Via our body language
Via our action
Communication via action is the most powerful way of communication
What you do impact so loudly that it does not matter what you say
You communicate strongly every time you keep or break a promise
Be careful when you are making a promise
Be aware of the impact your communication is creating on others
Does it making other comfortable/uncomfortable ?
Are other able to understand what you are trying to communicate ? The most important communication skill is “understanding other points of view” by
Attentive Listening
Listen with intent to understand
Focus Reading
Seeking clarification if in doubt 23
Collaboration and communication mind set : Collaboration and communication mind set The second most important communication skill is conveying your point of view via
Clear Verbal, written and Audio-visual communication
Clear and precise written communication
Communication skill are best developed by preparation, practice and reflection
Preparation mean knowing in advance
What you want to communicate ?
Who you want to communicate to ?
How you want to communicate ?
Before any important meeting/presentation the right question to ask is
What outcome I want after the meeting/presentation ?
Practice , Practice and Practice
Never miss an opportunity to make/attend a relevant audio-visual/presentation/tech-talk etc.
Regularly review , reflect and improve the impact of your verbal, written , audio-visual , body language and action communication 24
“Quality on time” mind set : “Quality on time” mind set Delivering on time is challenging
Delivering quality work is challenging
Delivering “ quality on time” is by far the biggest challenge in software world
Delivering “quality on time” is a mental model which we need to adopt for being successful in real software world .
To deliver “quality on time” you must learn the practice of “triage” and trade off
Triage means working according to priorities
Dividing your work in three activities – Vital, essential and desirable
Tradeoff means making appropriate decision in a given scenario/situation after examining the issue from different perspective
Remember “trade off makes every one better off “ 25
SW development - Quality : 26 Quality Comes from “with in”
The Acid test of Quality is
“Adherence to quality requirements”
“Satisfied stakeholders experience”
“Positive experience of stakeholders
Difference between Quality Assurance and Quality Control
Quality is a continuous Process
Quality Assurance process must start from the beginning and continue till the end
“Our focus should be to prevent entry of defect in software development ,
rather than on fixing bugs at later stage”
“The earlier we detect bugs or other quality issues,
easier and less expensive it becomes to solve them “
Absence of bugs does not mean good quality
Quality trade off Analysis SW development - Quality
SW development – Project management : 27 SW development – Project management Risk
Quality SW Project Management Triangle Resource Scope Schedule The Challenge in software projects is to deliver ;
‘Quality On Schedule In Budget’
By Proactively Managing
‘Risk and Uncertainties ‘
Associate with
Scope, Resource and schedule
SW development Stakeholder : 28 SW development Stakeholder Customer
User
Consultants
Development team
Management
Regulatory bodies
Standard bodies
Software development – Project Management triple Trade off : 29 Software development – Project Management triple Trade off Resource Schedule Scope If Schedule is decided , resource is fixed , then scope can be adjusted
If scope is fixed, Schedule is decided then resource is adjusted ….. Risk
Quality Resource Scope Schedule Triple trade off example
SW development Project Management Scope Analysis : 30 Scope
What is to be done and what is not to be done
Scope Analysis
Problem Domain and Solution domain
Function and non function requirements (FR/NFR)
Constraints
Boundary analysis : Inclusion and Exclusion from Scope
Feature
Triage/Prioritize Features
V, E, D
Agreement on Scope among all stakeholders SW development Project Management Scope Analysis
SW development Life Cycle Project Management Estimation : 31 Size or Volume
The triple classification
L, M , H
Complexity
S, M , H
Effort
In hours
Focus hours required to complete a task
Pessimistic and optimistic estimate
Accuracy of estimate (Probability)
Ball park figure
Buffer
Productivity compensated effort
Scheduling
On which date work will start and on which date work will end
Milestone based scheduling
Status visibility SW development Life Cycle Project Management Estimation
SW development Project Management Scheduling and Execution : 32 SW development Project Management Scheduling and Execution Work breakdown structure
Work packages
Task list
Task relationship
Scheduling
Milestones
Status visibility
Early warning report
Data collection for evidence based analysis and feedback
Software development Methodologies : 33 Software development Methodologies Waterfall process
Iterative and Incremental process (IID)
Microsoft Solution framework
Rational unified Process (RUP)
Agile Software development(ASD)
Software development methodologies Waterfall vs iterative&increnetal : Software development methodologies Waterfall vs iterative&increnetal Req .
Architecture and design
coding
Testing
Release 34 Req Arch. & design Coding Coding Testing Release Candidate ? Release Candidate ?
: 35 Software development methodologies Microsoft solution framework
Software development methodologies RUP(Rational unified process) : 36 Software development methodologies RUP(Rational unified process)
: 37 Software development methodologies
Working on deliverables/Artifacts Inputs Process Tools End user Deliverables Best practices and standards
Software development methodologies Agile software development (ASD) process and Principal : 38 Software development methodologies Agile software development (ASD) process and Principal Customer satisfaction by short time boxed iteration
Short and time boxed meetings
Principal centric process in place of rule driven processes
Working software of acceptable quality is delivered frequently (weeks rather than months)
Welcome changes in requirements even during late stages of iteration
Close collaboration and co-operation between business people and developers
Simplicity and clarity of design and code
Self-organizing teams
Daily builds and continuous integration
Test driven development --- Focus on Unit testing
SW development – Mode : 39 SW development – Mode Development
Mode Release Production
Mode
SW development Life Cycle – Development Mode : 40 SW development Life Cycle – Development Mode Project Management Quality Assurance Documentation Reviews Build and Config. management Communication Req. Architecture and design Coding Testing Coding Testing Req. Architecture and design Release ? Release ?
SW development Life Cycle – Development Mode Requirements : 41 SW development Life Cycle – Development Mode Requirements Characteristic of SW requirements
Req. tend to be ambiguous
Req. tend to change over time
Req. are best developed over time in iterative and Incremental manner
Requirement Change Management
Types of Software Requirements
Business Requirement
Functional or user Requirements
Non Functional Requirement
RASP
ilities of Requirements
Constraints
Quality requirements
SW development Life Cycle – Development Mode Requirements – Function requirement : Function requirements are best understood by use cases
Use case Components
System boundary
Use case Actors
Primary actors
Secondary actors
Use Case Goal
Use case behavior
Main path and exceptions path
Use case precondition and post condition 42 SW development Life Cycle – Development Mode Requirements – Function requirement
A typical use case : A typical use case 43 Reserve room add to waiting list Send email Extend uses Extend use case is an extension of functionality of main use case
Uses use encapsulate the common requirements
Use case realization : Use case realization 44 Use case realization is done via robustness analysis
Robust analysis divide a use case into three type of components
Entity objects or long live objects
Controller objects or use case application
Boundary objects interact with out side world
Robustness Analysis rules
Controller object should talk to entity objects
Boundary objects should talk to Controller objects
External objects should talk to Boundary objects
External object should never talk to entity objects directly Get room( ) Reserve
room ( )
SW development Life Cycle – Development Mode Requirements – NFR : 45 RAsSP
Reliability
Availability
Security
Scalability
Performance ilities
Usability
Adaptability
Modifiability
Extendibility
Inter-operability SW development Life Cycle – Development Mode Requirements – NFR
SW development Life Cycle – Development Mode Requirements : 46 SW development Life Cycle – Development Mode Requirements Requirements Process
Requirements Elicitation
Requirements Analysis
Requirements Specification
SMART
Requirements Reviews
Requirement Communication
SW development Life Cycle – Development Mode Architecture and Design : 47 Software Architecture
Subsystem and Components
How do they interacts
Public and private interface of Subsystem and Components
List of Artifacts and Deliverables
Different view of Architecture
Conceptual
Logical
Physical SW development Life Cycle – Development Mode Architecture and Design
SW development Life Cycle – Development Mode Architecture and Design : List of artifacts and deliverables
HLD
Object and data model
ORM Mapping
LLD
Sequence diagram
Public and Private interfaces 48 SW development Life Cycle – Development Mode Architecture and Design
Software development – Team Development Environment : Software development – Team Development Environment 49 LAN Developer IDE Developer IDE IDE Build
machine CI
System Issue
mgt.
System Version
Control
System Test
System
: 50 Naming Standards
Self Describing, uniform and consistent naming standards
Comments
Appropriate Comments
“Anybody can write software that a machine can understand, but it requires a real professional to write software which can be understood by another human beings”
Martin flower
Project Directory
Code, Compile , Deploy and Test Cycle
Unit testing
Junit
Test NG
Http unit …..
Refactoring
Forward and Reverse engineering SW development Life Cycle – Development Mode
Development
SW development Life Cycle – Development Mode Software team environment : 51 Integrated development environment(IDE) like
Visual Studio or Eclipse
Unit testing/Coverage via Junit, TestNG , Cobertura, Nunit
Enforce coding standard with CheckStyle
Source code control and configuration management system (SCCS)
Perforce , CVC
Build tools like
ANT and Maven
Continuous integration System
Cruse Control
Software issue management system
BugZilla , Trac
Wiki
A collaborative platform like Twiki SW development Life Cycle – Development Mode Software team environment
SW development Life Cycle – Development Mode Testing : 52 Testing process
Test Cases are created from requirement documents
Execution of test cases
Bug Reporting
Bug Severity and priority
Bug Triaging
Bug fixing
Test regression
Test Coverage
Type of testing
Black Box Testing
White Box Testing
Test Automation
Performance and Scalability Testing
Usability Testing
Security testing SW development Life Cycle – Development Mode Testing
SW development Life Cycle – Development Mode Project Management – Documents : 53 Type of Software documentation
Technical documentation (Internal focus)
User documentation (external focus)
Marketing and sales documentation(external focus)
Developing Software documentation
Developed in IID mode
Develop document as per need basis
Self review and stakeholders review
Developed from the stake holder perspective SW development Life Cycle – Development Mode Project Management – Documents
: 54 Beta Program
Release Success Criteria
Numbers of Features
Number of Bugs
Documentation
Training Readiness
Support readiness
Release readiness review
Zero Bug Bounce
Decision to release
Release notes
Known and unknown issues
Delivery mode
Internet
CD SW development Life Cycle – Development Mode Release
Slide 55 : 55 Installation in Production test set up
Installation time
Memory foot print
Ease of Installation
Configuration
Deployment in production mode
Execution and Monitoring
Bug and issue reporting
Patch updates
Upgrades
Versioning
Side by Side execution SW development Life Cycle – Production Mode