18
Introduction Wilbur Pereira – Certified Scrum Master and Techno-functional Product and Project Manager

Product Development Manager

Embed Size (px)

Citation preview

Introduction

Wilbur Pereira – Certified Scrum Master and Techno-functional Product and Project Manager

• I started my career as software developer and was promoted to the rank of a Project Lead and subsequently a Project Manager,early in my career. Since then, I have worked with different employers and varied business domains in capacities ranging from Project Manager, Product Manager, Head of IT, and Head of Web Development.

• Have managed teams working on varied platforms viz. Windows, Linux, and Mobile (Android, Blackberry using Phonegap/Apache Cordova).

• Have good experience managing teams working on .NET, and JAVA.

• Am passionate about JavaScript and do most of my hobby programming in JavaScript. Prefer both client and server side JavaScript.

“Individuals and interactions over processes and toolsWorking software over comprehensive documentationCustomer collaboration over contract negotiationResponding to change over following a plan"

• That is, while there is value in the items on the right, we value the items on the left more.

Agilemanisfesto.org

• I prefer following Scrumbut or Scrum-but as my project/product development management methodology. Scrumbut is suited for organizations that want to implement Scrum but without making that shift.

• My idea of managing a team is to build a culture of collaboration, and self-management. It is by being a servant leader that one can help teams achieve their objectives. Leading teams towards becoming self-organizing complex systems is what I believe in. I also prefer the MBWA - Management By Walking Around style.

Wh

y Scrum

-bu

t/Scrum

bu

t?

• <I use Scrum, but> <have these unique circumstances> <so have had to modify Scrum so it works here>

• Here is a shorter description:ScrumBut = (practice not being followed)(logical excuse)(workaround)

• I prefer working for start-ups and that is one of the primary reasons I prefer using Scrumbut.

• I’ve been responsible for setting up processes for all my employers in the past and which is why chose to start with something that helps teams adapt to Agile methodology.

• In case of start-ups the most common reasons to follow or start with Scrumbut can be (but not limited to),– We don’t need daily standups because we all sit together and talk/discuss when we need

to. Instead we do weekly meetings or daily standups only twice a week.– Our sprints are a week long or at the most two weeks long, since we cannot afford to

ship critical features after 6 weeks.– We do Scrum, but don’t have fully cross-functional teams. There are times esp. with

small companies/organizations/teams when one cannot afford to have the all the testers, developers, documentation specialists dedicated to one module/feature.

• Development

• Testing

• Configuration Management

Management Strategy

Process matters

• Following a standard process or Standard Operating Procedure or creating one and then optimizing it does not hurt.

• The below points can help streamline the process of software development.

✓ Define roles and tasks. Clear confusion and later any ego hassles. Clear reporting structures help.

✓ Define Documentation (format, version numbering, types of documents e.g. Minutes Of Meetings, lessons learned, backlogs, user stories ,user manuals, deployment checklists etc.)

✓ Define tools that do code quality, formatting/styling checks and security analysis upon compilation. Could be as simple as following the coding guide released by Google.

✓ Implement a system to track issues/bugs/defects, requirements, and change requests.✓ Implement version control for documents and code.

✓ Perform testing. Start with Test Driven Development. Listed below are other types that should be followed to minimize risk,

❏ Unit testing❏ System testing❏ Integration Testing❏ Regression testing❏ User acceptance testing❏ Load/Stress testing❏ Manual or Automated testing

✓ Encourage frequent code reviews. Sr. Developers should do this for Junior Developers. ✓ Maintain lessons learned information.✓ Keep a track of all dependencies like jars, dlls, libraries etc.

My Thoughts on

Resource Management• Resource planning and management is extremely

critical to any project and organization regardless of the size.

• Effective resource planning and management require a deeper understanding of the talent pool’s work habits and skills. While it’s not hard to know that in case of a small team, it can be a huge challenge and risk in case of a large team.

• Regardless of the above it makes sense to devise a well thought resource management strategy.

Effective Resource Management

• Maintain a list of your talent pool• Maintain a skills library of people in your team. This is helpful when you need to

decide who is the best fit for a particular project/module/requirement and can actually help save time e.g a Person knowing Spring being assigned coding on a Struts project, will only cause heartburn and delay, except for cases where you are willing to accept the steep learning curve.

• Prioritize features. • Include contingency plans e.g. keep Plan ‘B’ ready in case plan ‘A’ fails, not to

forget, there are options till ‘Z’.• Incentivize exceptional work. Cash or Kind depending upon the aforementioned

well thought strategy.• Implement capacity tracking reports for better visibility into staffing status on

projects.• Implement a Project Management application or just stick to Excel in case of a

small team. Project Management application for small teams can be an overhead at times.

My Thoughts on

Design (technical as well as UI/UX)• When it comes to design I believe in the model “Design for

Failure”. Be it hardware or software, or for that matter UI/UX. Develop UI/UX that gracefully degrades, is un obtrusive etc.

• Expect failures. Assume nothing. If something is available now, it may not be available later. Embrace Failure.

• Dependency management is the key. Maintain a list of all dependencies viz. hardware, 3rd party tools, libraries,network components, servers,network, infrastructure, external services etc. Track their health and availability regularly.

Design is Paramount• Believe you me, all else will not matter if Design fails. Right from your infrastructure design to

your software architecture and down to the UI/UX (assuming a bottom-up approach) will be rendered useless.

• In case of infrastructure things like the below are paramount and cannot be neglected,– High availability– Failover– Load Balancing– Security

• In case of applications be it desktop based, mobile, or web the following matters,– Architecture– Security– How it performs under stress/load– Least of bugs– Easy to maintain– Platform agnostic

• In case of UI/UX one needs to be careful of,– Progressive enhancement – While you can always maintain a white list of browsers, if

unsure just provide less instead of more.– Unobtrusive code – E.g Provide Javascript magic only if JavaScript is enabled and

supported. Could be a simple JavaScript based Print method. Check if JavaScript is supported or enabled and provide print functionality else let the user use the Print option in the browser.

• While there’s a lot more to the above, keeping in mind all that I have mentioned can save you from heartburn later.

My Thoughts on

Requirements management• Requirements are the heart of any Project. A Project is

useless without requirements.• Requirements if not managed can throw your project off

the track.• Well thought, documented, and duly signed off

requirements, help mitigate risks. • There is very little to dispute in case of a well thought and

duly signed off requirement, which, if not managed leads to blame games, and loss of time and resources.

• Requirements are also critical from the perspective of creating test plans.

Tools I prefer

• Project Management– dotProject - http://www.dotproject.net/ - FOSS– Redmine - www.redmine.org/ - FOSS– Micro$oft Excel– Google Spreadsheets– LibreOffice Calc

• Version control– Git – Free to use– SVN – Free to use

• Documentation– Micro$oft Word– LibreOffice Writer– Google Docs

• Testing– Junit– Apache Jmeter – Load testing.– WATIR – Automated test scripts. Ruby based. Does not support all browsers but comes

in handy.• IDE

– Eclipse– NetBeans

• Prototyping– Axure RP Pro – Personal Favorite

• Code Quality and Security Analysis– CodePro Analytix - https://developers.google.com/java-dev-tools/download-codepro

Being hands-on as well as managing the model

• I started my career as a developer and believe that “Once a developer, always a Developer”.

• So when it comes to code I can understand code and provide feedback if required.

• Have learnt a lot by managing teams on varied platforms and languages and working in varied business domains.

• Am a hands on person and am always game to roll up my sleeves and get my hands dirty.

• The model I recommend is purely based out of my experience and groundwork.

Thanks for being patient and for your valuable time.