Culp http://www.Geekyboy.com In this presentation we will discuss different tips and tricks that help make development faster, easier, and less stressful.
is better than the illusion of collaborative – Many startup companies like to think that long tables without walls or partitions will foster communication and creativity. While somewhat true, it is wrong and usually (but not always) only a means to be “cheap” and micro-manage. – Developers should be separated from other departments. (See Flexibility later.) – Developers need quiet and no distractions to do their best and fastest work. (In the zone) – Developers will find a way to communicate or brainstorm when/if needed. (IRC, IM, Conference room, etc.) They will even do this in an open environment to gain control over their interruptions. – Buy a door, gain a free programmer
Buy more pixels, gain another free developer – Monitors are our canvas, and more canvas area is better. – Wide screen 27” and up, or 2 smaller screens. – Allows IDE to be maximized on one screen while using browser on the other. Looking at one screen while manipulating another is much faster than Alt+Tab to switch between windows. • LOTS of RAM! – More RAM means a developer can keep more things open at once. Therefore no need wait while shutting down apps to open others.
Books are cheap monitors – Most of us use Google for problems, but a good book will also get mileage. A good library of books is priceless, and cheap. • Make the walls white!!! – Whiteboards are a huge asset, and if you work for a startup it can be cheap. At Home Depot you can buy a 8’x4’ sheet for less than $20 and mount it on the wall in some way. – More whiteboards equals less erasing, which means ideas have time to brew and grow. – Don’t forget to have lots of different marker colors, and keep them fresh.
Clean, repaired, and tastefully decorated – Yes, it does make a difference on what a developer puts out. If the environment is clean, repaired, and tastefully decorated the developers code will be the same. (strange, but true) – Fix broken windows, doors, desks, and chairs. – Hire someone to clean once a day, NOT DURING WORK OURS! (see first item about disruptions) – Also, keep decorating meaningful. If you are going for a modern “look” don’t cram in some ugly cork board or paneling.
Be flexible and reap HUGE benefits – Developers need to work flexible hours, and possibly even some “work from home” days, but try to maintain a schedule of some sort. Developers also need structure and consistency to satisfy OCD. – Developers are working when in the shower at 7:30, or hanging out with friends in the evening, when they realize a way to do something faster, shorter, cheaper. Their minds are working ALL day. – Because developers are ALWAYS working, be flexible if they had a rough night and need to come in a bit late. (DON’T show up at their door!) – Prevent other departments from noticing this flexibility or you may have a mutiny. Other departments simply don’t “get it”, and expect developers to work in the same manner they do. (flick a switch to get in the zone)
coding habits – Borrow someone else's and then adapt them to your needs: • Pear • Zend Framework • Cake Framework Convention – Coding standards lead to less bad feelings between developers – Clearly defines what is expected – Makes it easier to hire more, or future, team members – If you do not have one, make sure to get the “team” to “buy into” a new standard. Have a few meetings and get feedback, but make sure to appoint a leader to settle any disputes or break voting ties. – Document it and post it somewhere. (If you use Trac or Bugzilla as an issue tracker they have a wiki built in for such things.) • Yes, even if you are a one man team. • Update it as needed
environments – For better code, less problems in production for your customers to see, and less “I am not sure what happened” cases, keep 3 environments or at a minimum 2. • Development(s), and Production at a minimum. Add QA if you have testers. • Each developer should have their own development area. Make things easier on them by hosting all development areas on the same server with the same DB for collaboration ease. (Make sure you have enough internal bandwidth to handle it. Zend Studio almost “requires” gigabit speeds to do it smoothly.) • Production should never be “open” to all developers. This could lead to “risk taking” behavior that will push bugs to production to “see if it works”. Also, an “open” environment removes blame and accountability. Other departments will quickly learn they can plead well-meaning developers into pushing something to production to meet their needs. • Set a release schedule of when code is moved from one environment to another…and stick to it!
– Create a script that creates a complete dev environment in a single click. This will keep dev clean, and encourage separation of projects to different sandboxes. • Nobody to access Dev except developers – Other departments and managers do not need to see debug output or other development type of notices. – One day when you wipe out a dev environment you will receive a call from someone asking where all their data went. Turns out they were using dev as their production system.
– Automate “push” scripts – Automate ticket updates with commit-hooks in SCM – Could possibly use cloud images to create dev environments quickly. – Automate documentation – Use “build” servers to compile, run unit tests. – Automate development reports. (bug life, QA kickbacks, ticket severity submits, missed milestones, etc.)
methodology – Agile, SCRUM, etc. – Developers should know what is expected of them. – When are tickets due, assigned, scoped, specification written, etc. – Post schedule in a common place for all to see. – Make sure everyone earns a seat at the table. – Breeds trust and accountability within team. – Breeds trust and accountability externally.
have) – ALL developer should be using one on ALL projects. – Two types of SCMs • File mergers (SVN, CVS and others) – Work well for lone programmers, or teams where only one developer is touching any file at any time. – If 2 developers edit the same file, most likely one will lose their changes. (usually the 1st to commit) – Only one true repository. • Change mergers (GIT, Mercurial) – Work well, but have a larger learning curve than SVN or CVS. Once you “get it” they are pretty simple. – If 2 developers edit the same file, no data is lost unless the same lines are edited. Then you have a choice to make if/when you update the main repo. – Every checkout is a repository.
– Install locally for lone developer – Install on server for teams – Outsourced product offerings (too many to list) • Beanstalk $$$ • Unfuddle • Assembla – Open source • Git-hub (GIT) • SourceForge (SVN)
Tracker – Bugzilla – Trac – Other • Tracking system should allow you to follow your process. (multi-environments, QA testing and failures, connection to SCM, bug entries from outside)
Studio – Eclipse with PDT – Netbeans – Komodo – Dreamweaver • Pick one and get good with it, even it if is notepad…well, OK not notepad. • Shop for one that integrates your chosen SCM, ticket system, coding standard, and supports PHP.
You’re a LAMP developer, you cannot escape it. – It is your friend. Learn it, use it, you will love it. – Learn basic Linux commands (sudo, cp, mv, rm, svn/git/cvs, screen) – Learn basic Vi commands (i, Esc, ZZ, :w, :q, :q!) – Learn basic CRON usage to give your scripts life. – Learn basic MySQL usage. – Must have O’Reilly Linux in a nutshell book sitting around somewhere.
– Tortoise on Windows – Subcommander on Linux – GitX for MAC – GitK for Linux • Compare GUI – UltraCompare (from makers of UltraEdit) – Meld Diff Viewer – Beyond Compare – Module in Eclipse
CuteFTP – WSFTP – Filezilla = free – WinSCP • Text Editors – UltraEdit = $59 – Kate = free, but Linux only (there are some MAC and windows attempts) – Gedit = free, but Linux only (there are some MAC and windows attempts) – TextMate = $57
Ubuntu • Drop-dead simple to get LAMP up and running using Synaptic or apt-get • Stable with built in shell • FREE and flexible! – MAC • Some 3rd party all-in-one installers for MAMP installs • Stable with built in shell • Expensive and not so flexible. (don’t shoot the messenger) – Windows • Some 3rd party all-in-one installers for WAMP/XAMP installs • Um, has no shell. Must install PuTTY. (we won’t discuss “stable”) • Can range from cheap to expensive and little flexibility. (messenger was shot long ago)