$30 off During Our Annual Pro Sale. View Details »

I, Programmer

I, Programmer

When I started in IT the roles were clearly separated. Business Analysts wrote requirements, Systems Analysts defined systems, Architects designed them, Programmers wrote the code and then spent weeks of their life engaged in the soul-crushing activity known as integration. In some organisations Testers would test the software and write reports. Cross-disciplined Analyst-Programmers were a rare and valuable commodity.

Over the last decade or so we have seen a shift towards “generalising specialists”, programmers who, as well as designing and building great software, can understand a business domain, design a user interface, participate in and automate some of the testing and deployment activities, and who are sometimes even responsible for the health and wellbeing of their own systems in production.

To succeed in this new world requires more than “3 years of C# programming”. The modern developer needs to be constantly reinventing themselves, learning, and helping others to do the same. In this session, Dan explores some of the skills and characteristics of the modern programmer, and suggests some ways you can grow them for yourself.

Daniel Terhorst-North
PRO

March 12, 2015
Tweet

More Decks by Daniel Terhorst-North

Other Decks in Programming

Transcript

  1. I, Programmer
    Dan North
    @tastapod

    View Slide

  2. The Old Testament

    View Slide

  3. In the beginning…
    1844: All the code in the world

    View Slide

  4. In the beginning…
    1844: All the programmers in the world

    View Slide

  5. 100 years later…

    View Slide

  6. Necessity is the mother of invention…
    1944: Programmers hack on a Colossus Mk 2

    View Slide

  7. People begin to specialise…
    1960s: Debugging a “WITCH” mainframe in academia

    View Slide

  8. Then we get commercial…
    1974: Writing business software on an IBM S/360

    View Slide

  9. There are Commandments…
    You shall have a Business Requirements Document
    You shall have a System Design Specification
    You shall have a Detailed Functional Specification
    You shall program in the manner of the Specification
    You shall have no other Specification before me
    Analysts shall Analyse, Architects shall Design
    Programmers shall Program, Testers shall Test

    View Slide

  10. And more Commandments…
    You shall complete a Formal Change Request
    You shall provide Release Documentation
    You shall not release to Production yourself, lest you incur
    the wrath of the Support Engineers
    You shall not hack on that which is in Production*

    * more of a guideline really

    View Slide

  11. The New Testament

    View Slide

  12. Then comes a new Covenant…
    2001: Programmers drafting the Agile Manifesto, Utah
    The Agile Manifesto
    We are uncovering better ways…
    Individuals and interactions over processes and tools

    Working software over comprehensive documentation

    Customer collaboration over contract negotiation

    Responding to change over following a plan

    View Slide

  13. The teachings of the prophet Bezos
    All teams shall expose Service Interfaces
    Teams shall only communicate through Interfaces
    There will be no other form of communication
    You shall do this in the manner of your choosing
    All services shall be designed for external use
    There will be no exceptions
    …as revealed to us by his servant Yegge

    View Slide

  14. The Book of Revelation

    View Slide

  15. I, Programmer

    View Slide

  16. You, Programmer
    You are
    …a programmer
    …working in a team
    …building a product
    …on a platform
    …in a department
    …in an organisation.

    View Slide

  17. …a programmer
    learns the language
    learns the libraries
    monitors the alternatives
    learns the toolchain
    engages with the community

    View Slide

  18. You, Programmer
    You are
    …a programmer
    …working in a team
    …building a product
    …on a platform
    …in a department
    …in an organisation.

    View Slide

  19. …working in a team
    understands the process
    understands the roles
    collaborates with others
    …all the others!
    contributes to the team’s health

    View Slide

  20. You, Programmer
    You are
    …a programmer
    …working in a team
    …building a product
    …on a platform
    …in a department
    …in an organisation.

    View Slide

  21. …building a product
    understands the business objective
    studies the domain
    knows the stakeholders
    …all the stakeholders!
    contributes to the product

    View Slide

  22. You, Programmer
    You are
    …a programmer
    …working in a team
    …building a product
    …on a platform
    …in a department
    …in an organisation.

    View Slide

  23. …on a platform
    understands the path to production
    cares about runtime concerns
    values automation
    …not all the automation!
    contributes to the platform

    View Slide

  24. You, Programmer
    You are
    …a programmer
    …working in a team
    …building a product
    …on a platform
    …in a department
    …in an organisation.

    View Slide

  25. …in a department
    understands the wider context
    makes local trade-offs
    shares their knowledge across teams
    …all their knowledge!
    contributes to the department

    View Slide

  26. You, Programmer
    You are
    …a programmer
    …working in a team
    …building a product
    …on a platform
    …in a department
    …in an organisation.

    View Slide

  27. …in an organisation.
    projects the organisation’s values
    cares about organisation’s reputation
    shares their knowledge externally
    …all their knowledge!
    contributes to the organisation

    View Slide

  28. You, Programmer
    You are
    …a programmer
    …working in a team
    …building a product
    …on a platform
    …in a department
    …in an organisation.

    View Slide

  29. Thank you
    Dan North

    @tastapod

    http://dannorth.net

    View Slide