We believe that the way to be most productive is with a reasonable, balanced work schedule. Working long hours for long periods of time results in mental exhaustion and shoddy work that needs to be fixed later. For programmers, working long hours does not translate to more debugged code written.
Different people have different ways of being productive. Some people get more done in the morning and prefer to come in early. Maybe you get a lot done in the wee hours of the night, but you have trouble getting in to work before lunch. Either way, as long as you're getting your work done, software developers at Trello should design their own schedule around their own balance of work and life. It should be sustainable and reasonable. When we have a crunch period, usually around ship dates, you should be well-rested and caught up on your errands, so if you need to work longer days than usual for a week or two so that a release can get out the door on time, you won't be exhausted. Make regular time for your family and friends throughout the year so that crunch periods don't become a habit, and work doesn't become a death march. Feel free to rearrange your weekly schedule, for example, working slightly longer on Monday through Thursday and taking Friday afternoons off during the summer. Bring your family and friends to join us for lunch.
Our policy is that you should plan to be on site most afternoons. We tend to schedule meetings right after lunch to avoid interrupting work, and we get a lot of value out of having people overlap at work for at least the afternoon. Other than that, you can design your own schedule.
Customer-facing employees may need to work more regular schedules to ensure that customers who call us receive a timely response. These employees, including account executives, support teams, etc., may be required to work specific hours so that we can answer the phone when people call. In these cases we'll work with you to design a schedule of about 40 hours per week (although it might be slightly longer during crunch periods and slightly shorter otherwise). Some employees, especially systems administrators and network engineers, but also developers when new software is being deployed may be required to remain "on call" and available on short notice in case of an outage.
If you need to stay home for the cable guy, or run to the dentist or doctor, or pick your kid up from daycare because your wife / husband cannot do it that day, just talk to your manager. This is usually never a problem. Given that we have flex time, you are expected to make this time up at some point. We won't track it, but you should.
We don't track time for salaried employees, but we generally expect employees to put in an average of 40-50 hours per week, which is inclusive of an hour or so per day for lunch. When we're working on shipping something or have other deadlines, we may all need to push past 50 to get things done, but we want to stay staffed to where the average time needed should mostly stay in that range.