Developer Time
pydanny.com
pydanny.com
Clocks get it wrong because they count up, but one day we will all die, so from our perspective time is counting down.
I started thinking about alternative calendar systems when I learned about Post-Revolutionary France's attempt at introducing metric time.
The problem with dividing the year by 1000 is 1000 is divorced from astronomical reality of life on earth. Swatch internet time is the latest attempt at this but I think it misses the mark.
I wanted a time keeping system that matched up with our cosmic reality and the reality of making things vs managing people. We have two important events, the year (one rotation of the earth around the sun) and the day (one rotation of the earth). The moon's cycle is only important for tides (and it's close in duration to the female menstral cycle)
Maker time divides the year into 1095 (or 1098 in a leap year) blocks. Each block is 8 hours. On January 1st the count resets.
This way I don't have to look at the clock and feel the stress it engenders, but also I get to mark the passage of time.
There are 82 maker time blocks left this year and I have big plans for those 82 remaining blocks of time. And one 8 hour block for sleep per day is productive time, thats when my brain encodes the things I learned into long term memory.
This is pretty interesting - I'm going to start checking Maker Time regularly, and see if my perspective on things changes. One's perception of the passage of time surely has an uncommonly high influence on important psychological factors like motivation and focus, and we've been using pretty much the same division of time for hundreds of years, so there are probably efficiency gains to be made with stuff like this.
I made it the first bookmark.
I find it really amusing when companies have "no meeting Wednesdays!" - fix your damn system so that you don't need so many meetings. I know of no actual programming problem that requires so much coordination that a programmer actively needs more than two or three meetings a week. My goal is to get every developer to 1 meeting a week (the weekly 1:1).
Things to remove:
* Meetings
* Interruptions/Noise (this is why open-plan offices are terrible)
* "Can I ask you a quick question?" questions
* High-bandwidth communication for anything that isn't life-or-death emergency
* Fire-drills/"emergencies"
* Fixed work schedule
Things to do instead:
* All meetings (with the exception of 1:1's) are optional
* Async communication wherever possible (chat rooms, email)
* Assume that any person, at any time, can be remote (this changes everything and makes sure that folks prepare ahead of time)
* 100% flexibility in work schedule to allow for folks to find their productive peaks, whether that's at 4am or 4pm
Everyone does crunch time not because there is actually a pressing emergency, but because the company wishes to extract additional effort for no additional pay.
For instance when I'm starting to learn a new language: I do a mix (whatever's comfortable) between exploring and goals. Explore: read some documentation, look at tutorials, make toy projects. Goals: figure out how hard it is to get "real work" done.
The weekly summary often is the catalyst for my mind to take the different small projects and find larger threads in them.
[a] Others (non devs) can be entrusted to make decisions without developer input. Rare, in my experience.I've been in several hour-long meetings where I've only had 5 minutes of input, but that 5 minutes of input saved weeks/months of frustration/headaches.
[b] Offices are setup in such a way that devs get their own quiet space without surrounding distractions.
Most money available in the industry exist at places where 'a' and 'b' don't exist.
I understand PMs being in a bunch of meetings, but I'd see devs and testers in that room multiple times a day. The worst would be how many 3 minute meetings would go on there that started 2 minutes late. People would show up a minute early, leave a few minutes later, then be back to their desk a minute later. They probably tuned out of work five minutes before that, wasted five or so minutes with this "meeting", then weren't back in the flow for another 10 minutes after that. Some useless or empty "status update" cost 25 minutes, and I think that's being pretty generous.
Nearly everyone is going to work better with blocks of time dedicated to their task(s). How about we all (developers + non-tech people) work together to reduce the amount of noise that our companies generate so that everyone can be more efficient?
Generally, if you try to reduce socializing, you're seen as antisocial. Trying to be more efficient for the "bottom line" or "good of the company" or whatever makes you sound like a brown-noser.
Yes, everyone gets interrupted. It affects some classes of workers more than others. Not that developers should be treated as "special", but most places I've worked at, mgt and financial people get private offices so they're "not interrupted", but somehow developers building the software the company runs on and/or sells are supposed to be fine in open-air bullpens, just like call-center workers.
There's an element of status I suppose to, but perhaps those with private offices should try to get their work done out in open-air offices for a few months.
Perhaps distractions don't damage your productivity, but I am guessing you're merely more productive now, so the short bursts you make are more productive than your old longer bursts, therefore your 'Warm up and cool down' periods FEEL shorter. It's not like people do nothing when not in flow, they just do less.
Besides call in meetings you can filter all your communications through electronic means. I check my email only every 4 hours. When I need to not be distracted I turn off my IM. It can be kind of lonely but Im overall much much happier.
source: I do this :P
Sometimes, it's best to just complete a user story as it was logged and then see where we go from there (or even, shudder, after it's been deployed, and actual users have gotten their hands on it).
Seriously, give developers and engineers secretaries/assistants. Even one assistant per 3-5 engineers would be a huge benefit. A good secretary will run interference with people who are coming to provide a distraction, and in many cases will probably be able to answer any questions necessary without bothering the engineer.
It could also provide a good entry level position for someone to get some experience and move up to coding.
My personal favourite was the idea of a day of no interuptions. I think this would be relatively easy to implement and one day of high productivity is still an improvement over zero days of high productivity.
A further solution might be good old fashioned office hours. You have a question for that requires my personal advisement? Great! I'm happy to answer! Anytime between 4:00 pm and 5:30 pm. If it really can't wait, email me and hopefully I lose my flow and check my email in time.
If you can squirrel away a little bit of time here and there to make hard things easier, then you can eventually start breaking tasks down into chunks that fit better into a day of interruptions.
This has been the only way that I've found to consistently increase my productivity no matter how much I'm procrastinating or being distracted at the time.
http://alexthunder.livejournal.com/309815.html
(DON'T WAKE UP THE PROGRAMMER!)
"Programming is for weak and effeminate men. Try carrying bricks up flights of stairs, or collecting rent checks in the inner city. And on top of all this you complain about "being interrupted"? Oh, how awful it must be for you. You need to check to see if you have a vagina down there."
Sure it may be controversial, but it's funny.
A lot of ink is spilled describing what companies and bosses could do to enable programmers to get or stay in the zone, but all of that is immaterial compared to one's intrinsic ability to focus, which is a skill that can be developed.
How would you want your QA people to deal with this problem?
There is no magical solution to this problem. :P
What I notice at my current employer is that trying to avoid pulling people into meetings results in what I call "Development by game of Telephone", where software requirements become rumors passed between employees. (Even when requirements are documented -- because the documentation is vague.)
File a ticket, I will get to it the next time I am in the tracker updating my task list or jotting down the time it took me to do certain things. Anything from QA coming back to me requires my immediate attention because most likely I am holding someone or something up.
In a perfect world, environments would be exact, configs would never change, and features would be flawlessly documented, but such a world is not one I live in, nor do many other people.
You don't succeed in most environments based on whether or not you're productive, competent, or expert at what you do. None of that really matters once a company gets to the point where decisions are no longer being made by technical people.
So, you have to suffer. You have to deal with the meetings and the social expectations. Most developers work in an environment where availability matters more than excellence. In at 9:45, when the boss is in at 9:30? Stee-rike one! Miss the daily standup? Stee-rike two!
There is a positive spin you can put on it. Most companies won't actually fire you for skipping those meetings. They're mandatory, but not that mandatory. However, you'll just end up increasingly out of the loop and with a negative reputation... and eventually lose your job, but it will take a long time-- possibly 6 to 12 months, and certainly long enough to get another one. Attending that 15-minute status meeting rather than skipping it probably has as much of an impact on your political standing (and, thus, career) as a 2-hour swing in the overall length of your day. So the efficiency ratio of that meeting to normal ass-in-chair time is 8-to-1. No, it's not what you'd like to be doing with your time, but it's work, and most people deal with a lot worse than status meetings.
The game in most places isn't about getting the most done, or getting into flow and building great software. It's about creating an image so that managerial types, many of whom operate on antiquated emotional metrics of availability and subordination, feel confident in you. It's a game to be played, not a meritocracy.