Skip to content
This repository has been archived by the owner on Aug 22, 2018. It is now read-only.

Time management & development speed #68

Open
sarahscott opened this issue Dec 15, 2015 · 8 comments
Open

Time management & development speed #68

sarahscott opened this issue Dec 15, 2015 · 8 comments

Comments

@sarahscott
Copy link
Contributor

How do you manage your time w/r/t Artsy apps, and what are some of your best practices for consistency and speed 👼 ?

Also, what are some of your worst practices 👎 ?

Might make the result of this into a post.

@alloy @orta @ashfurrow

@sarahscott sarahscott self-assigned this Dec 15, 2015
@orta
Copy link
Contributor

orta commented Dec 15, 2015

General Techniques

I have two styles of working, in the office and OOO.

In the office, I expect that I will ship less code. I do everything I can to try pair with ash/sarah, go to relevant and optional meetings, and make sure that we as a team are on course with Artsy.

OOO I will write a lot more code. I skip all optional meetings, and aim to mostly communicate via GitHub issues / Slack. I effectively treat artsy like an OSS project. Working in batches here & there.

I treat email / slack / github notifications like a twitter stream, I can take a look over them, if there's something I should do with one, then I do it straight away. If I can't do it straight away I use slack's reminder function. /remind me in x minutes to something. They then get scoped to the right slack so I know if it's CocoaPods or Artsy stuff.

screen shot 2015-12-15 at 3 25 57 pm

I believe strongly in a pull request a day when remote, for me it's really hard to keep motivated for longer projects. Incremental improvements are how big things get made. If I know I'll be blocked at some point along the way on something I need to do, I make a TODO list in the PR, and make a WIP PR

screen shot 2015-12-15 at 3 28 24 pm

Time Management

I don't have a straight up method for keeping track of my time, more a collection of timely reminders in the form of notifications from slack or OS popups. I experimented with OmniFocus/a markdown file/VooDoo Pad, but couldn't really find a flow that fits me.

screen shot 2015-12-15 at 3 29 09 pm

Speed & Consistency

  • Ship small things often.
  • Figure out if what you thought was a D:1 actually turned out to be a D:1. ( D:1 is considered an easy ticket )
  • If you're blocked at review, then make a PR to the blocked PR, so that people can review just the changes in that PR
  • Computers are cheap compared to developer time, make sure your stuff is fast.
  • Know your computer, know your tools, devote the time to understanding the underlying principals of their systems.
  • Don't use a mouse
  • Know/improve your keyboard shortcuts

Worst Practices

Working Offline is both my worst/best practice, I use it to write huge amounts of code without distractions, it's the tool I use when I really need to ship something.

@ashfurrow
Copy link
Contributor

Yeah Orta, the PR-per-day thing has been really useful for me, even when I'm in the office.

I treat my email inbox as a todo list even though I know it's bad. Usually for short-term things (<1 week). Other than that, OmniFocus is the "source of truth" for me. If it's not in OF, it won't get done. But it – and the GTD system – let me not worry about things. I can put something in there and I trust myself that I'll get back to do, but it's taken some effort to become diligent enough. OmniFocus makes it a bit easier, too.

Something I really miss since moving to NYC is long periods of uninterrupted time to work. Nothing is better than like a three-hour block of afternoon time to get stuff done, but it's rare. So I try and focus on smaller things and work from home on bigger items.

I don't perform consistently – I need significant down time after a crunch, sure, but even day-to-day. Sometimes I'm wildly productive and sometimes I just can't write code. Lately (six months or so) I've tried to not write code when I'm really really not in the mood. Like I'll force myself if I can, but beyond a certain limit I find it's counterproductive. If I can't code, I'll dig into OmniFocus and there's usually an idea for a blog post, or a lunch-and-learn, or theres an upcoming conference talk I need to prepare. I used to feel really guilty about not working, but eventually I realized that I get more done if I capitalize on this feeling.

For example, contrast the following two scenarios:

  1. Can't concentrate on code -> force myself to concentrate on code -> feel bad, anxious -> repeat
  2. Can't concentrate on code -> write a blog post (even a personal one) -> feel good about being productive -> "oh hey, you don't what would be a good solution for that coding thing I tried to do earlier ..."

It feels a bit counterproductive to say not writing code helps me write code, but it follows the same logic as "if you don't take a vacation, you won't be as productive." The key thing for me as been to let go of the idea that everyone is secretly measuring how many hours I'm at my desk, or how many lines of code I'm writing, because they're not.

Other than that, saying "no" has been a skill that I've had to learn – I've been meaning to write about it in more detail for a while. Like if someone here asks me if I can get something done by the end of the week, I want to say yes, even though I don't really have time to do that. My favourite trick is the following: instead of saying "no", I say "I'd love to, but I can't." It's honest and preserves their feelings.

That's all I have for now... I'll mull it over and post any more thoughts I have.

@sarahscott
Copy link
Contributor Author

I'll just add to this here and then possibly compile all of the responses later.
@alloy , if you have a spare 10 minutes at some point, your response would be super valuable!

I've found that my productivity fluctuates every day and I'm looking for better solutions. I do use the email-inbox-as-to-do-list thing sometimes, which is hard to manage. I also have a disgusting number of tabs open in Chrome 24/7. I've tried a ton of to-do list apps but I don't like any of them... maybe OmniFocus is different?

Sometimes I write code really late at night if I can't sleep and I get a random urge to be productive. I try to counterbalance that by taking a longer lunch or morning break the next day and this seems to work well. It's a leftover habit from college but sometimes it's the most enjoyable coding time for me.

@ashfurrow
Copy link
Contributor

Sarah, if you want some time we can go through the basics of how I use OmniFocus. I know @mennenia is also an OF fan, and has a different workflow than I do (it's a very extensible tool).

@orta
Copy link
Contributor

orta commented Jan 12, 2016

If you don't change it @sarahscott you'll end up working like how I work, you just get better at keeping a lot of tiny contexts around. If coding isn't working out, jump to emails, or jump to cleaning issues for project, blog posts, etc etc.

@mennenia
Copy link
Contributor

  1. Be productive when you feel like you can be. If that's sometimes at night, go for it. If you compensate for it, that's good. For me, it's usually the mornings. I try and get something out of the way as soon as I can, or sometimes at night as well. Basically when it's quiet, and less people / things are distracting me or requiring attention.

Consistency is something I've definitely struggled with in the past. I do try and stick to when I say I will get something done. If that sometimes means cramming more into one day, but a bit less coding the next, so be it. It's hard to output the same kind of work distribution on a daily basis.

  1. Quick wins and hard tasks
    I either pick a really quick win to do first thing, or the hardest thing / the thing I'm putting off. Either will put me in a good mood, and fill me with energy to tackle more :).

  2. Daily lists
    While I use OF (see next point), I have to have a "scratch pad". A place (often physical paper - how analog haha), that I can use so not everything is in my head as I'm thinking it. This sounds strange now that I type it out haha. See it as an extension for ram memory, plus the fact that I'm very visual. I have to sketch things out, write things out, doodle, etc. On here I usually also write down the main things I need to get done today, as well as a small personal todo list (e.g. "call GP", "pick up bananas").

  3. General todo / information management
    To make sure I don't forget things or I can easily access information, I rely heavily on Evernote and Omni Focus. Evernote contains everything. I pin things from the internet, I drag files, images, and text from my desktop onto the menubar saver thingy, I forward emails, it has everything.

Omni Focus is primarily so I get reminded of tasks at the right times (I use the "defer" function a lot), and I have an overview of all my projects, so I don't forget to switch things up and work on some of this, or that. I do indeed think I have a slightly different approach to Ash, and am happy to show you sometime in a screenshare call or something :).

  1. Email
    I fall into the habit of using it as my todo (Mailbox was amazing for this, unfortunately shutting down), but I'm trying to not do that. This is a work in progress that's currently overhauled quite a bit. Will let you know when I know more!

At the end of the day, in all honesty, I rely most on having some paper around and a pen just to write out my thoughts :).

@alloy
Copy link
Contributor

alloy commented Jan 13, 2016

🕛

  • I try to work regular office hours. I have a dog that needs walking in the morning and a baby that has a routine as well, both of which make it slightly easier for me to stick with that.

    While I can be very productive in the evening and sometimes do so, e.g. when a milestone is coming up or I had to do other things during the day, I prefer to avoid it because for me it easily leads to spare-time-less days thereafter.

    I.e. I need downtime after work, I can’t go to sleep immediately after programming, so it gets even later in the evening, the next day I won’t be fresh of mind (or wouldn’t get up if it weren’t for the dog and baby) and thus start work later in the day, everything falls behind, etc etc.

  • I don’t keep track of hours, because my routine guarantees it to be somewhere around the 40-50 hour a week range, more than that just exhausts you in the long run. If you’re not good at keeping track of them, I’d suggest finding a routine as well.

  • Take time off and be offline when you are. That’s weekends, in general, and a good holiday >= 2 weeks. No guiltiness ever, I know that I put in work.

📈

  • Music, lots of it. There’s nothing like a tune to keep me focussed and drag me through a task. Without it I’m much more inclined to be distracted by other shiny things. Headphones at the office. Headphones on means no interruptions!
  • Process incoming Email/GitHub work:
    • Every few hours when I know to have a chunk of time e.g. when I finished a task –never during a task–, I’ll go through my inbox / github.com/notifications
    • Open all emails / tickets that I’m “participating” in windows / tabs
    • Open a few more that from the title seem relevant to me (people should write good titles)
    • Archive the rest of the emails / Mark the rest of the notifications as read. (Yep, you read that right, 🔥 that noise, more about that below.)
    • Go through the windows / tabs and either immediately deal with the issue if it’s like a few min answer/chore or schedule it e.g. in a TODO list / milestone
  • Get rid of cognitive baggage, it’s just a drag.
    • If I didn’t plan / TODO it when I thought of it, it’s not that important.
    • If I didn’t get to it when I thought of it, it’s unlikely to happen anyways.
    • If it’s something I needed to be able to do my work (better), then I’ll remember that next time.
    • If it’s something somebody really need me to do, they’re likely to ping me about it again. The reason it slip through the cracks is often that they didn’t phrase it really well / succinct, I don’t let that inefficiency become mine.
    1. Everyday I select possibly a few tabs from my frontmost browser window that I want to keep (and more often than not it’s none) and then kill the browser.
    2. Archive email, always. It’s still there to be searchable.
  • Planning happens in 1 designated place, never email. E.g. milestone+tickets on GitHub. Either I’ll ask others to file there and possibly guide them to file in the way that’s required if that’s a person that’s likely to ask me to do things more often or otherwise I’ll file it directly for them.

📉

  • My worst practice has got to be the lack of a physical TODO scratch pad. I used to do this in the past and it works much better than the digital TODO lists I keep. I guess because they are in plain sight and the finiteness of a sheet of paper is a nice constraint against ever growing TODO lists.

@orta
Copy link
Contributor

orta commented Feb 10, 2016

@sarahscott you should turn this into something useful ^

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants