Development Workflows


(Tim Nash) #1

So I wrote a post on My Development Workflow the other day, don’t worry it’s not a promotional post :smile:

One of the bit’s of feedback was asking how it developed, and where I had gotten to know lot’s of the tools and bits. The answer was of course from other people, and specifically other peoples workflow posts, and chatting to them at events.

What it did make me realise after someone called it unwordpressy that where it didn’t come from was particularly from the WordPress community as I have seen and it’s probably just I haven’t been looking before so as I will be doing a hardware refresh fairly soonI want to re-vist my workflow though I’m always on the look out for something interesting and new.

So guess I’m asking, tell me about yours, what tools you use etc or link to your Workflow blog posts (Which I really think if every developer did one we would all learn a huge amount)Hopefully can build a mini resource for peeps to scan through.


#2

Hey @tnash
Somehow I can not find link to your post :slight_smile:


(Tim Nash) #3

I chose not to post it so it didn’t turn into a discussion on mine specific :slight_smile:


(Nate Wright) #4

Well I’ll turn it into a discussion on yours anyway. I think the biggest reason it might look “unwordpressy” is because the WP community doesn’t have a lot of proper devops people (or maybe that’s just the noisy part of the community).

I like seeing your workflow because it’s precisely the part of the pipeline I struggle with: testing, staging, deployment, performance monitoring. I know how to work with a frontend toolchain: preprocessors, minification/concatenation, version control, task runners. But I’m lost when it comes to maintaining and monitoring a heavy site load.

There are definitely lots of people in the WP community competently running the kinds of large websites that really benefit from good devops. But There are far more like me who have never run a really big site.


(Mark Senff) #5

@tnash can you elaborate the “unwordpressy” part? Do people say that it’s not the kind of workflow you usually see with WordPress developers? And what type of people say that mostly (WP developers, non-WP developers, backend, frontend, etc.)?

(Not posting my own workflow here because it’s embarrassingly bare and simple.) :wink:


(Tim Nash) #6

@Senff I’ve accidentally got everyone caught up in the unwordpressy comment, which was more an introduction to I haven’t seen many WordPress Devs post their workflows, so I have no idea if the comment was fair or genuine.

It is however true the workflow, comes more from a pure PHP/framework agnostic approach then anything designed to deal specifically with WordPress. This is especially true given that I don’t know of another developer in the WordPress community using Hack regularly with WordPress, other then at agencies where I have been consulting and training.

Embarrassingly simple, but does the job? That’s nothing to be embarrassed about thats a good thing!

@NateWr The backend, dev-ops side, isn’t just about large sites, really tiny sites and if you are involved with doing lots of small sites is often where building good deployment systems and management comes into its own. Even where you are not in control of the hosting, the ability to use the same development and deployment flow from one site to the next means you are never worrying about a specific sites special circumstances.

Same with Testing, while vital throughout, if its a site I only do a little amount of work for, I want to have a set of tests, so I know I haven’t broken it, without having to relearn the site. Ultimately testing and especially Acceptance give you confidence to push changes without, spending a week validating.

That said it’s a tone of work to do up front and has an off putting learning curve, and let’s face it sounds as dull as dish water! So it’s always a trade off.


(Darren) #7

The only point I’d like to bring up at the moment is online IDEs - I’ve been using https://c9.io/ for the quick bits of WordPress development I’ve been carrying out. Its useful as I can jump onto other computers a lot, and I’ve a few projects I want to develop in the open, so having an area contributors can log into when creating fixes will be an interesting idea.

My development flow for WordPress is a bit out of date, Tim’s workflow looks quite impress, and nicely polished - I’ve bookmarked it for when I get time to dedicate more time to WordPress development.

I must check out wpcli again - I always remembered that as a theme? Didn’t know it was actively maintained again!


(Nate Wright) #8

@tnash I totally appreciate that a good deployment system is valuable regardless of site size. In my case I often dip in and out of client/contract projects briefly with little recurring development work (something I’m trying to move away from).

That’s one of the reasons I’ve really enjoyed entering the product space. Going back to a product over and over again gives me an opportunity to really benefit from better deployment systems. Adding unit tests is something I really want to do for my plugin suite. I’m just not that good at it because I’ve done very minimal server admin over the years. Just something I need to learn – luckily I’ve got a client now that will need a more reliable deployment and management system, so I’ll get to pick up some skills over the next few months.


(Giulio) #9

Am I the only one using Netbeans? I found that it’s a damn good IDE, it’s framework agnostic (which is good if you want to leave the door open for future evolutions), and it’s free. I found that Sublime Text doesn’t have anything to justify the price compared to Netbeans, so there’s no reason I should pay for something when I can have something better for free.

I also use Balsamiq and Pinegrow Web Designer for front end development. I rarely do front end development but these are very good tools.

As for local development I prefer the simplicity of Netbeans. I’ll explore Vagrants in the future


(Mark Senff) #10

Well maybe! But when I see your workflow, and then my own, I can’t help thinking that maybe I’m not serious enough about things.

(In fairness – my freelance work isn’t that much in the first place. One site a month maybe, so there’s not really a need for me to have an “established”, structured workflow.)

For the record:

  • Windows 7
  • WAMP
  • Sublime Text 2 (no plugins)
  • Filezilla
  • Git
  • Chrome (CSS Reloader and Web Developer)
  • Prepros 5

And that’s really about it…!


(Tim Nash) #11

For me I just don’t like the interface for Netbeans and it’s a bit performance heavy in terms of CPU and Memory if like me you are incredibly bad about closing windows and dipping in and out of projects. Though IDE is such a personal choice, in theory you can run Sublime for free forever, it operates on nagware basis, but while it’s extendable it’s not open source, though it has a few clones slowly appearing with interoperability with plugins.

I’ve never come across Pinegrow Web Designer, so will go off and Google it :smile:


(Tim Nash) #12

I like Cloud9 which and have used it for some Remote Pair Programming sessions but it doesn’t feel snappy, though the fact you get a ubuntu stack as well as an IDE is pretty cool, though I struggled to get it to play ball with my Vagrant setup in the past.


Methods of deploying a site
(Nate Wright) #13

I used NetBeans several years ago for a couple projects. As @tnash said, it was a CPU hog and I was on a laptop at the time. For a project I was involved with in C, I switched over to Eclipse and found it snappy with everything Netbeans had to offer and more.

But I’ve always treated those large IDEs as something built for languages that are compiled when you need to use breakpoints and benefit a lot from all those internal references to functions and methods within your project. In all of my regular work these days I use Geany, just a good basic text editor for Linux. I find IDEs are good when you’re building a very large, self-contained piece of software. With WordPress development, I’m more often piecing lots of different projects together.

I’ve been wanting to try out Eclipse for my WP development to see how I can benefit. It’s just another item on the big tooling list of things to do at some point down the road.


(Tim Nash) #14

Interesting you found Eclipse snappy compared to Netbeans was going to warn about how much of a system hog it is. I tend to use it for limited Java application, and for a couple of weird setups. A few old school projects still supply an SDK bundled in with Eclipse.


(Jason) #15

So depending on my project (e.g. programming software, firmware, web, etc.) I’ll use an IDE if necessary, but tend to prefer light-weight solutions otherwise. My main workstation runs on Ubuntu, as I finally got sick of Windows and I’m too cheap to buy a Mac (though my wife has a MBP). So for web:

  • Vim (GVim)
  • Terminator (Terminal)
  • Capistrano (Deployment)
  • Prepros / Koala (preprocessors)
  • Piklist (WP Framework)
  • PhpConsole (Awesome Chrome extension)
  • WP-Starter (private repository that I start every project from)
  • VirtualBox (virtualization for browser testing and such)

Within that I use a bunch of extensions and such. I generally have GVim and a terminal open when working, and flip back and forth between the two regularly (my hands don’t have to leave the keyboard, so it feels fluid). I don’t use XAMP as I just prefer tweaking my system myself. If something isn’t a real time waster, I like doing it manually as it keeps that fresh in my head. I strongly prefer SSH and avoid FTP when I can help it (rsync is my friend). But all deployment is automated through either the host’s own methods (e.g. WP Engine) or Capistrano. I prefer methods that are simple but clever, meaning I’d rather have some scripts that I can tweak and easily understand over an IDE that magically does a lot for me.

Hope that’s useful for someone. :smile: (argh! what happened to the emoticons!?)


(James DiGioia) #16

This is going to be a really useful thread. I’ll add some of what I use later, but I’d really love to hear more about how @tnash uses Codeception. Is it primarily in the context of developing a site? How do you set it up for plugin development? I’ve been looking trying to add integration/acceptance testing to my workflow but have no idea how to do it in the WP context. Got any pointers?


(Tim Nash) #17

I use Codeception in a few places:
When taking over a project that is a complete site, I tend to write acceptance tests for existing primary and critical features. In effect the did I break it tests, I also then make use of these tests in a few places.

Developing a new feature, I fluctuate I would love to say I was a strict practitioner of BDD but well that would be a down right lie. Therefore I normally only write acceptance tests when I’m not sure what the outcome should be, which sounds counter intuitive but writing the tests helps to work out what’s going to happen. If I’m in my happy zone I tend to write tests as I’m doing my testing round.

For plugin development, I still write acceptance tests, but then run the test over multiple setups, this is a lot easier to do for admin features then backend bit’s as you end up with quite generic acceptance tests on the front end, or incredibly tight tests (which for acceptance testing, you don’t want either particularly)

Finally I use them when provisioning systems, and testing backups, especially on AWS setups, when spinning up a box, if their are associated acceptance tests you can run them prior to completing the deployment.

Hopefully that makes sense :smile:

Time for a small plugin, I’m actually running a crowd funding campaign through Patreon (https://timnash.co.uk/become-patron-help-release-amazing-wordpress-videos/) . The initial round is for 2 video series one on performance the other on acceptance testing. Both sets of videos will be available for everyone, but the speed they get done is based (partly) on that campaign.

I’m also at a couple of UK WordCamps this year, talking about Acceptance testing and dev workflows, so if you are at one of those events feel free to grab me.

End of plug :smile: