1. 2

    Likely attending a convention in Minecraft. Also attacking my poor inbox. Really need to systematize that.

    1. 1

      Please elaborate more on this convention within Minecraft, if you can. Sounds interesting!

      1. 1

        It was Anthro New England. I didn’t actually attend because it turns out I don’t gasp own a current copy of Minecraft, but it might have been interesting. Hopefully the next such event will be on VRChat or the like.

    1. 1

      Trying to deal with a mighty mess of emails spread across multiple inboxes and multiple domains, accrued over years of undiagnosed executive dysfunction.

      Feels like my best hope is to mass-delete as many mailing list and promotional emails as I can, cherry-pick the most relevant messages from the last 6-18 months, and declare “bankruptcy” on the rest.

      Any advice for tactics, strategies, and tools are appreciated. I plan to get back into the Getting Things Done (GTD) workflow, for example, as part of the process.

      1. 3

        One toy project of mine involved games and came out of a game jam, but sweet-turnips was first and foremost an experiment in making a template for tiny games, something I and others could use to rapidly prototype games under very tight creative constraints. It was also an excuse to learn entity component systems and event-driven architecture hands-on.

        I also slapped together a little weather report display for my Inky pHAT a couple days ago. Loved the process.

        1. 110

          I tell anyone asking me for career advice the same two things.

          The first: the deeper in the world’s dependency tree you are, the less frequently things will churn, and the longer your skills will last. TCP doesn’t change very often. Theoretical skills may be applicable for your entire career. Human skills are more durable than any technical skill. Kernels don’t change very often (but more than TCP). Databases don’t change very often (but more than kernels). There is a spectrum of skill durability, and you will burn out faster if you find that all of your skills become worthless after a very short time. Dependency forces things not to change their interface, which causes the work to shift toward performance and reliability among other things that some people find far more rewarding over time.

          The second: the more people who do what you do, the worse you will be treated, the more BS you will have to put up with, the worse your pay will be, the faster you will be fired, the harder it will be to find a job that values you, etc… etc… Supply and demand applies to our labor market, and if you want to be happier, you should exploit this dynamic as heavily as possible. Avoid competition like the plague. But don’t avoid funding. How do you avoid competition without going off into the wilderness where there is no money to be made? Hype drives funding, but it also drives a lot of competition. However, using rule #1 above, the hyped things depend on other things. Many of these dependencies are viewed as “too hard” for one reason or another. That’s the best place to be. Go where other people are afraid, but nevertheless have a lot of money depending on.

          All hyped things rely on things that for one reason or another are not commonly understood, and tend not to change quickly. That’s a good place to find work involving durable skills that tend to have lower competition. Go where the dependency is high but the competition is low, and you have a better chance of being happy than people who go where the competition is high or the dependency is low. Bonus points if it’s actually “hard” because then you won’t get bored as quickly.

          There are areas of front-end that are high-dependency, durable, slow-changing, and low-competition. That’s where engineers are likely to be happiest. But these two principles apply to every field or zooming out to any business generally. I’m pretty happy working on new distributed systems and database storage engines for the time being. But I’m always looking for the things that are viewed as hard while also receiving significant investment, as these are the things that will ultimately give me more opportunities to live life on my own terms.

          1. 10

            Go where other people are afraid, but nevertheless have a lot of money depending on.

            There is an old Yorkshire saying: “where’s there’s muck, there’s brass”.

            1. 7

              This is so true, I’ve gone to my car to fetch my laptop just to upvote and comment. It’s an exceptionally important piece of advice I wish I had understood as early as possible in life, but I didn’t.

              CS (pure) and Math degrees are so good because they teach you really basic theories that are mostly timeless. Whenever I’ve gravitated towards more trendy or applied skills, either in coursework or in jobs, there’s always been a really poor and transient ROI.

              […] using rule #1 above, the hyped things depend on other things. Many of these dependencies are viewed as “too hard” for one reason or another. That’s the best place to be.

              What are some examples of these dependencies right now, or in the near future?

              1. 6

                Thank you very much for this post. Great distillation of essential career advice, especially the part about the durability of human skills. So many developers would derive far more value from a single public speaking or improv class than from learning yet another new programming language.

                1. 3

                  Oh man, the number of times I’ve echoed this exact same message to others almost verbatim in the first two paragraphs. Thanks for posting this. Thinking about my career in this way a few years ago was probably the most valuable change I made.

                  1. 4

                    Thank you for the kind words :)

                    Large-scale ML, blockchain, IoT, serverless, k8s, etc… are all areas recently flooded by newly minted experts in the topical skills, but like the Australian poop diver who claims to have never worked a day in his life, there are great opportunities for high-respect jobs in the dirty internals of the systems :) Particularly with this set of hyped tech, there are very few people who seem to specialize in getting bugs to jump out in distributed systems. Everybody is still writing almost all of them in a way that assumes the happy path. But there are techniques for building all of these systems in ways that encourage the race conditions to jump out. The few people who take pride in building correct distributed systems will have their plates full for a while!

                    Another reason why this kind of bug hunting and prevention is not all that popular may be that the sorta-similar yet way-cooler-seeming field of systems security tends to absorb a lot of the people who may have otherwise been predisposed to this type of work.

                  2. 1

                    love this comment. like the other commenter, do you have any examples of “hard, but trendy” in frontend or elsewhere?

                    1. 7

                      Spitballing, I’m going to google “hyped programming field” and see what comes up, then I’ll try to break it into areas for investigation. Ok, my results on the first page seemed to be about AI, python, golang. I mentioned high-scale ML depending on distributed systems skills and correctness skills above, so I’ll think about the others. Python feels harder for me to answer so let’s dig into that.

                      Python is immensely popular and I think that becoming an expert in alleviating any friction point that people often hit will be lucrative. But what about things that SOUND really boring? When I think about things that suck about Python, the most dreadful thing that comes to my mind is migrating large applications from Python 2 to Python 3. Python 2 stuff is still everywhere, and it’s increasingly hazardous over time because its support has run out. But people don’t want to touch things that are still ticking along. Legacy systems, like geriatric medical care, becomes more important every day.

                      But despite being extremely important and an excellent place to apply interesting mechanical (yet supervised) translation and correctness analysis during modernization, so many people have been burned by consent issues at work where their managers forced them to work on legacy despite them not wanting to work on them. So much of the overall programming population has been burned by non-consensual legacy engineering that almost everyone wants to stay as far away as possible. The only question is how to find the companies who realize that modernizing their legacy systems is actually something you want to pay a specialist to do instead of forcing the task on junior devs with no negotiating power. Banks are well-known for paying consultants for this kind of work, but to be honest I’m not sure.

                      Maybe Python 2 modernization isn’t exactly a golden ticket due to the difficulty in finding companies who are willing to hire specialists to perform this task. Maybe it’s too easy. But may it’s not. I’m not sure. In any case, this maybe demonstrates the general search technique, and can be used to illuminate further areas for research. If general Python 2 modernization is “too easy” then you can slap on more filters. Python 2 modernization for automotive codebases. That sounds much more correctness-critical and likely to pay a specialist to accomplish.

                      Anyway, the general pattern is: what feels repulsive and hard? Maybe that sense of repulsion creates a dynamic where the few people who do the thing are extremely well treated due to their scarcity. If that scarcity of talent aligns with an extremely popular overall field, there’s a good chance that there are folks who require a specialist to address this niche.

                      1. 6

                        Anyway, the general pattern is: what feels repulsive and hard? Maybe that sense of repulsion creates a dynamic where the few people who do the thing are extremely well treated due to their scarcity. If that scarcity of talent aligns with an extremely popular overall field, there’s a good chance that there are folks who require a specialist to address this niche.

                        Here’s an example of scarcity working out well for an expert. Another company in my industry was converting to a different accounting system. These projects are incredibly complex and can last years. Part of the process required recreating hundreds of templates for the new system. One contractor handled the template conversion; she retired at a young age after the project was complete.

                        1. 3

                          non-consensual legacy engineering

                          Have you written about this anywhere? I’d be curious to hear more about it. It immediately struck a chord with me, and probably does with most software engineers.

                    1. 2

                      Working on a COVID care app for for the day job!

                      Also performing due diligence on legal setup (e.g. establishing an LLC) before formally publishing the first episode of a game later this month.

                      1. 8

                        I’ve been wanting to learn Rust forever so finally going to start. My plan was to go through the books on their site (probably Rust by Example), and then find some projects to apply it to. I’d certainly welcome advice from anyone who has done something similar.

                        1. 4

                          Do Rustling project. And once you are done with that, contribute to it by opening a PR. I found you learn a lot by contributing to others code.

                          1. 3

                            That’s how I got started, as well. I also read from Programming Rust.

                            But my biggest success, the one that made the borrow and reference system finally click for me, was using Rust for a 30-day game jam project. The extended time frame, as opposed to the usual 24-72 hour window for most game jams, made a huge difference in terms of learning since it reduced my “code code code” tunnel vision. I also prototyped the game in Ruby, one of my strongest languages, and then used bridges like Rutie to convert the project to Rust class-by-class. Having a working code base to start from made everything less less intimidating.

                          1. 4

                            As much as I understand the frustration here, the reason why programmers aren’t trusted to make decisions is because we’ve consistently failed to earn that trust.

                            Big tasks with lots of room for error is what gave us the platforms of the 80’s: barely-usable “power” platforms like Linux, over-promise-under-deliver demo OS’s like Windows 95, the pile of hacks called The Web, and the pile of less-famous code that gives rise to organizations with names like Destroy All Software.

                            The micromanagement might not be much better, but acting like coders should be given more trust and responsibility is laughable.

                            1. 5

                              While it’s true that programmers have done little to earn trust, I don’t see any alternative worth trusting more. If anything the business people display premeditated malevolence.

                              1. 1

                                You make a good point. If programmers hadn’t given us the web, for example, we’d be stuck with AOL. So many failures came out of marketers and managers making the promises, not the programmers.

                            1. 4

                              Playing games with family and friends, enjoying a regular VRChat meetup, taking a break from Hades (fantastic game), farmer’s market, and reading.

                              Glad to discuss each of those in more detail.

                              1. 2

                                Apply to a job at one of my favorite, if not the favorite, company I know. Content with my current job but that’s no reason to pass on this rare opportunity.

                                1. 8

                                  I’ve personally found note taking (on pen and paper) to be a secret weapon so to speak, one that seems often overlooked. I have about 5 years worth of notes/ideas/etc, spread across 8 notebooks (5 big ones, 2 small ones, one tiny one for on the go), and I quite regularly revisit them. I too keep record of what I do, though this is mostly limited to just simple checkboxes ([✓] Scheduled meeting with Bob for example). I also deliberately keep these daily todos/logs somewhat messy. I find this quite “therapeutic” compared to the very rigid/well-defined workflow that usually comes with software development.

                                  Looking back at the last decade or so, I think my advice for a new developer would be as follows: get a good (fountain) pen, a good notebook (Dingbats Wildlife is really good), and take notes; lot’s of notes.

                                  1. 5

                                    a good notebook

                                    I’ve been using a nice notebook, similar to that one, for a long time, but I’m starting to wonder whether it’s the best option. I’ve recently been considering using a binder (or just binder clips!) which would add the options to:

                                    • Have a smaller ‘notebook’ on the go, or a big ‘notebook’ at home
                                    • Remove pages without tearing
                                    • Add blank pages (!), with whichever pattern is necessary (college ruled, square grid, dot grid, blank, etc)
                                    • Add other documents (tickets, business cards, etc)
                                    • Transfer documents between notebooks
                                      • Maybe my grocery list for this week shouldn’t be attached to my writing about my emotions for the past few years

                                    Have you had any experience with this? I haven’t used a binder since high school, but it actually seems like a pretty good solution.

                                    1. 3

                                      The Dingbats notebooks allow you to remove pages without ruining them, as they come with those tear lines (forgot the term). I personally have never needed anything more than lined pages. Transferring notes is something I haven’t really had a need for either. If that’s something you want to do, you indeed are likely better off with a binder of some sort.

                                      1. 2

                                        Perforated is the word, I forget it a lot as well.

                                        For me a lot of what I tend to do is pick the simplest thing I can and make sure that I don’t end up obsessing over the formatting and methodology of note taking over just taking notes. It’s the same reason why I won’t write a custom blogging engine even though I could, it’d detract from me actually writing which was the original value proposition.

                                        The more steps and the more complicated I make it to take notes, the higher the barrier I put up for myself. If it’s high enough I end up in the kick-start problem in which if I can’t get it done one day the rest of it falls apart quickly afterwards. “Well I can do it tomorrow” turns into “I can catch up at the end of the week” turns into “why don’t I have notes for the past year?”

                                        That said, do what works for you. Most of my process involves actively foiling my own bad tendencies and acknowledging them, and those are different for different people.

                                      2. 3

                                        I’ve experimented with various paper and digital based solutions. At present, I’m using Joplin and it’s working well for me.

                                        During my experiences with paper-based solutions, I think the best overall was to use a portfolio binder (representative example – I am not affiliated with this vendor, and have never tried this specific product, just linking here for the pictures). Mine is an old Franklin Covey one from the 90s. It offers the benefits you listed, but also has space for storing bits of paper (handouts, forms, etc.), a pen or two, and some business cards. I think they also look more “professional” for what that’s worth.

                                        Usually at the end of each semester, I would take out all the pages and put them into folders in a file cabinet, one for each of my classes. In a professional setting, I would probably do this by project, or maybe by sprint. Being able to add, remove, and re-order pages was a huge benefit compared to a traditional paper notebook.

                                        To echo what the GP comment said, there is definitely something about the physical experience of writing on a piece of paper, as opposed to with a stylus or typing, that makes it worth something. However I found the extra weight and bulk, and lack of search-ability, to be a major detractor of using paper. The benefits of search-ability, automatic backups, cross-device sync, and being able to copy/paste are worth the inferior writing experience to me.

                                      3. 1

                                        I couldn’t agree more. Bullet Journaling, for example, has saved my bacon countless times.

                                      1. 11

                                        I really like parts of this, and the structure of “problem, solution, how it turned into a strength” is really cool. I’d like to hear more about the interpersonal issues related to ASD the author or others may have experienced and how they navigated that.

                                        1. 8

                                          The fun part is I’m talking to several others in the industry on the neurodiverse spectrum about writing similar posts to try and give a wider view of how more senior engineers work with that.

                                          Perhaps amusingly I don’t have many issues with being social or a lot of the faux pas that seem to be associated with aspergers, well, at least not where I’m currently at. Years ago maybe, but as of recently I’ve been able to adapt pretty well. I’ll have to do a followup on that some time later.

                                          Feel free to ask whatever though in the mean time here or over on Twitter @keystonelemur, I’ll answer both.

                                          1. 2

                                            I think the social issues are a bit more nuanced than ‘is social’ vs ‘is not’. Also I think age and experience help everyone with social skills (as long as they are getting practice and working to get better) so that means on the non-neurotypical spectrum too. ‘Just get older’ doesn’t feel like the best advice though!

                                            1. 3

                                              It doesn’t, and there’s certainly more to it than that, hence the mention of a followup some time later to explain some more concrete steps about what I did. While age and experience do help they won’t have nearly the effect they could have with more deliberate practice, observance, and introspection.

                                              Take for instance that I play guitar. I’ve been doing that for some 15 or more years. By time and age I should be incredible, but considering I’ve more of dabbled instead of putting in serious dedicated practice under mentors and by myself I’m no where near where I could have been had I done those things. Same with social skills I figure, time helps but that’s one factor among many.

                                              1. 3

                                                Some of the perceived change could come for shifts in one’s social group, too. It’s my understanding that people on the spectrum (likely myself included) aren’t “anti-social” so much as wired to socialize in a different way than neurotypical people. It certainly feels like I have an easier time socializing among groups of autistic people (regardless of shared interests) more so than other social groups.

                                                It may be a lack of autistic peers that constrains one’s success with socializing more than the neurodivergence itself, not unlike being the only expat among a group of locals.

                                          1. 2

                                            I’m writing a visual novel: Anthrotari. This one is on what will hopefully be its last major editing/animation pass, barring any big surprises from beta players. It also has a Patreon. Who wouldn’t mind giving this game a play-thru in exchange for feedback?

                                            I’m also writing a sci-fi novel: Planet Oz: Our Dorothy Wears Combat Boots. Once this one gets (another) line-edit pass and new layout work, it should be fit for print. Look forward to a pre-sale!

                                            1. 13

                                              Stepping back and taking a proper breather after an inordinately stressful experience earlier this month.

                                              I had been too wrapped up in my own anxiety to have noticed the depth of my partner’s own stress. Their ability to execute relentlessly also made it easy to overlook. (I tend to have the opposite failure mode of dissipated focus.) While it presents as productivity and focus on the outside, they often can’t escape that same fixation from the inside and the behavior burns them out.

                                              It’s time for me to take a step back and help them strategize and prioritize. It doesn’t matter how much they get done if they’re only treading water.

                                              tl;dr I managed to put my own oxygen mask on and now it’s time to help my partner do the same.

                                              1. 3

                                                I wish you well - this is really important, and thank you for sharing.

                                              1. 1

                                                To be honest, not that great? The lack of true private time from being cooped up with my partner hasn’t been good for my introvert self.

                                                I’ve been making improvements to my diet, fitness, sleep, etc. but that has, at best, staved off exhaustion from months of quarantine and anxiety from local civil unrest.

                                                I could really use some time out of the house.

                                                1. 5

                                                  I’m not sure I really grasp the added value of the IndieWeb compared to the usual self-hosting of blog without IndieWeb. Is it about the notification part when someone posts one of your articles? Is the idea to simulate a social networking environment so that people feel it’s no different when self-hosting blogs? Anyone cares to enlighten me on this.

                                                  1. 12

                                                    As I understand it, it’s a grassroots effort to enable tooling etc. to get the benefits of social networks and the like without the centralisation.

                                                    It is pretty much in the “toys for geeks” stage at the moment, if it will ever leave it depends on adoption and wether said tooling emerges. It’s a chicken-and-egg problem right now.

                                                    1. 3

                                                      Yeah, cschorn, that’s a pretty good summary of what the IndieWeb is to be honest.

                                                      The TL;DR is that if I link to one of your pages/posts in one of my pages/posts, you get a notification (AKA webmention). If reply, I get one back. You can also create shorter posts that are formatted in such a way to provide a “like” or a “repost” where the post literally says “I liked the post XYZ on Jane Smith’s blog” which includes a link to her Jane’s post. Jane will then get a notification.

                                                      Where the h-card (profile) comes into play is that the IndieWeb uses this to markup comments, posts and webmentions with this data, so that when Jane gets a notification on her blog, she can see it comes from me, it has my name and my avatar etc.

                                                      Hopefully that helps somewhat?

                                                    2. 3

                                                      It feels like the modern equivalent of webrings plus the federated, OSS equivalent of Disqus.

                                                    1. 2

                                                      I may be one of the rare person here that actually enjoys open offices. I feel like they bring dynamism and experimentation when it comes to group work and inter-team cross-pollination of ideas, especially when there’s a lot of things going on like pair programming, and even mob programming. Is it because devs don’t want to interact with their coworkers, or simply don’t want any distraction at all, or simply don’t like interactions. I never really grasped why people hate them so much. When it comes to this, the only reason I prefer working from the office is exactly because of the intermingling of ideas with coworkers which is very hard over chat or phone calls. It lacks the team spirit and camaraderie. Can someone comment on this, how their day unfolds, do they simply get tasks, go at them, and then sign off?

                                                      1. 2

                                                        In my case, I have a much harder time pairing with people in an open office than in a closed space or remotely. Active open offices present too busy of a social environment for me to concentrate effectively on both my pair partner and the work at hand.

                                                        Ever had a team take a conference call near your desk? It’s like that but incessantly.

                                                        I also find busy social environments overstimulating and exhausting. I still enjoy the company of people but only in small doses. It’s like how I can’t stay in a noisy bar for more than 45-60 minutes without stressing out, except that I can then leave the bar whereas I’m stuck at the office for seven more hours.

                                                        Dynamism and experimentation is still possible with separate offices, as long as they’re big enough to support pairs or small teams. IIRC, the research indicates that putting small teams in their own offices beats out open offices for actual productivity.

                                                        If you’re having trouble getting a sense of team spirit or camaraderie out of your teammates, you might have more luck connecting with them in groups of 1-3 instead of bringing them all together at once. Structured activities can also help, especially if teammates are still getting to know one another. Lastly, they might have tuned out because they don’t feel engaged in the work itself. There’s no social substitute quite like intrinsically engaging work.

                                                        1. 1

                                                          It’s the total opposite for me.

                                                          Ever had a team take a conference call near your desk? It’s like that but incessantly.

                                                          I do all the time but it’s not much of a bother. It’s kind of the background noise wherever you go in my home country, not only at work, everyone is on phone calls all the time.

                                                          I also find busy social environments overstimulating and exhausting.

                                                          Maybe that’s where the issue lies.

                                                          Structured activities can also help, especially if teammates are still getting to know one another.

                                                          That’s exactly what I don’t like, I prefer the unstructured part of open offices, the mingling between teams that wouldn’t usually talk to one another if they were in their own silo, a word here and there that sparks a heated discussion about a certain technology. Maybe it’s about the perception of what work is about, I don’t think it’s about fully focusing and engaging in a task, disconnecting from the rest of the world, battling out any outside interference, and sometimes having stiff and well structured meeting with colleagues to get a sense of direction. That’s kind of lame in my opinion, and doesn’t create a deep connection with the company, on the opposite I think it’s preferable to welcome outside interferences, making it all games and play, a real group of humans getting together to create something, not feeling like a cog in a well-oiled machine. I don’t think I’d enjoy work if I had a different perception. It’s probably a cultural thing, people are very open and social where I live and wouldn’t stand having everyone separated.

                                                          1. 1

                                                            It does sound like your cultural background plays a large factor in that. I’m speaking for US culture (at least southeastern and northeastern urban/suburban culture) and that kind of gregariousness seems common in certain environments, too, like most bars. Unfortunately for me, and for many trying to do deep work, that familiarity hasn’t made it any less distracting or exhausting.

                                                            I also enjoy socializing and bantering with my colleagues, but during meetings, over lunch, and at other structured times that don’t call for deep work.

                                                            Whatever one’s individual needs, it’s important to check in with one’s colleagues and employees to find the best setup. Basecamp, for example, had a library-like office environment with separate spaces for conversations and that worked well for them. I’d prefer a private office, myself, but I’d also function much better in a cubby with opaque walls at my back and sides than I would in at a shared table. In the end, giving employees real choice would get the best results.

                                                        2. 1

                                                          Is it because devs don’t want to interact with their coworkers, or simply don’t want any distraction at all, or simply don’t like interactions. I never really grasped why people hate them so much.

                                                          Please keep in mind that some of us have various sensory processing difficulties or other reasons why working in potentially noisy, dynamic environments could be distracting, frustrating or even painful. I certainly don’t think there’s anything wrong with acknowledging that some people, like you, enjoy working in open offices, but for the people who don’t, it’s not necessarily a matter of preference or choice (or culture, as you mentioned in one of your replies). Some developers, just as some segment of the general population, are simply neurodivergent, and have no control over their ability to handle situations like that.

                                                          1. 2

                                                            Thank you for your reply, it clarifies things.

                                                            1. 1

                                                              No problem. I want to be clear I’m not trying to say I speak for all developers or all neurodivergent people, or that this is the only reason people might not like open plan offices.

                                                        1. 4

                                                          I wish that open offices constituted an OSHA violation. It feels like the office equivalent of asking construction workers to just do without scaffolding because it’s “cheaper” and “makes spontaneous collaboration on window installation easier.”

                                                          1. 4

                                                            Except that it’s a different scale. Construction workers have significant risk of death, especially if they’re working in violation of codes or without union representation.

                                                            I hate open offices, they hurt my productivity badly, but let’s keep things in perspective.

                                                            1. 3

                                                              Agreed that it’s a different scale and that this was a metaphor.

                                                              But would you disagree that tech workers need to be protected from their own harmful environments?

                                                              Open offices are disproportionately stressful and contribute to the spread of disease. In the age of COVID, would it be unreasonable to limit or ban them as a matter of public health? How much can we prioritize employer profits and pride over their employees’ mental and physical health?

                                                              1. 1

                                                                I hate open offices, they hurt my productivity badly, but let’s keep things in perspective.

                                                                I think it’s possible to keep things in perspective and also acknowledge that not just the most serious issues (resulting in a risk of death) should be of concern to OSHA. Office conditions that have the potential to result in long term health damage should, in my opinion, also be considered important.

                                                              2. 2

                                                                Someone elsewhere made the point that open offices should constitute ADA violations, too.

                                                              1. 7

                                                                The biggest issue I have with open offices is just sound. I’m probably a bit more sensitive to that than most, but blocking it out takes significant mental effort and when trying to do some hard work I really need to think about it’s almost impossible; I just “can’t hear myself think”. Earplugs have worked in the past but they’re not perfect, and I’ve also has “swimmer’s ear” from them, so meh.

                                                                Co-workers who insist on having music played are the worst.

                                                                Another issue is just the lack of privacy. This is something that’s far more subtle and noticed only when I started working remote. When I’m working from my home office I can do … whatever. Make “weird” sounds, move or sit however I want, maybe stand up and pace a bit for 30 seconds to think about something, adjust my environment however I want whenever I want, etc. etc. In an open-plan office you need to be much more mindful of all of this, and doing this for ≥8 hours is a subtle but real pressure.

                                                                I’m not sure if I can ever work in an open-plan office again. I’m not saying remote work doesn’t come with its own set of drawbacks (it certainly does) but overall I’m much happier as a person because it’s just so much stress. It’s not like the effects from that stress stop once you leave the office…

                                                                Private offices are the best solution, but I appreciate it’s not an easy thing to accomplish even if you want to; my former employer had private offices for every dev initially, but had to resort to an open plan solution for quite a few devs eventually just due to space restrictions (they hired a lot of devs in a short span of time, which may not have been the best idea anyway, but that’s another story).

                                                                1. 1

                                                                  Seconding. There are so many things wrong with open offices.

                                                                  One hypothesis: We’re not wired, instinctually, to focusing on work when our backs are exposed to others for extended lengths of time.

                                                                  Ever had to do that in a video games, like in Bioshock? Go heads-down on solving puzzles in real time while enemies continue to move around behind you? It’s nerve-wracking but the same in open offices. Instead, we’re just scared of our managers seeing us on Reddit instead of in an IDE because that could (or feels like it could) get us fired in real life.

                                                                  And noise-cancelling earphones are not enough. I have tinnitus so I just trade background noise for a constant whine.

                                                                  We’re also hyper-sensitive to conversations that could be relevant to us, like how we can pick our own names out of a cacophony. In the same way we can concentrate in a coffee shop because there’s probably no one talking about us, we can’t concentrate in an open office because any conversation within earshot could matter to our careers.

                                                                  tl;dr open offices might as well be purpose-built to prevent deep work.

                                                                1. 4

                                                                  Thanks for great write-up! I’ve been more and more curious about Mastodon and other federated solutions over the last several months to a year. Partly due to the attention-selling nature of mainstream platforms but also due to the censorship and low signal-to-noise of many discussions.

                                                                  Can you comment on any technical and process controls in the Mastodon community in this light?

                                                                  I did read something recently about exclusionary maneuvers including de-listing servers and modifying clients to not operate with certain servers. I don’t have primary data on those claims, but they certainly seem possible given my limited understanding of how it works. I.e. even in a FOSS context, I’m curious which solutions can prevent tyranny of the majority.


                                                                  1. 1

                                                                    Hey dkmn! Are you referring to the measures some servers take to protect themselves from bad actors on the Fediverse (like Gab servers) or other measures? It sounds like F-Droid may come up in this context.

                                                                  1. 8

                                                                    In order of importantance…

                                                                    • Executable documentation on how to use this api. Always up to date with worked examples. Conversely, if you find them hard to read and understand and use as such…. that’s telling you something important about your unit test design.

                                                                    • Compelling cases. They’re a list of use cases / required behaviours that compel the design and implementation. As a trivial example, testing !even(1) and even(2) are compelling. Anymore test cases are superfluous to compel the design.

                                                                    • Compelling API design. If an API is hard to test, it is hard to use and reuse. Fix your API design.

                                                                    • Excluding test cases. eg. There are an infinite supply if integer sequences http://oeis.org/ which do not have 1 and do have 2. Adding test case that prove our implementation excludes large swathes of likely wrong implementations. eg. !even(1999) even(4000)

                                                                    • Corner cases. !even(0), !even( UINT_MAX)

                                                                    • Property tests. for 100 random i {even(i) xor even(i+1)}

                                                                    • Defect localization. With a superbly designed api and unit test suite, tell me which test failed, and I will immediately tell you the file and line number of the bug.

                                                                    • Capturing and locking required behaviour to prevent regressions.

                                                                    1. 4

                                                                      This creates some cognitive dissonance with the V-model. Are unit tests part of testing or part of the documentation?

                                                                      I guess the logicians answer is fitting: Yes.

                                                                      1. 4

                                                                        I would add:

                                                                        • testing exceptional conditions, which is usually very hard to do with integration tests
                                                                        • speed of execution, to speed up the feedback loop. Integration tests may require a server, which needs to start up, they need an environment. Unit tests give you the opportunity to test your code more quickly.
                                                                        1. 2

                                                                          So much this. The human brain can stay so much more engaged and learn so much faster when the feedback loop is tight.

                                                                          1. 1

                                                                            Unfortunately lobste.rs no longer let’s me edit my post, otherwise I would add yours and /u/thirdtruck and /u/jonahx ’s points as well.

                                                                          2. 2

                                                                            Good list.

                                                                            I’d add, perhaps at the top: to force you to make all your dependencies explicit. This is ofc related to the bullet you called “Compelling API Design.”

                                                                            Another important point not mentioned in the article: To have a fast test harness. As you’re refactoring, or just developing, you can have near instant feedback when you’ve broken something with a good UT suite. This isn’t feasible with integration or e2e tests. So I’d also add “enables developer productivity.”