SlideShare una empresa de Scribd logo
1 de 49
Descargar para leer sin conexión
Dynamic Languages
                 in the Enterprise
                 Ivo Jansch - ivo@ibuildings.com




Dynamic Languages in the Enterprise
What’s an Enterprise?
              “Any of several ships by that name
            in the Star Trek universe” – Wikipedia




“A business, company or comparable organization”

 Dynamic Languages in the Enterprise
Top 10 Polish Websites
1. Google
2. Nasza-klasa.pl
3. Onet
4. Allegro
5. Wirtualna Polska
6. YouTube
7. Interia.pl
8. Wikipedia
9. Fotka.pl
10. Gazeta


    Source: Alexa.com, March 2009
Dynamic Languages in the Enterprise
Top 10 Polish Websites
1. Google
 
 
 
 
               
    C, Python
2. Nasza-klasa.pl
 
             
    Java
3. Onet

 
 
 
 
                
    Tcl
4. Allegro
 
 
 
 
              
    PHP, Perl
5. Wirtualna Polska
             
    Java, PHP
6. YouTube
 
 
 
                
    Python
7. Interia.pl
 
 
 
             
    PHP
8. Wikipedia
 
 
 
              
    PHP
9. Fotka.pl

 
 
 
              
    PHP
10. Gazeta
 
 
 
 
              
    Java




Dynamic Languages in the Enterprise
The Quest So Far

                                      Enterprise



                                              SME


                                                    SOHO




Dynamic Languages in the Enterprise
Are we ‘enterprise ready’?




Dynamic Languages in the Enterprise
Are we‘enterprise ready’?




  Big                                       Small
                                         

 Enterprise friendly                      Lightweight

 enterpriCe                               Inexpensive

 CS required                              Easy to learn


                                              (ok, except perl ;-))


    Dynamic Languages in the Enterprise
A word from my girlfriend


                                      SIZE of the tool...
             It's not the



                        It's how you USE it.




Dynamic Languages in the Enterprise
Traditional metaphor

                                      LEGO bricks




Dynamic Languages in the Enterprise
Improved metaphor
                      The web is no longer a toy
               Let’s use the metaphor of actual bricks




Dynamic Languages in the Enterprise
About Bricks


•    Extreme Simplicity
•    Easy to learn
•    Versatile
•    Inexpensive




    Dynamic Languages in the Enterprise
Enterprise Development
                                      In 10 steps




Dynamic Languages in the Enterprise
Step 1 – The Team
     “I have read about your plans to build a new
         skyscraper and I am applying for a job.

I have a lot of experience with Bricks. I taught myself
   how to use them and have been maintaining our
           family shed for a few years now.”




 Dynamic Languages in the Enterprise
Step 1 – The Team
• Be a Software Engineer
• Train your skills
• Study OO principles
• Consider Certification



  Dynamic Languages in the Enterprise
Step 2 - Requirements
• What does the customer want?
• What will visitors want?
• What does the customer really need?




  Dynamic Languages in the Enterprise
Step 2 - Requirements
Functional Design
   •   Requirements Definition
   •   Interaction Design / Wireframes
   •   Flow Diagrams
   •   Tip: Axure




  Dynamic Languages in the Enterprise
Step 3 - Architecture
Don’t just start stacking bricks




                                        Create an architecture first

  Dynamic Languages in the Enterprise
Step 3 - Architecture
Technical Design
  •   Modeling
      • Class Diagrams
      • ER Diagrams (data model)
      • Collaboration Diagrams
      • Use Cases etc.
  •   Tools:
      • UML
      • Whiteboards




  Dynamic Languages in the Enterprise
Step 3 - Architecture
High Level Architectures:

   •   MVC (Model, View, Controller)
   •   SOA (Service Oriented Architecture)
   •   Multi-tier development (Frontend, Application, BL, Data)
   •   CBD (Component Based Development)




  Dynamic Languages in the Enterprise
Step 4 - Tools
You don’t need tools…



                                        But they make you productive




  Dynamic Languages in the Enterprise
Step 4 - Tools
Development:
   •   Eclipse
   •   Zend Studio
   •   Vim
   •   Komodo

IDE’s versus Editors
   •   Debugging & Profiling
   •   Syntax Check
   •   Cross-Referencing / Navigation



  Dynamic Languages in the Enterprise
Step 4 - Tools
Source Control
  •   CVS / SVN / MS VSS
  •   Bitkeeper / GIT


Documentation
  •   PHP - phpDocumentor
 http://phpdoc.org
  •   Python - Epydoc
 
       http://epydoc.sourceforge.net/

  •   Perl - OODoc
 
  
       http://perl.overmeer.net/oodoc/

  •   Ruby - RDoc
 
   
       http://rdoc.sourceforge.net/

  •   Wiki
     
   
  http://en.wikipedia.org/wiki/List_of_wiki_software



 Dynamic Languages in the Enterprise
Step 5 - Foundation
Start stacking bricks?
   •   How many bricks does it take?
   •   What about stability?




                                        Start with a foundation



  Dynamic Languages in the Enterprise
Step 5 - Foundation
Use a framework
  •   Provides guidelines (frame)
  •   Off the shelf components

Examples
  •   PHP - Zend Framework
            http://framework.zend.com

  •   Ruby - Rails
 
    
             http://rubyonrails.org/

  •   Python - Django
   
             http://www.djangoproject.com

  •   Perl - Catalyst
 
 
             http://www.catalystframework.org




 Dynamic Languages in the Enterprise
Step 5 - Foundation
The “Not Invented Here” Syndrome:


  •   “The existing frameworks are no good.
      
 
 I can do this better.”
  •   “This framework is no good.
      
 
 It can do A through Y but I need Z.”
  •   “This framework is too big.
      
 
 It provides A-Z but we only need A and B.”
  •   “I know there's a good framework.
      
 
 But I would like to learn.”



 Dynamic Languages in the Enterprise
Step 6 - Design Patterns

                            Requirement 1056.4:

            We need to be able to look outside,
            but we can't make holes in the wall
              (rain should be kept outside).

                    When it's sunny, a hole is ok.



Dynamic Languages in the Enterprise
Step 6 - Design Patterns
• A ‘window’ is a concept
  •    Best practice way of solving a particular problem

• In IT, we call this a ‘design pattern’
• Popular patterns on the web:
  •    MVC, Factory, Singleton, Registry, Decorator

• Good read:
  •    php|architect's Guide to PHP Design Patterns
       
- Jason E. Sweat




 Dynamic Languages in the Enterprise
Step 7 - Testing




  Is your software tested after it has gone live?

Dynamic Languages in the Enterprise
Step 7 - Testing
Various types of testing:
   •   Developer testing
   •   Functional testing
   •   Environment testing
   •   Performance testing
   •   Usability testing




  Dynamic Languages in the Enterprise
Step 7 - Testing
                          A common scenario…




Dynamic Languages in the Enterprise
Step 7 - Testing
                          The user complains…




                      MWOEHA!
                       BUG!




Dynamic Languages in the Enterprise
Step 7 - Testing
               Developer attacks the problem…




                fix_bug();




Dynamic Languages in the Enterprise
Step 7 - Testing
                                Problem Solved!




Dynamic Languages in the Enterprise
Step 7 - Testing
• Solution: Unit Tests
   •    Automated testing after each change
   •    Prevents regressions

• Testing for web applications:
   •    PHP - PHPUnit
 
                http://www.phpunit.de/ 

   •    Ruby - Test::Unit
 
            http://tinyurl.com/testunit

   •    Python - Unittest

             http://docs.python.org/library/unittest.html

   •    Perl - PerlUnit
 
 
            http://perlunit.sourceforge.net/


• Continuous Integration:
   •CruiseControl

 
                   http://cruisecontrol.sourceforge.net/



  Dynamic Languages in the Enterprise
Step 7 - Testing
• Test Driven Development
  1. Define functionality
  2. Create testcase
  3. Run test => test fails
  4. Implement functionality
      •   Test succeeds? Done
      •   Test fails? Refactor

  Repeat step 4 until finished




 Dynamic Languages in the Enterprise
Step 8 - Optimization

                                Users complain:


           “Every time I want coffee I have to go
               to the top floor to get some.”




Dynamic Languages in the Enterprise
Step 8 - Optimization
• Solution:
   •    Create small coffee corners on every floor so people don’t
        have to go to the main restaurant every time.

• Developers call this ‘caching’
   •    Don’t query the database everytime you need data
   •    Use locally stored copy (file or memory)

• Caching your framework for caching support
          solutions:
   •Check
   •    Memcached

                http://danga.com/memcached/
                               


   •                   


        Varnish
                   http://varnish.projects.linpro.no/



  Dynamic Languages in the Enterprise
Step 9 - Deployment
•    Lifecycle:
     •    Develop
     •    Test
     •    Deploy to staging environment
     •    Deploy to live


•    Use SVN
•    Code is just a part, don't forget the database
•    Create a 'Deployment & Release Profile'

    Dynamic Languages in the Enterprise
Step 9 - Deployment
                            System Architecture


                        PHP/Ruby/etc
                                              MySQL
                               Apache
                                      Linux


           From a simple single machine stack…

Dynamic Languages in the Enterprise
Step 9 - Deployment




   … to a High Availability, Scalable Architecture

Dynamic Languages in the Enterprise
Step 10 - Operations

Monitoring:
   •   Logfiles
   •   Monitor infrastructure (tools such as Nagios)
   •   Monitor application (tools such as Zend Platform)
   •   Monitor business (is the money still pouring in?)




  Dynamic Languages in the Enterprise
Step 10 - Operations
Debugging

  •   Ideal:

      “I had error x when I selected y after I clicked z”

  •   Reality:

      “It doesn't work!”
      “What exactly doesn't work, and what did you do?”
      “It just ******** didn't work, FIX IT.”




 Dynamic Languages in the Enterprise
Step 10 - Operations

Solutions:
   •   A ‘root cause’
       analysis tool
   •   Logging
   •   Context Capture




  Dynamic Languages in the Enterprise
Step 10 - Operations

Change management:


  •   Ticket system
  •   Stick to your deployment - use the DRP
  •   DON'T TOUCH THE LIVE ENVIRONMENT. EVAH!




 Dynamic Languages in the Enterprise
The Big Picture
                            (We’re almost done)




Dynamic Languages in the Enterprise
The Big Picture
• No ‘cowboy coding’, but structured steps
   •    Higher quality
   •    Software will be easier to maintain (and cheaper)

• Development methodology
   •    Waterfall
   •    Agile (DSDM, XP, Scrum)

• Software Development Life Cycle (SDLC)
   •    Adapt from existing methods, learn from experts
   •    Document it properly
   •    Make it the cornerstone of your development efforts

  Dynamic Languages in the Enterprise
More things to think about

• Planning
• Coding
• Implementation
• Security


 Dynamic Languages in the Enterprise
Shameless Plug
Book about this all:
   •   php|architect’s Guide to
       Enterprise PHP Development
   •   ISBN: 978-0-9738621-8-8
   •   Order at phparch.com
       or amazon.com
   •   http://www.enterprisephp.nl




  Dynamic Languages in the Enterprise
Questions?
                             ivo@ibuildings.com
                       http://www.ibuildings.com
                            http://www.jansch.nl
                   Twitter: @ijansch @ibuildings

Dynamic Languages in the Enterprise

Más contenido relacionado

La actualidad más candente

Quo vadis, JavaScript? Devday.pl keynote
Quo vadis, JavaScript? Devday.pl keynoteQuo vadis, JavaScript? Devday.pl keynote
Quo vadis, JavaScript? Devday.pl keynoteChristian Heilmann
 
What if-your-application-could-speak
What if-your-application-could-speakWhat if-your-application-could-speak
What if-your-application-could-speakMarcos Vinícius
 
PixelCrayons: Hire India's Top PHP Developers
PixelCrayons: Hire India's Top PHP DevelopersPixelCrayons: Hire India's Top PHP Developers
PixelCrayons: Hire India's Top PHP DevelopersPixel Crayons
 
What all things to consider for a good career in java
What all things to consider for a good career in javaWhat all things to consider for a good career in java
What all things to consider for a good career in javaJanBask Training
 
Java homework help
Java homework helpJava homework help
Java homework helpcalltutors
 
Gsm library for proteus the engineering projects
Gsm library for proteus   the engineering projectsGsm library for proteus   the engineering projects
Gsm library for proteus the engineering projectsZerihunDemere
 
Vim 讓你寫 Ruby 的速度飛起來
Vim 讓你寫 Ruby 的速度飛起來Vim 讓你寫 Ruby 的速度飛起來
Vim 讓你寫 Ruby 的速度飛起來Chris Houng
 
eSoftHead Service Introduction
eSoftHead Service IntroductioneSoftHead Service Introduction
eSoftHead Service IntroductionNguyen Hai
 
What is the best programming language for your web product?
What is the best programming language for your web product?What is the best programming language for your web product?
What is the best programming language for your web product?MobiDev
 
Web Frameworks of the Future
Web Frameworks of the FutureWeb Frameworks of the Future
Web Frameworks of the Futureelliando dias
 
Architecting your app in ext js 4, part 1 learn sencha
Architecting your app in ext js 4, part 1   learn   senchaArchitecting your app in ext js 4, part 1   learn   sencha
Architecting your app in ext js 4, part 1 learn senchaRahul Kumar
 

La actualidad más candente (15)

Javascript toolkit
Javascript toolkitJavascript toolkit
Javascript toolkit
 
Quo vadis, JavaScript? Devday.pl keynote
Quo vadis, JavaScript? Devday.pl keynoteQuo vadis, JavaScript? Devday.pl keynote
Quo vadis, JavaScript? Devday.pl keynote
 
What if-your-application-could-speak
What if-your-application-could-speakWhat if-your-application-could-speak
What if-your-application-could-speak
 
PixelCrayons: Hire India's Top PHP Developers
PixelCrayons: Hire India's Top PHP DevelopersPixelCrayons: Hire India's Top PHP Developers
PixelCrayons: Hire India's Top PHP Developers
 
What all things to consider for a good career in java
What all things to consider for a good career in javaWhat all things to consider for a good career in java
What all things to consider for a good career in java
 
Java homework help
Java homework helpJava homework help
Java homework help
 
Sonar
Sonar Sonar
Sonar
 
Gsm library for proteus the engineering projects
Gsm library for proteus   the engineering projectsGsm library for proteus   the engineering projects
Gsm library for proteus the engineering projects
 
PhanChuong
PhanChuongPhanChuong
PhanChuong
 
Vim 讓你寫 Ruby 的速度飛起來
Vim 讓你寫 Ruby 的速度飛起來Vim 讓你寫 Ruby 的速度飛起來
Vim 讓你寫 Ruby 的速度飛起來
 
eSoftHead Service Introduction
eSoftHead Service IntroductioneSoftHead Service Introduction
eSoftHead Service Introduction
 
What is the best programming language for your web product?
What is the best programming language for your web product?What is the best programming language for your web product?
What is the best programming language for your web product?
 
Web Frameworks of the Future
Web Frameworks of the FutureWeb Frameworks of the Future
Web Frameworks of the Future
 
Architecting your app in ext js 4, part 1 learn sencha
Architecting your app in ext js 4, part 1   learn   senchaArchitecting your app in ext js 4, part 1   learn   sencha
Architecting your app in ext js 4, part 1 learn sencha
 
TDD Mantra
TDD MantraTDD Mantra
TDD Mantra
 

Destacado

Social Media for the Public Sector presentation - Connected Nottingham - 3 De...
Social Media for the Public Sector presentation - Connected Nottingham - 3 De...Social Media for the Public Sector presentation - Connected Nottingham - 3 De...
Social Media for the Public Sector presentation - Connected Nottingham - 3 De...simonwakeman
 
Eva Todd: A wedding in Hluboka nad Vltavou, Czech Republic
Eva Todd: A wedding in Hluboka nad Vltavou, Czech RepublicEva Todd: A wedding in Hluboka nad Vltavou, Czech Republic
Eva Todd: A wedding in Hluboka nad Vltavou, Czech Republicvinion
 
Sv jur 2015 02 22_hľadanie boha uprostred zaneprázdnenosti.
Sv jur 2015 02 22_hľadanie boha uprostred zaneprázdnenosti.Sv jur 2015 02 22_hľadanie boha uprostred zaneprázdnenosti.
Sv jur 2015 02 22_hľadanie boha uprostred zaneprázdnenosti.Cirkev bratská Svätý Jur
 
Amy&Per Erik
Amy&Per ErikAmy&Per Erik
Amy&Per Erikvinion
 
Creating your own photographic workflow
Creating your own photographic workflowCreating your own photographic workflow
Creating your own photographic workflowRobert DeRobertis
 
Lost In The Kingdom Of Vorg
Lost In The Kingdom Of VorgLost In The Kingdom Of Vorg
Lost In The Kingdom Of VorgKwan Tuck Soon
 
Weather Presentation
Weather PresentationWeather Presentation
Weather Presentationbu.lauren
 
Whata Wonderful Worldby Ros
Whata Wonderful Worldby RosWhata Wonderful Worldby Ros
Whata Wonderful Worldby Rosmforcadell
 
Importance Of Being Driven
Importance Of Being DrivenImportance Of Being Driven
Importance Of Being DrivenAntonio Terreno
 
Deforestation
DeforestationDeforestation
Deforestationkimoneill
 
Merkatu Ikerkuntza 2. Gaia
Merkatu Ikerkuntza 2. GaiaMerkatu Ikerkuntza 2. Gaia
Merkatu Ikerkuntza 2. Gaiakatixa
 
Baresianfortravellers[1][1][1][1][1].zip
Baresianfortravellers[1][1][1][1][1].zipBaresianfortravellers[1][1][1][1][1].zip
Baresianfortravellers[1][1][1][1][1].zipChiara Antonacci
 
Rachel & Richards Wedding Slide Show
Rachel & Richards Wedding Slide ShowRachel & Richards Wedding Slide Show
Rachel & Richards Wedding Slide Showisraelmosheh
 
Manchester Net Tuesday June 2010
Manchester Net Tuesday June 2010Manchester Net Tuesday June 2010
Manchester Net Tuesday June 2010Jonathan Waddingham
 

Destacado (20)

Social Media for the Public Sector presentation - Connected Nottingham - 3 De...
Social Media for the Public Sector presentation - Connected Nottingham - 3 De...Social Media for the Public Sector presentation - Connected Nottingham - 3 De...
Social Media for the Public Sector presentation - Connected Nottingham - 3 De...
 
Eva Todd: A wedding in Hluboka nad Vltavou, Czech Republic
Eva Todd: A wedding in Hluboka nad Vltavou, Czech RepublicEva Todd: A wedding in Hluboka nad Vltavou, Czech Republic
Eva Todd: A wedding in Hluboka nad Vltavou, Czech Republic
 
Hľadanie boha ppt
Hľadanie boha pptHľadanie boha ppt
Hľadanie boha ppt
 
Sv jur 2015 02 22_hľadanie boha uprostred zaneprázdnenosti.
Sv jur 2015 02 22_hľadanie boha uprostred zaneprázdnenosti.Sv jur 2015 02 22_hľadanie boha uprostred zaneprázdnenosti.
Sv jur 2015 02 22_hľadanie boha uprostred zaneprázdnenosti.
 
Amy&Per Erik
Amy&Per ErikAmy&Per Erik
Amy&Per Erik
 
Creating your own photographic workflow
Creating your own photographic workflowCreating your own photographic workflow
Creating your own photographic workflow
 
Kavkaz 2009 + kazani
Kavkaz 2009 + kazaniKavkaz 2009 + kazani
Kavkaz 2009 + kazani
 
Lost In The Kingdom Of Vorg
Lost In The Kingdom Of VorgLost In The Kingdom Of Vorg
Lost In The Kingdom Of Vorg
 
Weather Presentation
Weather PresentationWeather Presentation
Weather Presentation
 
Something About The Web
Something About The WebSomething About The Web
Something About The Web
 
Kazen evanjelizacia&ucenictvo-16.02.2014
Kazen evanjelizacia&ucenictvo-16.02.2014Kazen evanjelizacia&ucenictvo-16.02.2014
Kazen evanjelizacia&ucenictvo-16.02.2014
 
Whata Wonderful Worldby Ros
Whata Wonderful Worldby RosWhata Wonderful Worldby Ros
Whata Wonderful Worldby Ros
 
Icon in iphone itouch
Icon in iphone itouchIcon in iphone itouch
Icon in iphone itouch
 
Importance Of Being Driven
Importance Of Being DrivenImportance Of Being Driven
Importance Of Being Driven
 
Deforestation
DeforestationDeforestation
Deforestation
 
5 H-1B Cap 2016 Filing Secrets from US Immigration Lawyer
5 H-1B Cap 2016 Filing Secrets from US Immigration Lawyer5 H-1B Cap 2016 Filing Secrets from US Immigration Lawyer
5 H-1B Cap 2016 Filing Secrets from US Immigration Lawyer
 
Merkatu Ikerkuntza 2. Gaia
Merkatu Ikerkuntza 2. GaiaMerkatu Ikerkuntza 2. Gaia
Merkatu Ikerkuntza 2. Gaia
 
Baresianfortravellers[1][1][1][1][1].zip
Baresianfortravellers[1][1][1][1][1].zipBaresianfortravellers[1][1][1][1][1].zip
Baresianfortravellers[1][1][1][1][1].zip
 
Rachel & Richards Wedding Slide Show
Rachel & Richards Wedding Slide ShowRachel & Richards Wedding Slide Show
Rachel & Richards Wedding Slide Show
 
Manchester Net Tuesday June 2010
Manchester Net Tuesday June 2010Manchester Net Tuesday June 2010
Manchester Net Tuesday June 2010
 

Similar a Dynamic Languages In The Enterprise (4developers march 2009)

Enterprise PHP (php|works 2008)
Enterprise PHP (php|works 2008)Enterprise PHP (php|works 2008)
Enterprise PHP (php|works 2008)Ivo Jansch
 
Enterprise PHP Development - ZendCon 2008
Enterprise PHP Development - ZendCon 2008Enterprise PHP Development - ZendCon 2008
Enterprise PHP Development - ZendCon 2008Ivo Jansch
 
Scripting Recipes for Testers
Scripting Recipes for TestersScripting Recipes for Testers
Scripting Recipes for TestersAdam Goucher
 
Phpworks enterprise-php-1227605806710884-9
Phpworks enterprise-php-1227605806710884-9Phpworks enterprise-php-1227605806710884-9
Phpworks enterprise-php-1227605806710884-9PrinceGuru MS
 
PHP in the Real World
PHP in the Real WorldPHP in the Real World
PHP in the Real WorldIvo Jansch
 
Enterprise PHP (PHP London Conference 2008)
Enterprise PHP (PHP London Conference 2008)Enterprise PHP (PHP London Conference 2008)
Enterprise PHP (PHP London Conference 2008)Ivo Jansch
 
Professional PHP: an open-source alternative for enterprise development [Kort...
Professional PHP: an open-source alternative for enterprise development [Kort...Professional PHP: an open-source alternative for enterprise development [Kort...
Professional PHP: an open-source alternative for enterprise development [Kort...Combell NV
 
The 7 Sins of Software Engineers in HEP
The 7 Sins of Software Engineers in HEPThe 7 Sins of Software Engineers in HEP
The 7 Sins of Software Engineers in HEPIoannis Baltopoulos
 
Programming Language Selection
Programming Language SelectionProgramming Language Selection
Programming Language SelectionDhananjay Nene
 
Introduction To Software Engineering
Introduction To Software EngineeringIntroduction To Software Engineering
Introduction To Software EngineeringLeyla Bonilla
 
Theory and practice – migrating your legacy code into our modern test drive...
Theory and practice – migrating your  legacy code into our modern test  drive...Theory and practice – migrating your  legacy code into our modern test  drive...
Theory and practice – migrating your legacy code into our modern test drive...Lars Jankowfsky
 
Introduction to Extreme Programming
Introduction to Extreme ProgrammingIntroduction to Extreme Programming
Introduction to Extreme ProgrammingNaresh Jain
 
PHP Mega Meetup, Sep, 2020, Anti patterns in php
PHP Mega Meetup, Sep, 2020, Anti patterns in phpPHP Mega Meetup, Sep, 2020, Anti patterns in php
PHP Mega Meetup, Sep, 2020, Anti patterns in phpAhmed Abdou
 
Jay Phillips's Presentation at eComm 2009
Jay Phillips's Presentation at eComm 2009Jay Phillips's Presentation at eComm 2009
Jay Phillips's Presentation at eComm 2009eCommConf
 
Merb For The Enterprise
Merb For The EnterpriseMerb For The Enterprise
Merb For The EnterpriseMatt Aimonetti
 
Javascript Framework Roundup FYB
Javascript Framework Roundup FYBJavascript Framework Roundup FYB
Javascript Framework Roundup FYBnukeevry1
 
Living in a Multi-lingual World: Internationalization in Web and Desktop Appl...
Living in a Multi-lingual World: Internationalization in Web and Desktop Appl...Living in a Multi-lingual World: Internationalization in Web and Desktop Appl...
Living in a Multi-lingual World: Internationalization in Web and Desktop Appl...adunne
 

Similar a Dynamic Languages In The Enterprise (4developers march 2009) (20)

Enterprise PHP (php|works 2008)
Enterprise PHP (php|works 2008)Enterprise PHP (php|works 2008)
Enterprise PHP (php|works 2008)
 
Enterprise PHP Development - ZendCon 2008
Enterprise PHP Development - ZendCon 2008Enterprise PHP Development - ZendCon 2008
Enterprise PHP Development - ZendCon 2008
 
Amoocon May 2009 Germany
Amoocon May 2009   GermanyAmoocon May 2009   Germany
Amoocon May 2009 Germany
 
Scripting Recipes for Testers
Scripting Recipes for TestersScripting Recipes for Testers
Scripting Recipes for Testers
 
Phpworks enterprise-php-1227605806710884-9
Phpworks enterprise-php-1227605806710884-9Phpworks enterprise-php-1227605806710884-9
Phpworks enterprise-php-1227605806710884-9
 
PHP in the Real World
PHP in the Real WorldPHP in the Real World
PHP in the Real World
 
Enterprise PHP (PHP London Conference 2008)
Enterprise PHP (PHP London Conference 2008)Enterprise PHP (PHP London Conference 2008)
Enterprise PHP (PHP London Conference 2008)
 
Professional PHP: an open-source alternative for enterprise development [Kort...
Professional PHP: an open-source alternative for enterprise development [Kort...Professional PHP: an open-source alternative for enterprise development [Kort...
Professional PHP: an open-source alternative for enterprise development [Kort...
 
The 7 Sins of Software Engineers in HEP
The 7 Sins of Software Engineers in HEPThe 7 Sins of Software Engineers in HEP
The 7 Sins of Software Engineers in HEP
 
Becoming A Php Ninja
Becoming A Php NinjaBecoming A Php Ninja
Becoming A Php Ninja
 
Symfony for non-techies
Symfony for non-techiesSymfony for non-techies
Symfony for non-techies
 
Programming Language Selection
Programming Language SelectionProgramming Language Selection
Programming Language Selection
 
Introduction To Software Engineering
Introduction To Software EngineeringIntroduction To Software Engineering
Introduction To Software Engineering
 
Theory and practice – migrating your legacy code into our modern test drive...
Theory and practice – migrating your  legacy code into our modern test  drive...Theory and practice – migrating your  legacy code into our modern test  drive...
Theory and practice – migrating your legacy code into our modern test drive...
 
Introduction to Extreme Programming
Introduction to Extreme ProgrammingIntroduction to Extreme Programming
Introduction to Extreme Programming
 
PHP Mega Meetup, Sep, 2020, Anti patterns in php
PHP Mega Meetup, Sep, 2020, Anti patterns in phpPHP Mega Meetup, Sep, 2020, Anti patterns in php
PHP Mega Meetup, Sep, 2020, Anti patterns in php
 
Jay Phillips's Presentation at eComm 2009
Jay Phillips's Presentation at eComm 2009Jay Phillips's Presentation at eComm 2009
Jay Phillips's Presentation at eComm 2009
 
Merb For The Enterprise
Merb For The EnterpriseMerb For The Enterprise
Merb For The Enterprise
 
Javascript Framework Roundup FYB
Javascript Framework Roundup FYBJavascript Framework Roundup FYB
Javascript Framework Roundup FYB
 
Living in a Multi-lingual World: Internationalization in Web and Desktop Appl...
Living in a Multi-lingual World: Internationalization in Web and Desktop Appl...Living in a Multi-lingual World: Internationalization in Web and Desktop Appl...
Living in a Multi-lingual World: Internationalization in Web and Desktop Appl...
 

Más de Ivo Jansch

Own Your Apps
Own Your Apps Own Your Apps
Own Your Apps Ivo Jansch
 
PHP Development In The Cloud (php|tek edition)
PHP Development In The Cloud (php|tek edition)PHP Development In The Cloud (php|tek edition)
PHP Development In The Cloud (php|tek edition)Ivo Jansch
 
Mobile for PHP developers
Mobile for PHP developersMobile for PHP developers
Mobile for PHP developersIvo Jansch
 
Building an SSO platform in PHP (Zend Webinar Edition)
Building an SSO platform in PHP (Zend Webinar Edition)Building an SSO platform in PHP (Zend Webinar Edition)
Building an SSO platform in PHP (Zend Webinar Edition)Ivo Jansch
 
The Business Case For Telecommuting
The Business Case For TelecommutingThe Business Case For Telecommuting
The Business Case For TelecommutingIvo Jansch
 
Php Development In The Cloud
Php Development In The CloudPhp Development In The Cloud
Php Development In The CloudIvo Jansch
 
PHP in a mobile ecosystem
PHP in a mobile ecosystem PHP in a mobile ecosystem
PHP in a mobile ecosystem Ivo Jansch
 
27 Ways To Be A Better Developer (PHPBenelux 2011)
27 Ways To Be A Better Developer (PHPBenelux 2011)27 Ways To Be A Better Developer (PHPBenelux 2011)
27 Ways To Be A Better Developer (PHPBenelux 2011)Ivo Jansch
 
Building an SSO platform in php (Zendcon 2010)
Building an SSO platform in php (Zendcon 2010)Building an SSO platform in php (Zendcon 2010)
Building an SSO platform in php (Zendcon 2010)Ivo Jansch
 
PHP in a Mobile Ecosystem (Zendcon 2010)
PHP in a Mobile Ecosystem (Zendcon 2010)PHP in a Mobile Ecosystem (Zendcon 2010)
PHP in a Mobile Ecosystem (Zendcon 2010)Ivo Jansch
 
PHP and the Cloud (phpbenelux conference)
PHP and the Cloud (phpbenelux conference)PHP and the Cloud (phpbenelux conference)
PHP and the Cloud (phpbenelux conference)Ivo Jansch
 
Content Management Selection and Strategy
Content Management Selection and StrategyContent Management Selection and Strategy
Content Management Selection and StrategyIvo Jansch
 
PHP and the Cloud
PHP and the CloudPHP and the Cloud
PHP and the CloudIvo Jansch
 
Enterprise PHP Development (Dutch PHP Conference 2008)
Enterprise PHP Development (Dutch PHP Conference 2008)Enterprise PHP Development (Dutch PHP Conference 2008)
Enterprise PHP Development (Dutch PHP Conference 2008)Ivo Jansch
 
Hello Enterprise, my name is PHP
Hello Enterprise, my name is PHPHello Enterprise, my name is PHP
Hello Enterprise, my name is PHPIvo Jansch
 
Introduction to PHP (Casino Affiliate Convention 2008)
Introduction to PHP (Casino Affiliate Convention 2008)Introduction to PHP (Casino Affiliate Convention 2008)
Introduction to PHP (Casino Affiliate Convention 2008)Ivo Jansch
 
Maatwerk Software
Maatwerk SoftwareMaatwerk Software
Maatwerk SoftwareIvo Jansch
 
Introductie Web 2.0
Introductie Web 2.0Introductie Web 2.0
Introductie Web 2.0Ivo Jansch
 
Migrating from PHP4 To PHP5 - Zend Webinar
Migrating from PHP4 To PHP5 - Zend WebinarMigrating from PHP4 To PHP5 - Zend Webinar
Migrating from PHP4 To PHP5 - Zend WebinarIvo Jansch
 
Wat is Open Source?
Wat is Open Source?Wat is Open Source?
Wat is Open Source?Ivo Jansch
 

Más de Ivo Jansch (20)

Own Your Apps
Own Your Apps Own Your Apps
Own Your Apps
 
PHP Development In The Cloud (php|tek edition)
PHP Development In The Cloud (php|tek edition)PHP Development In The Cloud (php|tek edition)
PHP Development In The Cloud (php|tek edition)
 
Mobile for PHP developers
Mobile for PHP developersMobile for PHP developers
Mobile for PHP developers
 
Building an SSO platform in PHP (Zend Webinar Edition)
Building an SSO platform in PHP (Zend Webinar Edition)Building an SSO platform in PHP (Zend Webinar Edition)
Building an SSO platform in PHP (Zend Webinar Edition)
 
The Business Case For Telecommuting
The Business Case For TelecommutingThe Business Case For Telecommuting
The Business Case For Telecommuting
 
Php Development In The Cloud
Php Development In The CloudPhp Development In The Cloud
Php Development In The Cloud
 
PHP in a mobile ecosystem
PHP in a mobile ecosystem PHP in a mobile ecosystem
PHP in a mobile ecosystem
 
27 Ways To Be A Better Developer (PHPBenelux 2011)
27 Ways To Be A Better Developer (PHPBenelux 2011)27 Ways To Be A Better Developer (PHPBenelux 2011)
27 Ways To Be A Better Developer (PHPBenelux 2011)
 
Building an SSO platform in php (Zendcon 2010)
Building an SSO platform in php (Zendcon 2010)Building an SSO platform in php (Zendcon 2010)
Building an SSO platform in php (Zendcon 2010)
 
PHP in a Mobile Ecosystem (Zendcon 2010)
PHP in a Mobile Ecosystem (Zendcon 2010)PHP in a Mobile Ecosystem (Zendcon 2010)
PHP in a Mobile Ecosystem (Zendcon 2010)
 
PHP and the Cloud (phpbenelux conference)
PHP and the Cloud (phpbenelux conference)PHP and the Cloud (phpbenelux conference)
PHP and the Cloud (phpbenelux conference)
 
Content Management Selection and Strategy
Content Management Selection and StrategyContent Management Selection and Strategy
Content Management Selection and Strategy
 
PHP and the Cloud
PHP and the CloudPHP and the Cloud
PHP and the Cloud
 
Enterprise PHP Development (Dutch PHP Conference 2008)
Enterprise PHP Development (Dutch PHP Conference 2008)Enterprise PHP Development (Dutch PHP Conference 2008)
Enterprise PHP Development (Dutch PHP Conference 2008)
 
Hello Enterprise, my name is PHP
Hello Enterprise, my name is PHPHello Enterprise, my name is PHP
Hello Enterprise, my name is PHP
 
Introduction to PHP (Casino Affiliate Convention 2008)
Introduction to PHP (Casino Affiliate Convention 2008)Introduction to PHP (Casino Affiliate Convention 2008)
Introduction to PHP (Casino Affiliate Convention 2008)
 
Maatwerk Software
Maatwerk SoftwareMaatwerk Software
Maatwerk Software
 
Introductie Web 2.0
Introductie Web 2.0Introductie Web 2.0
Introductie Web 2.0
 
Migrating from PHP4 To PHP5 - Zend Webinar
Migrating from PHP4 To PHP5 - Zend WebinarMigrating from PHP4 To PHP5 - Zend Webinar
Migrating from PHP4 To PHP5 - Zend Webinar
 
Wat is Open Source?
Wat is Open Source?Wat is Open Source?
Wat is Open Source?
 

Último

(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...AliaaTarek5
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditSkynet Technologies
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Scott Andery
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...panagenda
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 

Último (20)

(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance Audit
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 

Dynamic Languages In The Enterprise (4developers march 2009)

  • 1. Dynamic Languages in the Enterprise Ivo Jansch - ivo@ibuildings.com Dynamic Languages in the Enterprise
  • 2. What’s an Enterprise? “Any of several ships by that name in the Star Trek universe” – Wikipedia “A business, company or comparable organization” Dynamic Languages in the Enterprise
  • 3. Top 10 Polish Websites 1. Google 2. Nasza-klasa.pl 3. Onet 4. Allegro 5. Wirtualna Polska 6. YouTube 7. Interia.pl 8. Wikipedia 9. Fotka.pl 10. Gazeta Source: Alexa.com, March 2009 Dynamic Languages in the Enterprise
  • 4. Top 10 Polish Websites 1. Google C, Python 2. Nasza-klasa.pl Java 3. Onet Tcl 4. Allegro PHP, Perl 5. Wirtualna Polska Java, PHP 6. YouTube Python 7. Interia.pl PHP 8. Wikipedia PHP 9. Fotka.pl PHP 10. Gazeta Java Dynamic Languages in the Enterprise
  • 5. The Quest So Far Enterprise SME SOHO Dynamic Languages in the Enterprise
  • 6. Are we ‘enterprise ready’? Dynamic Languages in the Enterprise
  • 7. Are we‘enterprise ready’? Big Small    Enterprise friendly  Lightweight  enterpriCe  Inexpensive  CS required  Easy to learn (ok, except perl ;-)) Dynamic Languages in the Enterprise
  • 8. A word from my girlfriend SIZE of the tool... It's not the It's how you USE it. Dynamic Languages in the Enterprise
  • 9. Traditional metaphor LEGO bricks Dynamic Languages in the Enterprise
  • 10. Improved metaphor The web is no longer a toy Let’s use the metaphor of actual bricks Dynamic Languages in the Enterprise
  • 11. About Bricks • Extreme Simplicity • Easy to learn • Versatile • Inexpensive Dynamic Languages in the Enterprise
  • 12. Enterprise Development In 10 steps Dynamic Languages in the Enterprise
  • 13. Step 1 – The Team “I have read about your plans to build a new skyscraper and I am applying for a job. I have a lot of experience with Bricks. I taught myself how to use them and have been maintaining our family shed for a few years now.” Dynamic Languages in the Enterprise
  • 14. Step 1 – The Team • Be a Software Engineer • Train your skills • Study OO principles • Consider Certification Dynamic Languages in the Enterprise
  • 15. Step 2 - Requirements • What does the customer want? • What will visitors want? • What does the customer really need? Dynamic Languages in the Enterprise
  • 16. Step 2 - Requirements Functional Design • Requirements Definition • Interaction Design / Wireframes • Flow Diagrams • Tip: Axure Dynamic Languages in the Enterprise
  • 17. Step 3 - Architecture Don’t just start stacking bricks Create an architecture first Dynamic Languages in the Enterprise
  • 18. Step 3 - Architecture Technical Design • Modeling • Class Diagrams • ER Diagrams (data model) • Collaboration Diagrams • Use Cases etc. • Tools: • UML • Whiteboards Dynamic Languages in the Enterprise
  • 19. Step 3 - Architecture High Level Architectures: • MVC (Model, View, Controller) • SOA (Service Oriented Architecture) • Multi-tier development (Frontend, Application, BL, Data) • CBD (Component Based Development) Dynamic Languages in the Enterprise
  • 20. Step 4 - Tools You don’t need tools… But they make you productive Dynamic Languages in the Enterprise
  • 21. Step 4 - Tools Development: • Eclipse • Zend Studio • Vim • Komodo IDE’s versus Editors • Debugging & Profiling • Syntax Check • Cross-Referencing / Navigation Dynamic Languages in the Enterprise
  • 22. Step 4 - Tools Source Control • CVS / SVN / MS VSS • Bitkeeper / GIT Documentation • PHP - phpDocumentor http://phpdoc.org • Python - Epydoc http://epydoc.sourceforge.net/ • Perl - OODoc http://perl.overmeer.net/oodoc/ • Ruby - RDoc http://rdoc.sourceforge.net/ • Wiki http://en.wikipedia.org/wiki/List_of_wiki_software Dynamic Languages in the Enterprise
  • 23. Step 5 - Foundation Start stacking bricks? • How many bricks does it take? • What about stability? Start with a foundation Dynamic Languages in the Enterprise
  • 24. Step 5 - Foundation Use a framework • Provides guidelines (frame) • Off the shelf components Examples • PHP - Zend Framework http://framework.zend.com • Ruby - Rails http://rubyonrails.org/ • Python - Django http://www.djangoproject.com • Perl - Catalyst http://www.catalystframework.org Dynamic Languages in the Enterprise
  • 25. Step 5 - Foundation The “Not Invented Here” Syndrome: • “The existing frameworks are no good. I can do this better.” • “This framework is no good. It can do A through Y but I need Z.” • “This framework is too big. It provides A-Z but we only need A and B.” • “I know there's a good framework. But I would like to learn.” Dynamic Languages in the Enterprise
  • 26. Step 6 - Design Patterns Requirement 1056.4: We need to be able to look outside, but we can't make holes in the wall (rain should be kept outside). When it's sunny, a hole is ok. Dynamic Languages in the Enterprise
  • 27. Step 6 - Design Patterns • A ‘window’ is a concept • Best practice way of solving a particular problem • In IT, we call this a ‘design pattern’ • Popular patterns on the web: • MVC, Factory, Singleton, Registry, Decorator • Good read: • php|architect's Guide to PHP Design Patterns - Jason E. Sweat Dynamic Languages in the Enterprise
  • 28. Step 7 - Testing Is your software tested after it has gone live? Dynamic Languages in the Enterprise
  • 29. Step 7 - Testing Various types of testing: • Developer testing • Functional testing • Environment testing • Performance testing • Usability testing Dynamic Languages in the Enterprise
  • 30. Step 7 - Testing A common scenario… Dynamic Languages in the Enterprise
  • 31. Step 7 - Testing The user complains… MWOEHA! BUG! Dynamic Languages in the Enterprise
  • 32. Step 7 - Testing Developer attacks the problem… fix_bug(); Dynamic Languages in the Enterprise
  • 33. Step 7 - Testing Problem Solved! Dynamic Languages in the Enterprise
  • 34. Step 7 - Testing • Solution: Unit Tests • Automated testing after each change • Prevents regressions • Testing for web applications: • PHP - PHPUnit http://www.phpunit.de/ • Ruby - Test::Unit http://tinyurl.com/testunit • Python - Unittest http://docs.python.org/library/unittest.html • Perl - PerlUnit http://perlunit.sourceforge.net/ • Continuous Integration: •CruiseControl http://cruisecontrol.sourceforge.net/ Dynamic Languages in the Enterprise
  • 35. Step 7 - Testing • Test Driven Development 1. Define functionality 2. Create testcase 3. Run test => test fails 4. Implement functionality • Test succeeds? Done • Test fails? Refactor Repeat step 4 until finished Dynamic Languages in the Enterprise
  • 36. Step 8 - Optimization Users complain: “Every time I want coffee I have to go to the top floor to get some.” Dynamic Languages in the Enterprise
  • 37. Step 8 - Optimization • Solution: • Create small coffee corners on every floor so people don’t have to go to the main restaurant every time. • Developers call this ‘caching’ • Don’t query the database everytime you need data • Use locally stored copy (file or memory) • Caching your framework for caching support solutions: •Check • Memcached http://danga.com/memcached/ • Varnish http://varnish.projects.linpro.no/ Dynamic Languages in the Enterprise
  • 38. Step 9 - Deployment • Lifecycle: • Develop • Test • Deploy to staging environment • Deploy to live • Use SVN • Code is just a part, don't forget the database • Create a 'Deployment & Release Profile' Dynamic Languages in the Enterprise
  • 39. Step 9 - Deployment System Architecture PHP/Ruby/etc MySQL Apache Linux From a simple single machine stack… Dynamic Languages in the Enterprise
  • 40. Step 9 - Deployment … to a High Availability, Scalable Architecture Dynamic Languages in the Enterprise
  • 41. Step 10 - Operations Monitoring: • Logfiles • Monitor infrastructure (tools such as Nagios) • Monitor application (tools such as Zend Platform) • Monitor business (is the money still pouring in?) Dynamic Languages in the Enterprise
  • 42. Step 10 - Operations Debugging • Ideal: “I had error x when I selected y after I clicked z” • Reality: “It doesn't work!” “What exactly doesn't work, and what did you do?” “It just ******** didn't work, FIX IT.” Dynamic Languages in the Enterprise
  • 43. Step 10 - Operations Solutions: • A ‘root cause’ analysis tool • Logging • Context Capture Dynamic Languages in the Enterprise
  • 44. Step 10 - Operations Change management: • Ticket system • Stick to your deployment - use the DRP • DON'T TOUCH THE LIVE ENVIRONMENT. EVAH! Dynamic Languages in the Enterprise
  • 45. The Big Picture (We’re almost done) Dynamic Languages in the Enterprise
  • 46. The Big Picture • No ‘cowboy coding’, but structured steps • Higher quality • Software will be easier to maintain (and cheaper) • Development methodology • Waterfall • Agile (DSDM, XP, Scrum) • Software Development Life Cycle (SDLC) • Adapt from existing methods, learn from experts • Document it properly • Make it the cornerstone of your development efforts Dynamic Languages in the Enterprise
  • 47. More things to think about • Planning • Coding • Implementation • Security Dynamic Languages in the Enterprise
  • 48. Shameless Plug Book about this all: • php|architect’s Guide to Enterprise PHP Development • ISBN: 978-0-9738621-8-8 • Order at phparch.com or amazon.com • http://www.enterprisephp.nl Dynamic Languages in the Enterprise
  • 49. Questions? ivo@ibuildings.com http://www.ibuildings.com http://www.jansch.nl Twitter: @ijansch @ibuildings Dynamic Languages in the Enterprise