570 likes | 660 Views
Developing with Passion Creating High Quality Applications. Discussions:. Discussion??? I can’t just sit here?. Discussion??? I can’t just sit here?. I like to talk but I get self-conscious Audience Involvement Want your input on: What you love What you hate Everything in between
E N D
Developing with Passion Creating High Quality Applications Discussions: Matt Penner - Inland Empire .Net User Group
Discussion??? I can’t just sit here? Matt Penner - Inland Empire .Net User Group
Discussion???I can’t just sit here? • I like to talk but I get self-conscious • Audience Involvement • Want your input on: • What you love • What you hate • Everything in between • Hear ideas from everyone beginner to the experienced Matt Penner - Inland Empire .Net User Group
W h a t d o e s i t m e a n t o b e P a s s i o n a t e ? Matt Penner - Inland Empire .Net User Group
What does it mean to bePassionate? Matt Penner - Inland Empire .Net User Group
What does it mean to bePassionate? What gets you to: • Burst with Excitement? • Talk to your Family or Friends about? • Spend every waking moment • Thinking? • Learning? • Doing? Matt Penner - Inland Empire .Net User Group
What are you Passionate about? Matt Penner - Inland Empire .Net User Group
What are you Passionate about? Family Friends Religion Money Music Art Technology Cars Boats Travel Partying Learning Working ??? Matt Penner - Inland Empire .Net User Group
What does it means to be passionate about development? Matt Penner - Inland Empire .Net User Group
What does it means to be passionate about development? • Love what you do • Craving to code (at work, school, home) • Extracurricular (what do you work on when you're not at work?) Matt Penner - Inland Empire .Net User Group
Why is it so important? Matt Penner - Inland Empire .Net User Group
Why is it so important? Negatives • Life is too short to hate what you do • Miserable at work • Miserable at home (with self, family, friends, etc) • Stress Matt Penner - Inland Empire .Net User Group
Why is it so important? Negatives • Low chance of actually being any good at what you do • Hard to create a good product when you don’t care about your product Matt Penner - Inland Empire .Net User Group
Why is it so important? Negatives • Poor quality work creates a vicious cycle of • poor recognition • poor customer service • poor customer relations • which leads to more poor work, etc. • Low chance of promotion in work • Low chance of recognition Matt Penner - Inland Empire .Net User Group
Why is it so important? Positives • Actually enjoy life • Enjoy talking about your work with others (wife/family/co-workers/etc) • Enjoy going into work each day • Enjoy when you need to work late hours Matt Penner - Inland Empire .Net User Group
Why is it so important? Positives • Enjoy creating good product - what you like to do you will do well • Enjoy talking with customers of your products and helping to improve their job • Enjoy seeing your benefit to others over the long term (long projects, several revisions, etc) Matt Penner - Inland Empire .Net User Group
Why is it so important? Positives • Self motivating • learning new/better techniques • increasing your own interest and creativity • discussing new ideas and concepts with colleagues • Recognitionby: • Boss • Co-workers • Customers • Community • etc • Promotion Matt Penner - Inland Empire .Net User Group
What steals your passion? Matt Penner - Inland Empire .Net User Group
What steals your passion? Self • Simply not interested in what you’re doing • Not growing in your education/skills Matt Penner - Inland Empire .Net User Group
What steals your passion? Self • Boring work • Boring projects Matt Penner - Inland Empire .Net User Group
What steals your passion? Social • Bad relationships with your boss/co-workers • Bad relationships with customers • Little support from other “players” • IT staff • Management • DBA • Co-workers • Other departments • Etc Matt Penner - Inland Empire .Net User Group
What steals your passion? Work Environment • Poorenvironment • Distracting environment Matt Penner - Inland Empire .Net User Group
What steals your passion? Work Environment • Poor quality hardware • Poor internet connection • Lack of sufficient tools • No/poor backup • No version control • Loss of hours of work Matt Penner - Inland Empire .Net User Group
How to keep (or regain)your passion? Matt Penner - Inland Empire .Net User Group
How to keep (or regain)your passion? Self • Attitude is #1 (don’t laugh!) • Especially in this economy • Constant learning • Magazines, books, Internet, etc. • Certifications • Community involvement • User Groups, Open Source projects Matt Penner - Inland Empire .Net User Group
How to keep (or regain)your passion? Work – Time for a move? • Change of job? • Change of dept? • Change of project? • None of these may be realistic Matt Penner - Inland Empire .Net User Group
How to keep (or regain)your passion? Work - Relationships • Interact with your co-workers • Even if they are in a different dept or location • Intelligent co-workers learn from and challenge each other • Chances are there is at least two other people in your company who know more than you about something Matt Penner - Inland Empire .Net User Group
How to keep (or regain)your passion? Work - Relationships • Cultivate relationships with others • Management • co-workers • IT • DBA Matt Penner - Inland Empire .Net User Group
How to keep (or regain)your passion? Work – PleasingEnvironment • Work from home? • New office? • New furniture? • Barrowed furniture? • Noise cancelling head phones • Personal items • Music • Pictures • Etc. Matt Penner - Inland Empire .Net User Group
How to keep (or regain)your passion? Work – GreatTools • High-end equipment • Computers • Internet Access • Software Tools • IDE • Re-Sharper • Photoshop (really) Matt Penner - Inland Empire .Net User Group
How to keep (or regain)your passion? Work – Great Tools • Selling points • Low cost compared to project costs • Computers have never been cheaper • Internet access has never been cheaper (FIOS?) • Off-lease equip Matt Penner - Inland Empire .Net User Group
How to keep (or regain)your passion? Work – Avoiding loss of work • High quality backup system • Poor man’s (personal) backup • USB drives • Local svn • Version control system • May have VSS in your licensing subscription • svn is free! • Continuous integration system Matt Penner - Inland Empire .Net User Group
How to keep (or regain)your passion? Work – Techniques • Agile practices • TDD • Frequent Deliverables (heartbeat) • Customer involvement • Flexible design Matt Penner - Inland Empire .Net User Group
Developing High Quality Software Matt Penner - Inland Empire .Net User Group
What does it means to develop a "good" product? Matt Penner - Inland Empire .Net User Group
What does it means to develop a "good" product? • Delivered in time • Within budget • Fulfills customer requirements • Iron Triangle? • How do you define successful? Matt Penner - Inland Empire .Net User Group
When is it good enough? Matt Penner - Inland Empire .Net User Group
When is it good enough? When do you say “Stop and ship it!” • By the deadline no matter what’s finished • When the requirements are done • When it’s high quality • What if these don’t all happen at the same time?And they most likely won’t! • The answer is different with every project Matt Penner - Inland Empire .Net User Group
Who is the customer? Matt Penner - Inland Empire .Net User Group
Who is the customer? • The one asking for the product? • The one paying for the product? • The users of the product (not necessarily either of the two roles above)? • The one selling the product? Matt Penner - Inland Empire .Net User Group
How do you determine when the customer is satisfied? Matt Penner - Inland Empire .Net User Group
How do you determine when the customer is satisfied? • They stop calling you for updates/fixes • They start calling you for updates/fixes • They have signed off on the functional requirements doc • Your competitor’s customers start using your product • Can they really be satisfied? • Is it reasonable on every project to satisfy the customer? Matt Penner - Inland Empire .Net User Group
What is a bug versus a feature request? Matt Penner - Inland Empire .Net User Group
What is a bug versus a feature request? • Bug • The system doesn’t work the way the spec says it should • The system doesn’t work the way your customers want it to • The system doesn’t work the way your customers expect it to • Are these Feature Requests? Matt Penner - Inland Empire .Net User Group
The 80/20 rule – User Scope Matt Penner - Inland Empire .Net User Group
The 80/20 rule – User Scope Simple internal app • Just analyzes and displays data • Drag-n-drop components • Little attention to UI or backend • Simple "click this" functionality • Enough to satisfy the requirements Matt Penner - Inland Empire .Net User Group
The 80/20 rule – User Scope Public facing or customer buy-in app • Items not directly related to the function are important • Scalability • UI • Help docs • etc Matt Penner - Inland Empire .Net User Group
The 80/20 rule – User Scope The dilemma • Dramatically different approaches • Often cannot be easily switched back and forth • Difficult to know which project is which • Today's home grown report app for accounting may be tomorrow's payroll system serving the entire enterprise. • Always develop the 20%? • Rich OO designs, optimizations, and scalability • Assume the 3 people using it today will be the 3 million using it tomorrow Matt Penner - Inland Empire .Net User Group
The 80/20 rule – Dev Scope Matt Penner - Inland Empire .Net User Group
The 80/20 rule – Dev Scope • When do you develop in house? • When do you buy off the shelf? Matt Penner - Inland Empire .Net User Group