Being a Developer in the "Modern Office"
Oliver Sarfas • February 19, 2019careers
3 key features to every office nowadays. The idea is that encouraging employees to engage with each other, and breaking down the barriers to do so will increase communication levels in the office. With improved communication comes improved output. In some cases, we quite literally remove barriers!
But how is this affecting your developers? Does it work? Does the modern layout and approach to the office help or hinder the developer? Let's discuss.
Small warning - I've just got Giphy integration working on here, so I might go a little over board.
The Developer's "Flow"
For those non-devs reading this, it's important to understand and appreciate how a developer's output works. Stick with me, as I'm going to try and use an analogy, hopefully it works!
Ever read a book, and got so "into it" that you're not even reading? The words, you can hear them and you're in the environment, but you dont even notice the pages turning. This is the mindset of an "engaged developer". Completely oblivious to their surroundings, lost in another world. How long does it take for that mindset to kick in? 10 minutes? 30 minutes? 1 hour?
Ok. So you're now 5 minutes away from being "engaged". You're drifting. Just another moment and you'll be fighting that dragon, or whatever books have in them nowadays.
During these last few moments before full immersion, one of the kids comes over, and needs a drink. So you drop your book, fetch the drink, tuck the child back into bed - and return to your book
How long now before you can get back into that "engaged state"? 5 minutes again? 10? Perhaps you'll have to start all over again?
This is what a developer's workflow feels like. Except when we put the book down, there's no bookmark, and the last 10 pages are missing.
This is why most developers will reply with "2 seconds", or "yeah, just let me finish this up" if you ask them something directly. They're preparing to come out of "engaged" mode, and leaving some breadcrumbs ready, to help them get back into it as best possible.
What's flow got to do with Modern Office?
For ease of reading, I'll break this down into a few sections; Collaboration, Open-Plan and "Always Online". So, first, Collaboration.
In the "Modern Office", employees are encouraged to collaborate as much as possible when working on a project, or a client. This is enforced with most desk designs, and office layouts. Take a look around. Do you see any of those "old school" dividers around?
Creepy Susan across the cubicle is no more.
Gone are the days where you'd have "your cubicle" to work in. Removing these barriers from the office, encourages discussion. This can work two-fold for developers.
On the one side, developers are interrupted from their "flow" a lot. This causes problems sometimes even leading to bugs in code.
"As a developer I was frequently distracted either by conversation in the office, or by an email that needed to be answered urgently (should have been dealt with by an account manager or similar) and it breaks your flow. You forgot what you where doing and then leads to a mistake which then leads on to a bug and then down the line was totally overlooked and creates a real issue."
Managing Director of a UK Creative Digital Agency
One the flip side, it can be beneficial for developers to have this collaborative environment. From my experience, having an open discussion at desks about some kind of functionality, or talking through an integration with your fellow developers is very productive. It often helps the development process move smoothly from concept, to code, right through to completion.
Leading on from Collaboration, Open Plan is more about being inviting to anyone. As opposed to the traditional "cubicle"-style office layout that might have been popular before, adopting an open plan will make the office feel a lot more "airy", often larger.
It also removes the barriers between colleagues, making them feel as though they're all on the same level, the same goal; ultimately more as a whole team of people. Instead of being a single cubicle, contributing to the goal of the larger cubicles in the back.
Sounds great right? Everyone on the same level, commanding towards a common goal. Well, sort of.
If you've read my recent post on Career Tips For Developers, I very much advocate developers being very specific with their words when in meetings. The issue for me, on open plan layouts, is that a developer's flow needs a dedicated environment to truly get going. Not necessarily an isolated room, under the stairs, with infinite supplies of Mountain Dew, and Cheetos (I wouldn't say no to that, but I digress...)
We, as developers thrive of having our own space. Hence why you'll find most, if not all, developers work with earbuds, or headphones in/on. We get into our flow, and zone out of the common world. The open plan office simply provides too many distractions, and interruptions for this to occur. If you're a Director, or Senior - provide your developers with this space.
In the modern era, we're expected to be online at all times. If something happens within the company, we're all now capable of actioning it remotely, or at least delaying the impact until the next working day.
Every IT / DevOps issue. Ever. No joke.
Emails? Slack? Instant Messaging? All on your personal / work phone. Meaning you're not only contactable by others, but available to action things.
This is scaled up more for the developers, and devops of the world. If a server, website, API, service, or alternative, goes offline - you know about it. Instantly. With services such as StatusCake, Oh Dear, and UptimeRobot - there's no excuse for downtime to not be reacted on.
What does this mean for developers? Surely there's only poor repercussions of this? Well, I've managed to actually find some positives.
Having these tools available means that developers now have the functionality to allow a 3rd party, independently confirm (or deny) that a service is available.
Due to this, it means that companies can be more responsive in how they approach their customers about downtime, and even have triggers based on certain events.
The Obvious Downside(s)
Time. If your developers, or team, is always online - then they're never recovering or spending time off work. Personal time, and mental health are of massive interest right now in the media - and with good reason.
A developer will burn out, very quickly, if you don't let them have a break.
Equally, if the developers / team members act on the notification - they're working. They could potentially claim overtime, or Time Of In Lieu, for that. It can get very expensive to allow people to act on these issues. Although, it's a necessary evil, if your company relies on the service(s) being online.
"Stuff for next time"
I wanted to add some more pieces to this post, about modern working and some of the newer elements that are breaking into the "normal working environment", some originating from the Development side of things.
One major thing here, is Remote Working, or even International Remote Working. This is a beast in itself. So I'm going to write a post dedicated to it.
There's also the considerations of "flexi-time", or "no-working hours" which I've seen in a few job posts lately. Both, are very interesting, and I'll probably mention them in my up-coming Remote Working piece.
What do you think? Feel free to contact me on twitter at @sarfascodes