Enterprise development (in .NET), Day 1
Enterprise development
Andrey Shchekin http://ashmind.com Sankt-Petersburg, 2009
Images © Mattahan Productions, Inc | http://mattahan.deviantart.com | http://mattahan.insocada.com
Clients
Finances
Medicine
Telecommunications
Enterprise development
1. Reliable 2.Secure 3. Maintainable 4.Flexible 5. Relevant
It’s all about quality
Code quality Process quality Developers Managers
And it actually makes your life easier.
1. Reliable
Imagine a bug in your doctor’s recipe app. Or in your bank balance.
Testing!
Code is testable and has tests. Lots of tests. Process requires testing (and team has testers)
So you have
Much less responsibility
3. Maintainable
Enterprise products live for years. No one likes to pay for fixes.
Readability and history
Code is simple (but not stupid) Process requires source control
So you have
No late time at work
4. Flexible
Clients never really know what they want. Business rules may change.
Architecture!
Code is modular and DRY There are some architectural metrics in place
So you have
Less time with Ctrl+C/Ctrl+V
5. Relevant
You are paid for business value 2 months to build a perfect framework = Fail
Focus!
Code is relevant (YAGNI) Process monitors requirements
So you have
Less code to rewrite and debug
Making Flexible and Relevant code is a most complex art in development.
2. Secure
Important aspect of any development. May be critical for enterprise. Can take any number of lectures. Just be careful.
Process: Waterfall
This work is licensed under the Creative Commons Attribution ShareAlike License version 2.5
image (c) Paul A. Hoadley
Process: Agile/XP
• • • • On-site Customer Metaphor Planning Game Pair Programming
• Small Releases
• • • •
•
• •
Collective Ownership Testing Refactoring Simple Design
Continuous Integration
Coding Standard 40-hour Week
Enterprise application
Application
3-Tiered Architecture
Business Rules Data Access User Interface
Onion Architecture
YAGNI?
Business Rules Data Access User Interface
Is there any other reason for Enterprise to use databases and distributed systems?
Scalability
1. Reliable 2.Secure 3. Maintainable 4.Flexible 5. Relevant 6.Scalable
What if you have
+ 2 web servers + 10Gb in database + 100000 users
What if you are
Google ?
™
Last thing
Enterprise development is a development. It can be quite simple.
Just don’t get bored. ;)
Questions