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

Cowboy Coding to Professional Development

Cowboy Coding to Professional Development

WordCamp Kansas City 2015 Presentation on moving from cowboy coding to professional development.

Slide notes and links available at http://brudtkuhl.com/cowboy-coding-to-professional-developer-wckc-2015/


Andy Brudtkuhl

June 13, 2015


  1. From Cowboy Coding to Professional Developer Andy Brudtkuhl @abrudtkuhl YouMetAndy.com/wckc

  2. What Is Cowboy Coding? … and why it is a

    necessary evil
  3. TL;DR Don’t code live on your production server. Use version

    control. Be nice, use standards, and avoid shiny object syndrome.
  4. What makes a better developer?

  5. Be pragmatic.

  6. Be empathetic. (this is not easy)

  7. None
  8. Use standards. (please)

  9. Tools Don’t Matter. Tools Mean Everything

  10. Be a good teammate.

  11. Avoid Shiny Objects

  12. Be verbose. (comment your code, describe your commits)

  13. Automate your busy work.

  14. Test your software (because someone else will)

  15. Don’t Repeat Yourself.

  16. None
  17. Setup a local dev environment.

  18. Local Dev Environment • MAMP Pro • Desktop Server •

  19. Use version control.

  20. What goes in Git? • Entire Site • Single Plugins

    and Themes • Never commit your wp-config.php file • Google “Git Ignore WordPress” for an example .gitignore file
  21. Sync your data.

  22. WP DB Migrate Pro • Use WP DB Migrate Pro

    • Migrate Data • Push / Pull Sync Data • Use WP_CLI addon to automate
  23. Deploy with sanity.

  24. Deploy with sanity • Dev / Test / Production environments

    • Stop doing things manually • Use WP-DB-MIGRATE to move data • Use WP-Pusher to deploy updates (no FTP, yay!) • Use Git on your server • Capistrano or Chef
  25. Being A Better WordPress Developer Tips and tools to be

    a better WordPress developer
  26. define( 'WP_DEBUG', true );

  27. Separate Concerns • Use Plugins for functionality and Themes for

    design • Don’t abuse functions.php • Use functionality plugins
  28. the loop.

  29. Follow WordPress Standards • Read the Codex • Follow WordPress

    developer standards for Themes, Plugins, and Core Contribution
  30. Use Core Features • Theme Customizer • Settings API •

    Options API • Image Thumbnails • Menu System • Widgets, Shortcodes • Custom Post Types & Taxonomies
  31. Enqueue All The Things • Include scripts and stylesheets in

    Themes and Plugins by enqueuing them • NEVER include your own version of jQuery
  32. Use Template Parts • Create reusable template parts • Build

    reusable loops • Reduce and Reuse code
  33. Validate, Sanitize, Escape • Validate = check user input •

    Sanitize = clean user input • Escape = securing user generated output
  34. Transients FTW • Simple Caching • Big Performance • Store

    data you expect to expire
  35. Use Starter Templates • WordPress Plugin Boilerplate • Theme templates

    like sage, roots, _s • GenerateWP.com
  36. Know variable scope • Don’t define your own Globals •

    Use namespaces and classes to properly scope your variables
  37. WP-CLI • A WordPress command line interface • Setup, install,

    configure sites from your terminal • Easily create scripts to spin up new sites • Automate Database migrations • Schedule Database Migrations
  38. Manage Dependencies • Use plugin_exists( ‘my-plugin’ ), class_exists( ‘MyClass’ ),

    or function_exists( ‘my_awesome_function’ ) • TGM Plugin Activation • Require / Recommend dependencies in your custom themes and plugins • Use composer • custom plugin or theme with third party dependencies
  39. My Workflow 1. Grab a task (Jira or Trello) 2.

    Pull latest version of project from Bitbucket 3. Pull latest version of data from Staging / Production 4. Code feature / fix bug 5. Commit and push updated code with comment and link back to ticket in Jira/Trello 6. Deploy with WP Pusher or Git
  40. My Tools • Editor: Atom.io • Local Dev: MAMP Pro

    • Terminal: iTerm • Source Control: Git with Bitbucket • Data Management: WP DB Migrate Pro • Deployment: WP Pusher • Site Management: InfiniteWP
  41. YouMetAndy.com/wckc @abrudtkuhl