Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Software Development in the Wild

isa
May 16, 2013

Software Development in the Wild

Turkish / English mixed presentation about the process, project management, culture, team, extreme programming, etc..

isa

May 16, 2013
Tweet

More Decks by isa

Other Decks in Programming

Transcript

  1. Gündemimiz •Development Methodologies •Agile Software Development •Project Management •DevOps (Developer

    Operations) •Extreme Programming •Important Extreme Programming Techniques
  2. Waterfall •Winston W. Royce (1970) •Sequential •Originated from Manufacturing and

    Construction •Didn’t Work as Winston suggested http://en.wikipedia.org/wiki/Waterfall_model
  3. RUP http://en.wikipedia.org/wiki/IBM_Rational_Unified_Process •IBM Rapid Unified Process •Invented by Rational Software

    •Multiple Phases with Iterations •Didn’t Work as planned •I actually haven’t seen anything created by IBM that worked
  4. Agile Software Development •Is it any different? Really? •Who is

    behind it? •It’s not TDD, nor Continuous Integration, nor XP
  5. Agile Manifesto •Individuals and interactions over processes and tools •Working

    software over comprehensive documentation •Customer collaboration over contract negotiation •Responding to change over following a plan http://agilemanifesto.org/
  6. Principles •Our highest priority is to satisfy the customer through

    early and continuous delivery of valuable software •Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage •Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale http://agilemanifesto.org/principles.html
  7. Principles •Business people and developers must work together daily throughout

    the project •Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done •The most efficient and effective method of conveying information to and within a development team is face- to-face conversation http://agilemanifesto.org/principles.html
  8. Principles •Working software is the primary measure of progress •Agile

    processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely •Continuous attention to technical excellence and good design enhances agility •Simplicity--the art of maximizing the amount of work not done--is essential http://agilemanifesto.org/principles.html
  9. Principles •The best architectures, requirements, and designs emerge from self-organizing

    teams •At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly http://agilemanifesto.org/principles.html
  10. DevOps •It’s all about Continuous Delivery •Working Software •Collaboration of

    People •Convergence of Processes •Creation and Exploitation of Tools
  11. Extreme Programming •Agile without XP has no meaning •It’s a

    culture and discipline •Requires passionate developers •Some practices overlaps with Agile principles
  12. Extreme Programming •Continuous Build, Continuous Integration, Continuous Deployment, Continuous Delivery

    •TDD, TFD, BDD, ATDD •Pair Programming, Code Reviews, Peer Reviews •Incremental Design, Evolutionary Architecture •User Stories, Information Dashboards, Iterative Development, Ten-Minute Build, etc..
  13. Testing in XP •What are these terms? TDD, TFD, BDD,

    ATDD.. •Different Tests •Unit and Integration Tests •Functional and Acceptance Tests •Regression and Smoke Tests •Performance and Load Tests
  14. Test-Driven Design •Opps, Test-Driven Development? •How do you want to

    use the code you develop? •Tests are side-effects •Legacy-Code and TDD?
  15. Pair Programming •You are not that SMART? Trust me! •No

    seriously, you are not that SMART!!! •Knowledge Sharing and Indispensable team members •Navigator and Driver •Ping-Pong •Remote Pairing?
  16. What About Architecture •SOLID Principles •Single Responsibility •Open/Close •Liskov •Interface

    Segregation •Dependency Injection (Inversion of Controls) http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod
  17. Good Citizen •Keep consistent state all times •No static fields

    •Never expect or return null •Fail fast •Constructor or method delegations •Prefer immutability http://picocontainer.codehaus.org/patterns.html
  18. Q/A