consulting, mentoring and learning...
TRANSCRIPT
Consulting, Mentoring and Learning Programs
Nitin Bhide ([email protected])
June 2010
Commercial in confidence.
About Nitin BhideM. Tech. Material Technology, IIT Powai
15 yrs of hands on coding and development experience
Chief Architect and Project Manager for projects for companies like
◦ Honda R&D
◦ John Deere
Designed and Implemented Integrated ALM (Application Lifecycle Management) infrastructure for Geometric Ltd.
Numerous training programs conducted on topics like Design Principles, Design Patterns, Advanced C++, Effective Code Review, Mindmaping etc
Commercial in confidence.
EXPERTISE AREAS
Commercial in confidence.
Expertise Areas - I
• Languages : C/C++, Python,
• UI Frameworks : MFC, Qt, X/Motif
• OpenGL, Geometry algorithms
• ALM (Application Lifecycle Management) Infrastructure design and implementation
• Enterprise Application development and integration
Hands on experience in
Multiple Technologies,
Languages, Frameworks
and Domains
Commercial in confidence.
Expertise Areas - II
• Nearly bug free,
• easy to debug
• self documenting
• Defensive coding.
Writing high quality code
• Implementations that are:
• Efficient (memory and performance)
• Flexible
Complex Algorithms design and
implementation.
Commercial in confidence.
Expertise Areas - III
• modular, flexible and extensible design
• Objected Oriented Design
• Algorithm design
• Consider multiple aspects/facets of design
• Design for performance
• Design for testability
Software Design/Architecture
• Large Scale software development projects
• R & D Projects
• Projects in new domains/technologies and languages
• Maintenance projects
Full Life Cycle of Various Types
projects
Commercial in confidence.
Expertise Areas - IV
• in writing high quality code
• In software design
• Especially teams facing quality and delivery problems
Guiding and Mentoring teams
• Project automation to improve team productivity and quality
• Various practical tools and metrics for early warnings of potential problems
Design and implementation
ALM (Application Lifecycle
Management) Infrastructure
Commercial in confidence.
CONSULTANCY AREAS
Commercial in confidence.
Consultancy - situations
Have you ever faced situations similar to following ?
Situation 1 :
Customer is complaining about quality of delivered software.Project team is working over time (even on weekends).However, bugs not getting fixed. In fact, more bugs are gettingadded while fixing already reported bugs. Its becoming anendless cycle. Customer is unhappy and thinking aboutwithholding payments, team is depressed and dejected,management is desperate to salvage the situation.
Somehow you need to improve the quality and stability of code in a short time and regain
customer confidence.Commercial in confidence.
Consultancy - situations
Situation 2 :
The code is working as expected. Customer is satisfied about theresults but not satisfied with the speed/performance. He wants anear real time performance. It means an order of magnitudeimprovement in performance. Your team is tried variousoptions and got 20% performance improvement. However thatis not enough. Customer is not going to give you acceptancewith current level of speed/performance. Now you are stuck.
Somehow you need to dramatically improve the speed/performance in a very short time
Commercial in confidence.
Consultancy - situations
Situation 3 :
Time required to fix the bugs is slowly increasing.It is becoming difficult to quickly add newfeatures. Time to induct new team members ishigh. The design and code has now become a'tangled mess'. Profitability of project is goingdown.
Somehow you need to improve the productivity of team and thereby
improve the profitability of project
Commercial in confidence.
Consultancy – common needs
Today every Software Company has to
To satisfy customer by Delivering high quality software on time
To improve the profitability by Improving productivity of developers
To Achieve it, you will need work on
◦ Improving design (flexible, extensible, testable)
◦ Improving code quality (bug free, easy to debug and test)
◦ Project Automation
◦ Ways to detect and warn about problems as early as possible.
◦ Project Team which is conscious and knowledgeable about all the above.
◦ Last but not least ‘performance optimizations’
You can benefit from my expertise in these areas.
Commercial in confidence.
Consultancy - Scope I
C/C++ software development projects
Design and Implementation of large scale projects
Design review, audit and design improvements◦ Flexible and modular design ◦ Framework design ◦ Module and Class Interface design ◦ Design for Testability◦ Algorithm design◦ Design for performance
Commercial in confidence.
Consultancy - Scope II
Refactoring and code cleanup◦ To reduce ‘technical debt’
◦ Improve the developer productivity and quality
Performance Optimizations
Developer Productivity Improvements◦ Project Automation(e.g. automated builds, unit tests)
◦ Integrations of bug tracker and version control
◦ ALM (Application Lifecycle Management) Software Implementation/deployment
◦ Defensive coding and coding best practices
◦ Design improvements and refactoring
◦ Teaching & mentoring for technical competency improvements
Commercial in confidence.
Consultancy - Scope III
Project Team Mentoring in aspects like◦ Writing bug free/easy to debug code
◦ Coding and code review best practices
◦ Multiple facets of design (design for change, design by contract, design for testability, design for performance, framework design, etc)
◦ Project Automation (e.g. automated builds/continuous integration, automated unit tests)
◦ Tools Best practices (version control, bug trackers, automated builds, automated tests etc)
Commercial in confidence.
LEARNING PROGRAMS
Commercial in confidence.
Learning Programs
I discuss and understand the needs of the company/participants
and then tune the programs to suit those needs.
These programs cover the theory as well as practical aspects (aspects learned from 15 yrs of hands on coding/design experience)
The learning programs are divided into
Specialized programs,
Short programs Comprehensive
programs.
Commercial in confidence.
Specialized Programs/Workshops
Effective Code Review
• This program is designed to dramatically improve effective of Code Reviews. It teaches the participants How to systematically analyze code to find the defects.
Performance Optimization
• This program teaches participants principles of achieving an ‘order of magnitude’ improvement in performance?
Design Workshop
• 2 day intensive hands-on design workshop
• Participants have to create design for given problem.
• Basic Design Principles and multiple facets/aspects of design will be discussed.
• Participants will then present their designs. The designs will be critically reviewed based on principles discussed.
• Now Participants have to then improve the design based on the review feedback and present it again.
Commercial in confidence.
Short Programs
Commercial in confidence.
For Junior Developers
Programming Under the Hood
C++ : Defensive coding and best practice
Memory Management
Sr. Developers and Group Leaders
OO Design Principles
Design Patterns
Effective Code Review
Comprehensive Learning Programs
These programs are designed for ‘working developers’
Multiple sessions with different topics at each session
The programs allow for time to think and digest what is learned.
Participants are encouraged to question everything that is being taught.
Typically each session is of 2 hrs duration.
Commercial in confidence.
Comprehensive Learning Programs
Developing
Better Developer
Topics covered :
Effective code reviews
Design Principles
Design Patterns
Project Automation
Advanced C++
Topics covered:
Advanced macros
Error and exception handling
Advanced templates
Effective STL
Implementing Design Patterns
Advanced memory Management
Commercial in confidence.
Contact Information
Nitin Bhide
http://thinkingcraftsman.in
Ph : +91 – 98 220 34694
Commercial in confidence.