Development

A Day in the Life of a WebDevStudios Developer

A couple weeks ago, one of @WebDevStudios‘ followers on Twitter sent us this:

That got us talking and thinking about what a typical day for a WDSer looks like. I love reading fluff posts like this, and as I’ve been around long enough to get in the swing of things while still being relatively new, comparatively (about six months as of this post), I figured I’d write one.

Tools

We use a variety of apps and tools in our day-to-day doings. When I was first hired, I was given a list of the apps that we use (and accounts for them) and made sure to set most of that stuff up before my official start date.

HipChat Results

HipChatHipChat is our primary means of communication. It’s made by Atlassian which is one of my favorite companies (seriously, check them out–their stuff is awesome). There’s a general, all-company room, a room for each project, a Devs room, Designers room and a room for each team. HipChat also lets you do video calls and private messaging. The smartphone app is pretty nice, too, but I tend to avoid that except for emergencies.

Why not Slack? We do have a company Slack room set up, but haven’t moved primarily because we’ve already got a lot of things invested in HipChat, like Git push notifications for each project in the respective project’s room. The other thing that’s handy about HipChat is the ability to search the chat history inside the app if you are looking for a specific conversation.

ZoomZoom is what we use for our team calls. You can have a bunch of people in a room without the world imploding, it supports easy screensharing and recording and it’s also got a smartphone app so you can connect that way. It can suck up a lot of bandwidth, especially when everyone has their video going, which can be problematic if you’re on public wifi, but otherwise it’s pretty solid.

Why not use (insert any of a million other video conferencing apps)? No one does video conferencing well. There are always issues. I’ve personally used Google Hangouts (which often has lag issues and people dropping, plus recording automatically uploads the result to YouTube–you don’t get the actual file), Skype (which is awkward at best with groups/teams and isn’t great for sharing screens with more than one person–also doesn’t let you record things) and lots of other things. HipChat has an okay one-to-one chat, but no way to start an all-room chat/hangout.

join.me – We use a different video conferencing app for clients, though. join.me has a lot of the same features as Zoom with some added extras (like creating events and a web app) and polish. Join.me also has a bunch of call-in numbers to join meetings over the phone.

Why not use the same thing you’re using for teams? Communicating with a team of geeks is different than communicating with clients–some of whom are used to a more refined end product. Zoom is great when it’s just us, and we’re pretty forgiving when it has quirks (like dropping the call after forty minutes and only allowing twenty-five participants in the free version), but the lack of a call-in number (which is extra in Zoom) would be a deal-breaker for organizing project meetings with clients.

Google Apps – Like almost everyone else in the known universe, WDS is pretty dependent upon Google Apps, most significantly for email. The other stuff (Sheets and Docs, in particular) are great value adds but not having to worry about self-hosted email is pretty huge.

Why not use…— Seriously? That’s not even a question. Gmail with Google Apps is brainless to set up and configure, it’s secure, and pretty good against spam. Hosting your own email server…man, I dread those days. I’ve done it a couple times and the best you can get with spam filtering is the least bad option that’s still either too much or too little.

BeanstalkBeanstalk is what we use at WDS for our Git repositories and it also handles deployments. Before I worked with WebDev, I worked for about two years with Event Espresso, both in a support context and as a developer. We used Codebase when I was at Event Espresso, which is a very similar concept (enterprise code repository) and supported SVN, Mercurial and Git. In addition to just being a repository, Codebase was also an issue tracker, and it was our primary ticket tracking system for bugfixes and feature development. While Codebase did and does support deployments, it’s through a separate but affiliated site/service called Deploy.

Beanstalk, on the other hand is just for repositories. It doesn’t have an issue tracker, but, on the other hand, the deployments are baked in and super-easy to configure. The open API allows us to do cool things like integrate commits pushed and/or deployed to our client repositories to show up as notifications in the relevant HipChat rooms. I like it a lot better than Codebase.

BasecampBasecamp is probably the most well-known project management system. It’s a web-based platform that allows for communication across teams broken into projects. Projects can include the client, in-house development teams, freelancers…just about anyone. Before joining WDS, I had used Basecamp as an outsourced developer for a project I was working on and was pretty impressed by the platform (but, being a premium service, and a pretty sizable application, it wasn’t really the right fit for me as a freelancer). Like many of the other things we use, it’s not the most perfect system. I really liked the interface, openness and ease-of-use of Asana when I used it in the past, but Basecamp integrates natively with…

Harvest – …which is our time-tracking app. There’s a lot of admin voodoo that goes into Harvest that’s invisible to me as an employee which is used for things like invoicing clients. As such, all I can relate is my experience, which is pretty slick, especially when you use the Harvest Time Tracker extension for Chrome (Safari extension available, too) which, as I mentioned, integrates directly with Basecamp. So when I start on a task in Basecamp, I can click on a button and it will insert that task into my Harvest timesheet and start tracking time. Harvest also makes a product called…

Forecast – …which just launched and we’ve recently switched over to. Forecast is a scheduling app that integrates directly with Harvest, which, for me, means I can see what projects I’m working on for the week and also who else is working on those things and what else my co-workers are working on, which can be handy when you want to ask a question but don’t want to drag someone in from some super-important project they’re assigned to today or you want to ask someone else who is actually working on the thing you’re asking about.

P2 – WebDevStudios also has an internal P2 site for asynchronous communication and announcements. P2 is a WordPress theme that was originally built to be somewhat similar to Twitter — sharing updates or information. It evolved into a collaborative tool used across Automattic and teams for WordPress development and support projects. It doesn’t look like much, but the real value is in the live updating of comments and new posts for more realtime discussion. It wins over email for team/company announcements or discussion by providing a central repository for all that information, which makes sure that everyone who should be involved in the conversation can be and no one is left out. Plus, let’s face it, email sucks. Things get lost, accidentally deleted, or filtered as spam without any user input. It’s unreliable. On the other hand, knowing I can hit our P2 to find out what’s going on and what people are saying about it means I can look at that stuff at my leisure, as opposed to feeling like I need to constantly check my inbox.

WDSWest

I live in Salt Lake City, Utah. The majority of WebDevStudios lives on the east coast or in the midwest and works on east coast time. And, unlike when I was freelancing and work started pretty much when I said it did, WDS has working hours. These are mostly loose (roughly 9-5 Eastern), but it did take some time to adjust. The main point being, we work in teams, and it’s best when you’re around when  your teammates are so you can respond to (and ask) questions about stuff you’re working on collaboratively.

Eastern time is two hours ahead of me, which means that if WDS business hours start at 9am Eastern, that’s 7am for me. I don’t do well with mornings on the best of days, and for folks on Pacific time (which is an hour earlier), it’s even worse. So we have different expectations for WDSEast and WDSWest and do a roll call for each region at 7:30am (9:30 Eastern) and 8:30am (10:30 Eastern). And on the A-Team, that means posting a gif in HipChat. Something like this:

aphex-spin

That says “I’m here, ready to start on stuff,” but it could also mean “I’ve been around, working in the background, but I’m formally announcing my presence.”

A day in the life

In this fictionalized day, I’m going to sort of aggregate things that happen on different days throughout the week, because, honestly, an average day as a developer isn’t very exciting (wrote some code…wrote more code…trashed everything and started over…).

9:00am – Monday Morning Meeting

On Mondays we have a team meeting in which our Project Manager, Jaimie, goes over everyone’s schedules for the week. Basically, it’s like a virtual huddle before a play in football, so everyone knows what they’re expected to do. Sure, you could just send the schedule to people (or just have them look at Forecast), but this way they can ask any questions or bring up any potential issues with their tasks for the week.

goofy-huddle

9:15 – 5 for the Future

Also on Mondays is our dedicated 5 for the Future time. Two hours out of every week, all WDS employees are given an opportunity to work on some WordPress-related project. This could be working on plugins, themes, theme review, WordCamp or WordPress meetup-related things, contributing to WordPress core, hitting the support forums, whatever. I’ve done a lot of different things with my 5-time; I’ve submitted patches to WordPress core that got committed, I’ve worked on videos from WordCamp SLC 2014 with the WordPress.tv moderators, I’ve worked on some plugins I’ve written that needed updates and other plugins that I wanted to contribute to, and, recently, WordCamp SLC 2015 planning. I usually do this at the beginning of the day, before working on my other tasks, and usually it wraps around the Monday Morning Meeting.

11:00 – Dev Throwdown

On Wednesdays, the developers from both teams and Maintainn (occasionally joined by the design leads from both teams, Corey and Greg) get together and talk about devvy stuff. Sometimes it’s just an open forum to discuss things we’re working on or struggling with, or sharing cool things we’ve discovered. But often one of the devs will present on some technology or library for the benefit of everyone. We’ve talked about object caching, Yeoman, the guts of CMB2, internationalization, and AngularJS. Most of all, it gives us an opportunity to take a break from whatever we’re working on and think about something else for a while, which, for me, allows me to get back into whatever it was I was working on before with a fresh perspective.

12:00pm – Lunch

Everyone takes lunch at different times, so rather than just saying “lunch” or “bbl” or “afk” in HipChat, announcing you’re taking your lunch break is represented by the (chompy) emoticon in HipChat: chompy (or the Corey Collins sphynx cat alternative (ripley): ripley).

2:30 – Scrum!

At the end of the day (for East Coasters), we have a team scrum. This is where we talk about what we did with our time, anything we were struggling with, and status updates on any of our tasks. On Friday, this is replaced by an all-company scrum, where we get to see everyone’s faces for a few minutes and the PMs review stuff that their team worked on over the course of the week so everyone gets to hear about the cool stuff everyone else has been working on.

Everything else

Google_Chrome

The rest of the time I’m in my IDE (SublimeText 3…although there’s a fair amount of PHPStorm and even some vim users at WDS). I use SourceTree (which is free) as my Git client to push code. I use VVV and Brad Parbs’ VV to easily spin up local environments quickly and a separate profile in Google Chrome for work stuff (so I can keep work tabs separate). I don’t have my work email plugged into my email client (Mailbox) because when I’m not working, I don’t want to be stressing about work stuff, so I just use Gmail and have that as a pinned tab.

I also turn off all notifications, sounds and alerts so if I’m working, I am more or less focused on what I’m doing. I run a dual-monitor setup with one monitor being used for chat, Twitter, and other messaging-type stuff and the other monitor being for everything else. This keeps my eyes in my IDE or browser or wherever when I’m deep in a code coma and not constantly distracted by other things (unless I’m choosing to be distracted). Similarly, I use multiple desktops in OSX and keep my email client on a separate desktop so if I want to check my email, it has to be a conscious decision, not a constant distraction.

Other tools I use

Licecap – Besides being used to create obnoxious gifs of my teammates (like this one…and this one), Licecap is a great tool for capturing workflows or processes when yo want to show things to other people (say a fellow teammate or the client). “How do I change the status of a post?” “Here, let me show you in this gif.” I’ve done a ton of tech support in my day and spent hours upon hours writing documentation and thorough walkthroughs. I’ve done screencasts and tutorial videos. Just being able to capture the exact thing your mouse is doing in a 2-3 second gif can eliminate a lot of extra time explaining things. Licecap is free and has a Windows and a Mac version.

Alfred – The amount of things you can do with Alfred cannot be summed up in a paragraph. Besides being a launcher for apps so you don’t need to take your hands off the keyboard, I can do things like search my bookmarks and open them, open specific Basecamp projects, do quick math calculations, and, of course, search for appropriate gifs to insert into HipChat.

Skitch – Once upon a time there was this awesome app for Mac that let you take and annotate screenshots and then upload them to a repository that let you publish things publicly or privately.

Then Skitch got merged in with Evernote and everything started to go horribly wrong. Skitch is back– kinda–but the Evernote integration is still there and I don’t use (nor do I really want to use) Evernote for anything. Yes, I know that you can take screenshots from a million different apps (including just natively on the Mac) and I’ve used many of those as alternatives to Skitch, but the ability to annotate screenshots with arrows or boxes or text (and how easy it is) keeps me coming back. Instead of publishing those things to Evernote when I want to share them, though, I use…

Cloudup – I joined Cloudup when Matt Mullenweg posted an invite code. I can drag a tag in Skitch up to a Cloudup icon in my task bar to upload that image to Cloudup without having to save the file anywhere (which I’m sure my Mac does anyway, and just hides it somewhere in the filesystem…whatever). I then get a Cloudup URL automatically copied to my clipboard and (optionally) a tab opens with my screenshot. Cloudup URLs are private by default, so only those people you share the link with can see them unless you flip the visibility on to public. I like Cloudup instead of Dropbox (which I also use regularly) because it doesn’t require that I keep a local repository of stuff. And, at least for now, there’s no limit on space for Cloudup. (Want to try it? Here’s my invite code.)

TextExpander – I started using TextExpander when I switched over to the Mac from the PC at the recommendation of a couple of the guys at Event Espresso (notably Seth Shoultes and Josh Feck). At the time, I was still pretty unfamiliar with even the concept of tools that were designed to make your day-to-day workflow more efficient (things like Alfred, Hazel, among others). What it does is replace text with some other text and, while that sounds simple and not very helpful, it’s actually pretty awesome. For some simple examples, I can type “WP;” and it replaces that with WordPress. When I type “bc;”, it replaces that with because. I’ve got some simple autocorrect triggers in there like changing “abou tit” to “about it” but you can use it to insert form responses (handy for doing support) or to create shortcuts for your email address (c@wds inserts my WDS email, c@test inserts my email with a +{minutes}{seconds} timestamp at the end of it for creating dummy email addresses for testing, like chris.reynolds+4652@wds). Basically, if there’s something that I type frequently, I can automate that by creating a shortcut for it in TextExpander. Seriously, it’s pretty awesome and if you haven’t used it, you should check it out, it’s well worth it.

LineIn – I have a fancy schmancy microphone I got for recording videos for Pluralsight. It’s a Rode Podcaster and it’s awesome. But one thing that completely freaked me out when I switched to the Mac was that, when I was wearing headphones and speaking through my mic, I couldn’t hear myself. So I had no idea if the other person was hearing me or not. I know that this is to prevent echo, but it bugs me. I use LineIn to feed the microphone input back through my speakers (or, in my case, my headphones). It’s a really little app that’s super simple but I think I would go nuts if I didn’t have it.

Command line tools – We’ve got a couple posts on the blog about these, so I won’t go into detail about each, but we use Grunt and Node and some other stuff that requires some command line tools. The easiest way to get your hands on these on a Mac is via Homebrew (although there’s some caveats to that with regards to installing Node). I also followed Brad Parbs’ excellent tutorial on getting zsh set up and really like using the z and ag commands (and the much prettier command line).

wds-widget-visibility_—_jazzsequence_Sugar-Daddy____vagrant-local_www_chaparral_htdocs_wp-content_plugins_wds-widget-visibility_—___et-visibility_—_zsh_—_Solarized_Dark_xterm-256color_—_80×24

And that about sums up what an average day (or aggregate of days) looks like for a developer at WDS. Just…with a whole lot more gifs. So many gifs. (And creds to Rami for the awesome WDS gif at the top of this page!)

psychedelic-cat-sunglasses

Have a comment?

Your email address will not be published. Required fields are marked *