No matter what language you use, developing code is the same ñ spec, code, deploy, maintain. The “Big Boys” have teams to manage each task, but what happens when you don’t? I’ll go over some different methods for maintaining internal and external programs that are cheap, open source, and make your life easier. PHP has a plethora of tools for us to use to effectively code and maintain our projects; and the best part is that they are generally inexpensive or even free. The trick is finding and using these tools effectively in a workflow that the developer can use.
2. Who Am I?
Chris Tankersley
Been Doing PHP for 9+ Years
Lots of projects no one uses, and a few that
some do:
https://github.com/dragonmantank
Worked in and with “enterprise” developers
2
3. So what is “Enterprise”?
What you think you are getting:
Robust, Powerful software
Structured to meet your needs
Standardized development and best practices
What most of them really are:
Overly complicated
Unrealistic
$$$$$$$$$$$$$$$$$$$$$$$$$$$
3
4. So what is “Enterprise”?
What you think you are getting:
Robust, Powerful software
Structured to meet your needs
Standardized development and best practices
What most of them really are:
Overly complicated
Unrealistic
$$$$$$$$$$$$$$$$$$$$$$$$$$$
4
5. How do you become Enterprise?
Pass (parts) of the Joel Test
Project Management
Managed Environments
Automated Processes
Standards!
5
6. The Joel Test
1. Do you have a spec?
2. Do you use source control?
3. Can you make a build in one step?
4. Do you make daily builds?
5. Do you have an up-to-date schedule?
6. Do you have a bug database?
Or at least the relevant parts
6
7. Project Management
Pick a project management style
SCRUM
Kanban
Generate a functional and technical spec
Formal documents
User stories
Stick with it
You can‟t do work unless you know what needs to be done
7
12. Managed Environments
A work area with a specific purpose
Should have at least these three areas:
Development
Quality
Production
If you can, add „Integration‟ before
Production
Code always moves up, not down, the
chain
12
13. Development
Here Be Dragons
Code here is never considered stable
Can be any machine (local, a VM, space on a server, wherever)
13
14. Quality
Code should always work here (ignoring bugs)
This is where your QA testers live
Should be as close to Production‟s setup as possible
Should have logging and debugging on
14
15. Integration
Production-lite
Used to catch deployment bugs
Uses production data
Should be EXACTLY the same as Production
Same OS, configuration, and version levels
15
19. Love your IDE
Pick an IDE (or a good text editor) and learn it
For text editing I prefer vim or SublimeText
For IDEs I prefer Zend Studio or PHPStorm
Pick what you use based on the power it gives you
19
20. Source Control
Pick One, it doesn‟t matter
But don‟t pick Visual Source Safe
Make sure that it works with your other tools
When in doubt, use git
20
21. Quality Assurance
Setting up QA automation will help you find things that break
PHPUnit/Behat
Selenium/phantomjs + casperjs
PHPLOC
PHP Mess Detector
PHP_CodeSniffer
PHP Copy/Paste Dectector
21
22. Continuous Integration
Act of automating build tasks
How is a PHP project built?
Check out the source code from the SCM
Run the unit tests
Run any code helpers
Build documentation
Packaging
22
24. What about the real world?
I‟VE PAINTED A WONDERFUL PICTURE, BUT PUTTING IT INTO PRACTICE IS
SOMETHING ELSE
24
25. Get the pieces into place
Get Proper Specs
Get Source Control
Get Task/Bug Tracking
Get Environments
Get the tools
25
26. Automate as much as possible
Every step (but the specs, scheduling, and budget) can be
automated
You don‟t have to automate all of the steps
Some automation is better than nothing
Start small
26
27. Development
Get a good IDE/Text Editor that you are familiar with
Use the QA tools to make sure your code isn‟t breaking
There‟s a reason TDD/BDD keeps coming up at conferences
Keep track of bugs, and be strict about people following the
process
27