In all my jobs since, I have worked in a more agile setting. By that I mean that the team is small (less than 10 people) and sits together with some sort of product owner. Not private offices, but rooms where only people working on the same thing sit. Frequent releases, fast feedback. Very few meetings, most issues can be worked out in the team. In my view, this is a quiet environment, but occasionally there are dicsussions that you overhear (but that is not a problem). In these types of environments I have been much more productive than I was at Ericsson.
The thing is, you can have development standards that require small iterations that are immediately deployable and this are immediately tested and deployed, without pulling all the overhead of some PMs interpretation of scrum.
I often find the power is generally with the wrong people and they promote the things that matter to them at the detriment of everything else.
I don't personally believe this is by design, it's just people in $foo management position tend to have the soft skills to make their job easier, when many of the developers often don't. And managers, who tend to control budgets and define departments, tend to give those departments to more managers and there's not a lot of people in the room telling them that a software person should probably run a software team.
WHY dont we do something about it? why are we going like cattle to the slaughter house? We are developers right we are supposed to be smart, intelligent yes, we have let this come all over us step by step until we have lost our life.
Developers - it's time to raise to the basic work environment, we need space, we need to do our work with focus, and YES we need separation between work and home.
If a company needs work-after-work they should hire people for these after-work hours, if messages are sent after work, and it's just this additional answer this mail, it should either be handled by workers who work over these hours or just wait to tomorrow
We have let this on us, and it's our duty to bring back the focused work environment and the joyful home environment without interruptions from work or being oncall or answering messages.
Companies _will not_ negotiate things like letting developers have autonomy over the process by which the work is managed and delivered, or letting developers have private offices.
This is just standard Moral Mazes 101 stuff. Preserving the property that employees behave like obedient dogs instead of free thinkers is the absolute number one mandate, to the detriment of all else.
But yeah, what the other commenter said. Just do it!
When I’ve done contract work, and when I ran a startup, I started tracking my own time. I find it helps me focus and account for my time and understand my own habits. It’s not very good for open problems or exploratory work, other than to find that they take a lot of time. ;)
Other than tracking myself, I’ve never had a job that measured my time directly. I had one job that did measure when employees were at work, but they didn’t show it to employees nor set any quotas, they just wanted to understand work patterns.
The main function of the Scrum Master is to shield the developers from all the non-development crap. I've worked with one guy who was so good at it he would play interference and defend us from outside interruptions almost literally (actually blocking people from coming to our desks, making sure we could focus, holding meetings only if someone on the team expressed some kind of blocking issue that he couldn't solve by himself, etc)
Sure, probably this was more about him being a good manager than the "process" behind it. But no matter the process, if a manager is destroying productive time from the developers the fault is in the individual, not the environment or process adopted.
We can’t really ever hope to make progress with improving productivity or work environments if people contribute to be this reductive.
A “scrum master” role does obviously not “literally seek to destroy developer time” - it’s a patently ludicrous assumption. But if you are in a situation where this is happening - rather, where a “scrum master” role is getting in the way of work - then it does point to something else going wrong in your organisation.
1) Pair programming, with the VP stopping by every couple of days asking "where are you guys stuck" and would actively try to solve our problem.
2) Story prioritization - each PM would write product stories for the backlog in an effort to get them in the next sprint. The same VP (above) would review each of those stories in front of the PMs and developers. If it were really lazily written, the PM was shamed, it was thrown out, and could be resubmitted for the next week. Developers got to ask questions, add tidbits regarding prior work that may need to be studied to complete the story.
3) If a bug made it out in the release, it was no-one's fault. Everyone worked as quickly as possible to either create a patch or roll back the feature completely.
P.S. That VP of Engineering is Andres Camacho. He's in San Francisco. And he's amazing. Work with him if you have a chance. He's well known for hiring Jr developers, training them via pairing with them intensively, getting them up to speed quickly and having them contribute meaningful code within a few days. He's now the CTO of Better Therapeutics.
1. If I've not done my job as a PM, then it's much better to figure it out earlier rather than later. If engineers struggle on without the right support from a PM (whether that's stories/requirements, oral clarification, ...) then that can slow things down or create worse outcomes. So I'd rather someone call out holes in my work at the earliest possible opportunity, then be polite so the problem can get larger.
2. In a high trust environment, people can take criticism of their work without taking it personally. It's hard to achieve this type of relationship (with specific people) or environment (with a group of people), but can make things much smoother.
3. I feel the job of the PM is to make the team successful through whatever means possible. Feedback/criticism directed at me is a valuable source of information to support that, whether or not I am the correct target.
I saw good situations in a couple of large companies, but also in some small startups. Private offices or common offices for small teams (2-4 people) with sound barriers to keep things quiet were the best physical environments. My experience with remote work has been uniformly good.
The best psychological environments were ones in which teams developed confidence and trust in each others' capabilities and judgments, and in which leadership was trusted both to make reasonable strategic decisions, and to treat people fairly.
I've also seen a variety of bad situations. Major contributors to loss of productivity include excessive noise and distraction in the workplace, too many interruptions, oppressive micromanagement, loss of trust and confidence among colleagues or in leadership, too much or too little process, anxiety over the solvency of the company, infighting and factionalism, sudden, frequent changes in product objectives and business strategies, loss of leaders' credibility, and sketchy business practices. All of these things impair productivity.
5 minutes in a noisy sales office with 17 people and it all went away.. the brain adapts quickly..
I know building software is different though.. constructing an entire blueprint in the brain.. it takes focus.
One of my biggest mistakes is I rarely drew things out. If I ever went back to software, I would draw out the system, its parts, and each of the tasks/mini-projects before getting started
My best work I've done between 5:30AM and 7:00AM on my home machine before I got ready for work. The code I have created there runs hundreds of websites and causes me less than 5 trouble tickets a year.
My home computer sits in a mud room full of boots and heavy coats where no one bothers me first thing in the morning. It's a littler cooler than the house. I drink tea and espresso. There is no phone, or IM, or anything too distracting (the occasional woodpecker on the gutters).
My home computer is from 2009, only the video-card is upgraded. I run Windows 7. I take a long time and tinker to figure out how things are going to work. No rush. I build logging and error handling first, then functionality. No users requests or specs from management. No influence on direction from management. Management gets (mostly) finished code. In every case so far they didn't know what I was doing and I presented the solution once I felt it was solid.
Somehow I get away with writing no documentation.
I target good. Perfect is truly the enemy of the good. I write code I can hand to juniors with a hour or two of explanation or that seniors can pick up and use and ask minimal questions. No rocket science. This has made it so I don't have to support developers, either.
My one mistake, or maybe, regret, is writing things for me then giving to my employer for free (I do take company time to integrate it into the stack). These solutions have made my professional life invaluably better, but I sometimes wonder if if there was money to be made. But then, I have enough money to live okay, so I'm not too worried about past opportunities lost.
I work as the only dev for a small manufacturing company.
I work alone, in a big quiet office with nice hardware, a comfortable desk and I get to choose all technical choices and set dev priorities.
My boss is ridiculously smart (hard science background) and trusts me to do what I’m good at while he does what he’s good at.
I work 9-5 every day.
It’s basically programmer heaven.
When programming I can do my best work with big 10-12 hour sprints when the mood strikes and maybe a couple in a row. Then there are days with meetings or days waiting for QA or other feedback where the right thing is literally to just go home for the day at lunch time.
My best environment is where I’m treated like an adult with responsibilities to deliver software and communicate when I have issues. My worst is one where I’m treated like a child that must show up at certain times and provide constant updates to the adults so they can be sure I’m working.
If you're told to build X, you might do it in a day, a week, or a month, many companies or managers wouldn't be able to tell what was appropriate. On the other hand, if you were told that you would receive Y percent of revenue of product X for the next three years, your incentives would totally change. You would be incentivized to work as efficiently as possible. More than just money, you would have an increased level of ownership in your own production, which would build confidence and value over the product you build.
The other one was for a larger company in a big open office.
It wasn't even a choice tbh I can't articulate how much I loathe open offices.
In those 5 weeks I’ve built the major part of the scalable distributed OLAP Cube that had proved to be very simple, robust and reliable and was still in use to support telemetry of over hundred of customers after 5 years.
The biggest distractions were a cat, incredibly beautiful rain showers, and warmest ever discussions at the dinner table.
Never had more productive study sessions in my life. 1 hour bike there (listening to lectures on my phone) + several hours studying at a picnic table, eating Thai food + 1 hour bike back (w/ audio lectures).
I think there's something special about the combination of being 1) in a small community, 2) relatively disconnected from rest of the world, 3) surrounded by natural beauty.
I've never been able to replicate that environment since. I've read a lot about summer shifts on the Antarctic bases--sounds idyllic for the same reasons as above.
Really didn’t value that place enough.
It was just the three of us in a decent sized room and I feel that my work satisfaction and productivity was double what it was anywhere else in the open plan office space. There were very few distractions, but our office was open-door and just off a commonly used hallway so we weren’t hiding. We had enough space for a whiteboard and a 4th desk that we used for reviewing work together.
A few months later one of the managers saw what we’d done and decided he wanted it for his personal office. We went back to open plan :(
Tobias Funke, is that you?
That said probably the companies that provoked my best work where ones that
1. I had a personal investment in
2. There were parts of what we worked on that I found intellectually interesting.
2. had small teams and we were not afraid to argue for days about how to do something, and arguments were clear.
3. technical people that worked together sat together.
The places I did my worst work
1. Hated the concept and what we were doing.
2. Just cashing a paycheck (I have also done good work just cashing a paycheck so not sure how important it is)
3. Even if the teams were small the tasks the team handled were split up in such a way that nobody really had any input on anybody else's area.
4. Argument just did not make any headway on anything. If someone had more power in an area you let them have their way because it was a waste of time saying anything.
5. if you sat with the people you worked with it was almost an afterthought.
Software engineers somewhat involved with most relevant business decisions. We are empowered to respectfully question decisions.
- open office - impossible to concentrate.
- constant pair programming - ughhh
- I have a family and friends outside of work. I’ve gone out of my way not to mix my work life and personal life. I have no desire to “play games” and “watch movies” with my coworkers. I come to work to work. I have friends who are former coworkers.
- regular lunches together - again, my lunch time is my time to get away from the office and recharge.
It's just work.
That sounds horrible. Even if half of the people have something to say, that's about 15 seconds per person. Beyond saying, hi, I'm here, I'm not sure what else can be accomplished. It sounds more like a daily pep talk by the leaders to the whole company.
Pairing removes many barriers to development:
* built-in code review
* knowledge sharing: removes silos
* helps avoids overengineering (few pairs have the same overengineering idea, so you tend to settle on a decent un-overengineered solution)
TDD, which I'm not fully convinced on, acts a clock for pairs: one person writes a test, one person writes the implementation, flip roles, repeat.
Other XP practices: everyone works at HEAD, deploys from HEAD, retrospectives.
Small features went from discussing with customer, to writing the implementation, tests, monitoring, and deploying it in half a day.
The disadvantages of ~full pairing: remote is harder to support, I missed getting into flow, fixed working hours.
- code reviews as part of a pull request system
- knowledge sharing - design sessions for features to make sure nothing was missed and architectural overviews with wiki documentation.
- avoid overengineering - again architectural “previews”.
I prefer less ceremony, remote when I like, no open office, etc etc
Good!
> ...to respectfully...
Sure.
> ... question decisions.
Uh, that's empowerment? The right to ask "respectful" questions about decisions that are already made? As everyone else is already pointing out, what you know may be separate from what you (want to) believe.
What do you mean, 'As everyone else is already pointing out, what you know may be separate from what you (want to) believe.'?
- <80 person team (total); ~60% engineers
- 0 product managers: design and engineering are equally empowered to make the site nice within general business/product definitions defined by GM who would constantly get excited about the work you showed her, making you feel good about yourself and your work
- 0 project managers: business understands that there is no magic formula for delivering products that haven't been built yet and so long as we try our best to hit dates and cut scope as needed, it's on us to track our progress and determine priorities
- gm, cto, and head of hr all supportive of growing team and individual members in a non-political way
- politically-driven employees (typically a head of sales or marketing) shut down and churn out quickly
- engineers talk directly with customer service
- engineers perform rounds helping out in support forums
- domain specialists, but no fences. i might be a web engineer, but if there's a sql query i feel compelled to optimize, nobody is going to stop me.
- company regularly interacts with, and hosts local events for, an engaged user base. engineers actually end up having in person conversations with our users, gathering honest feedback for improvements while simultaneously being told how great the product they contribute to is overall
- relaxed hours ("you're an adult; we trust you to get your work done")
- when dining out or getting drinks, even paying by cash a large group is able to come up with the right amount of money, with no one person needing to chip in more than necessary
- anyone in the company can deploy the site with a single chat room command
Management and middlemen can as much help velocity as they can hurt it. More hands doesn't always mean faster work ¯\_(ツ)_/¯
At pretty much every other company I've ever worked at, I've always felt that if I inconvenienced the company at all, it basically wasn't going to happen unless I brought a strong business case. Company always came first. Conversely here, I feel like it's a balance. If I want to do X, my manager / others will make an effort to find a business need that matches that. There's a very generous (paid) maternity leave policy.
When you like your manager and you feel like your interests are aligned with the company's, and you feel like it's a little more relational, that's when I do my best work. I've been looking for this for a long time, and I'm thrilled to be here.
What's so great about this PM? (I won't try to generalize, I'm too inexperienced for generalizations)
- he doesn't code, yet he listens to our expertise and act on it
- he doesn't half-ass features, he takes the time to reach out to customers and prototype
- he shields us from upper management
- he respects our time, and actively prevent outside interruptions
- he is careful about when we get blocked/slower, yet he doesn't try to micro-manage
- he doesn't balk away from the boring and ungrateful work
Despite having no say in his recruitment, I am glad my company decided to get him on-board (despite no previous formal PM job)
When there is enough space that some one else's conversations did not cut through my headphones which do not play music by just cancel noise.
When what is the problem is articulated well (I do not mean details for a task, I am ok with a problem with no known solution but there needs to be a common articulation of success..)
When my co-workers are emotionally secure enough to have a discussion where any and every idea is open for a challenge. I hate to say this but "disagree but commit" is a good mantra as long as "disagreement" is not used against you, actively or passively. I burn more energy navigating my path around egg shells and consequently have less for what I need to do.
Project is managed mostly through airtable with quarterly goals with weekly’s and daily’s (not standup) to check on progress. Then we have a company/team wide call every tues for the weekly brief.
All the above enabled me to have the best environment by then investing in my home office. A space that has a good desk (multitable sit/stand), chair (aeron), and good lighting, not to mention a beautiful machine (iMac Pro).
The issues that followed were more of the focus issues when doing work at home, so I got a pomodoro clock which then made everything seamless.
I can chose what I work on for the day, week, month, or Quarter. I have my work area, but within that I have 100% freedom to figure out what I need to do- the only thing I need to do is to be able to justify it. I can select the tickets I want to work on, areas to improve, initiatives to take up, or software to build.
Also, the core business drive of measuring and qualitating your work. So, you can see the impact you are having on the business (positive or negative- NOT in a way that affects your job, but in a way that you can say "I did X which made Y faster, causing a 3% growth in click-though rates).
But I do wish I had a more private workplace. Hexes are better then the nightmare of open offices, and I work on a quiet floor, but sometimes I wish I had a door I could close.
“Every person in your company is a vector. Your progress is determined by the sum of all vectors.” — Elon Musk
I also have a great deal of influence over my hobby horses - infrastructure (AWS) and Devops.
I'm still owed $14k for my work, which I'll probably never see, but I'm proud of the work I did. It gave me something to talk about in interviews and probably made me more money than I'm owed.
- those who like open office can sit together, but for the rest, provide a semi-isolated quiet/dark area to concentrate in and a whiteboard.
- plenty of conference rooms.
- if expecting to work with new tech/framework, allow reasonable time to learn during work hours. - allow time for documenting
- allocate time for fixing tech debt every sprint
- provide training on the product being built
- give good insight into product decisions
- if unexpected work has to be added mid-sprint, pull something else out!
- acknowledged that when someone worked all weekend to finish something that they get a bonus day off some other time
- keep process meetings to minimum
- when a developer brings up a security flaw, take him/her seriously
This environment requires that both participants have plenty of humility, openness, and patience, but when it works, it can be priceless.
MPJ has a long, but relevant video on this: https://www.youtube.com/watch?v=qe1ZAy2yNvE
1) condensed higher intensity blocks followed by larger breaks
2) distinct "seasons" of work that differ in projects/pace
At the micro (day-to-day) level:
3) no logging of hours
#1 and #2 are a product of the academic calendar. I find the regular 9-to-5 work week paradoxically draining. I'll trade a good chunk of my weekends and evenings for longer breaks between "ON" periods.
As for #3, one company I worked for simply trusted that you'd put in your 40 hours a week. It was more flexible and quite simply freeing. If I were in a good flow state I might work late to finish up a feature, then sleep in the next morning (provided there were no meetings). All without the tedium of counting quarter-hours.
Really you just need fewer barriers to doing work, and to make it easier to find and publish information. A group consensus or product owner can decide if work gets merged or refactored.
Not much beyond that, except that my users had a clear need, and I was given time to do the work. Had a private office, but that mattered little.
My moral: Sometimes you really can make lemonade out of lemons. Maybe the torrent of shit raining down on you is a gift sometimes.
The end result is I am extremely happy in my work hours and arrangement as long as I don’t have early morning doctor appointments or something.
Also: a great manager who advocates for my product and career and shields me from politics.
Worth noting all these practices can be done remotely too https://cucumber.io/blog/2018/06/20/inclusive-benefits-of-mo...
Also notable what was absent. No synchronous blocking code reviews. No branching at all, just continuous deployment of small, safe changes. No need for standups or design meetings when mobbing. Estimates unnecessary when teams become good at slicing things small.
What has worked for me to facilitate my best work is to reserve a meeting room to myself for one or two hour slots during the week. This allows me to close the door, put my back to the window and get focused. What's great about this is this limits visual distractions, restricts uninvited visitors, and reduces auditory distractions (I will usually wear headphones and listen to non-lyric music).
Often I find that I will get more work done in this period of time than I would if I was sitting at my desk.
The new team however is a place which prides itself in having the "startup culture". It's in a different building and it has TT and foosball tables (pretty much never free) right next to our work desks which are like places where everybody sits everywhere and I literally had to fight with people to ensure that my "spot" remains "my" spot. People start coming at 11-130am and keep leaving till 11pm - 12pm and you are often expected to stay back if there's "dependency" and if you start pulling a 10-6 you are literally looked down upon. This team loves to talk about working like this. Productivity is hitting rock bottom. I know it turned into a rant but that's how I feel. Yes, I am interviewing but only at MNCs :|
Agile definitely feels better than waterfall, but it's also made me appreciate why it goes wrong so easily. You have to be willing to experiment with your process often, and retros have to have the ability to get brutal if things aren't working.
Regular releases (every two weeks or so) are important. They help to reduce scope creep and get you faster feedback. The trick is tweaking what a 'release' is. Having the ability to do targeted, beta or pilot releases helps you get things out more quickly without scaring the rest of your users or screwing up of there are bugs.
Pairing is useful, but there is a tendency in our team to say 'oh, there's not many cards left in the current release, let me pair with you'. That's just wasting time. Pairing should only be for knowledge sharing or speeding up difficult code.
Slicing tasks is very hard. I think it's better if they're sliced vertically (implementing a feature end to end) as opposed to horizontally (you write the react, I'll write the API, and we'll meet in the middle). Horizontal slicing leads to knowledge slios, implementation mix-ups and can also lead to very small cards which means you're constantly context switching.
Mmm-mmm. We grew past that, but that was the dream. Just sitting around a table building product with great visibility into the customer's experience. Gold.
- No Slack for non remote
Slack is cool, but I remember thinking that if I needed to talk to someone, it's over email or in-person. This really encouraged face to face or email conversation. There was also Skype for remote workers, but if you're not doing remote, you could kill Slack. Now that I think about it, Slack is more of a vitamin than a pain killer for non-remote organizations. Slack is great for remote though and love it.
- No Agile
Ah, I remember when I had my first job using Agile. It was cool the first few weeks and that was it. Again, it's not a pain killer, it's a vitamin. I had the best time ever just sitting in meetings on Tuesday mornings to demo everything in person then do code review with my CTO after. Talk with the whole team including marketing on what we'd work on. I loved it. No agile, was completely in the know and performing.
- Support with Tools
It sucks not having the right tools to do the job. Receiving the appropriate hardware, desk, and software has always been useful and makes me happy to come into the office. It really sucks when you wake up, look at your amazing at home desk, then go to a lousy work desk. Bling out the work desk. You can do anything from getting a top end work computer, a great monitor, an eGPU (may actually save a company money from AWS bills), a DAC/AMP (cause devs usually have a thing for headphones and the budget for great ones), or a desk goes up and down and has memory settings and it's fast.
- Minimum Friction
If you get told you need to change up your landing page, change up the tooling, or do a big refactor on something, always take it seriously. Some people marry a concept or an ideal and it can often cause friction between the team. Giving up the consistency and letting others use what best let's them get their job done should be given time and thought. All in all: be fluid with company practices and not letting a "mono-culture" take root is usually best.
My best experiences have been when a single employee can happily recommend a new way that could radically change the initial experience of a customer or a company culture. The fluidity maximized sales and development.
- Wrap up
We have so much now with tools that can be categorized as pain killer or vitamin. My best recommendation is to have less vitamins and more pain killers.
Note: This is just me though. I know a lot of other people have different ways they prefer to work. This is just me.
I know I'm discussing Scotsmen here, but: what about this is not agile?
• Agile as a set of values
• Agile as a set of practices
• Agile as a faddish silver bullet marketed to people who don’t know any better
I assume OP is thinking mainly of the latter two. It sounds like their business avoided formal standups and sprint planning, and didn’t generally care about Agile/Scrum etc. buzzwords. But I tend to agree with you that from a values perspective that seems perfectly Agile.
It was the most productive I've ever been. The code I wrote was mostly garbage, but I got my reps in that summer and learned how to program.
I don’t get micromanaged but have clear goals that are set forth.
The only problem I’ve faced is occasionally unclear communication with other coworkers; mostly because I’m still getting used to some of the jargon and need to phrase my questions correctly.
Some coworkers use English as a second language too, so that can be a slight barrier; fortunately my experience as a language teacher helps me in that regard.
Overall I’ve been learning a lot and I can see myself working with this company for a few years at least.
Unfortunately he had too much of a "if we build it, they will come" mentality that infects way too many people in charge, and didn't put enough of an effort into marketing, or making sure we were working on a project that consumers wanted in the first place, so the games fell with a thud when they hit the market, but I was able to focus on making and learning, and I learned a tooooon in that period of time.
I haven't worked in a similar environment since. Big open spaces, lots of people and distractions, lots of people constantly wanting status updates, not much time to focus and really get work done, let alone learn anything.
Like at my current job, it's slowly gotten so bad that right now I have 3-4 hours of status updates most days (1 for devs, 1 for our department, 1 for our business unit, 1 for our data center, 1 for a specific upgrade project we've had for the past several months, and each lasts at least 30 minutes, usually longer) along with other meetings so my work day doesn't really begin until 3pm most days (and there's been multiple days when I was stuck on a phone until 10pm or later), and I'm still expected to make progress on four different projects and manage offshore developers and get development work done (that the offshore devs can't do) on top of all that. Things are slipping even with me working into the evening and a bit on weekends and those meetings are just drowning me, but I'm the only person in the department that has the domain knowledge they need (anymore, everyone else has left or transferred to another department) and they're stretching me beyond thin.
My own boss resigned because of this nonsense. He was the one that used to be able to shield me from this, and his replacement has just increased the amount of meetings I have to attend with his gung-ho, "fix all the problems this department has ever had" now attitude.
I really need to find another job.
Good funding
People with multidisciplinary skill sets
Python
No silos
Access to agile contractors when a burst of effort is needed
Good reach and visibility within the organization
As for team dynamics it was my first job. The cheapos would hire only very junior engineers. This meant terrible code quality but a young team eagar to make the jump in our careers. We learned a lot from each other and many of us are still in communication 10 years later. Despite being scattered across the country.
Best environment is the polar opposite of that.
Innovation comes from the bottom more frequently than the top, and given time to understand a problem and stew on what is really needed there are rare engineers who can drive the very best work. If the environment stymies that then all is lost, they and others will leave.
My best work has been in the context of supportive, light-touch leadership, high autonomy teams, the ability to really own a problem.
Great discussion, but try not to reorg your workplace based on the data driven from such small and likely biased (hn readers are not randomly selected, etc.) sample.
Open communication is always key. It should feel like a family. The manager/lead needs to be strong, decisive, and protect their people from all the politics.
Learning should always be an opportunity. Engineers should feel safe taking risks and making mistakes.
My experience programming for myself: https://www.youtube.com/watch?v=-8aHsJdMEMY
My experience with agile/scrum: https://www.youtube.com/watch?v=N9-7uLg-DZU
It’s incredibly productive for me but I’m lucky that I enjoy programming enough to rarely get distracted by my picturesque surroundings during the day.
We were on throughout the day. There were no formal meetings. Just a long stream of discussion on the future, and everyone was always synced on what to do.
Nobody bugged or interrupted each other unless it was really important and they had to drop everything.