Nine things I didn’t know nine years ago

May 19, 2016 by lsmit@wemanity.com in  Blog

 

Image from page 400 of “The Palm of Alpha Tau Omega” (1880)

It’s coming up on nine years since I first started slinging code in a professional setting. Professional here meaning with a salary, in an office, with other engineers, decent coffee and unreasonable deadlines.

Back then I was barely newly minted from school, and what I lacked in understanding I certainly carried in hubris. I remember being vaguely offended not to be on the list of Sweden’s top coders that year. No idea how they would’ve found me, but I still remember being annoyed by it.

What I’ve lost in hubris in the last nine years, I’ve gained in experience. I thought it’d be useful to punch down a few things that it would have been nice to know nine years ago — maybe it can help you, if you’re just about to take your first steps out of school.

In no particular order, here are nine things I wish I’d known when I started out:

  1. Experience counts for something. This is obvious, and maybe a bit condescending. But I remember the first time I saw a colleague in a live, heated situation pull up YourKit and hone in on the fact that we’d have two ServerInstanceFactories, not one, and that caused the entire app to go belly up. Or when I got literally smacked on the fingers for not using two-phased locking correctly. And a thousand other things. My first two years of working, what I mainly learned was that I basically didn’t know shit.
  2. People are messy. I’d love to know how many hours humanity as a total spends every day mediating between two or more angry 40-year old men. Most of the time, you’ll find reasonable people that don’t share your point of view on things, and you are not obviously right. There are tradeoffs. And sometimes people hold on to stupid ideas longer than they should, simply because they’re people. It’s a great irony that software development demands literal, logical, unambiguous reasoning while being complicated enough that you need to collaborate with ornate, arbitrary, ambiguous humans.
  3. You’re not logical, you’re biased. If there was one thing I was certain of was that I reasoned with logic and soundness and that I thought things because they were true. Things such as — we hire people only because of merit. Obviously. What I’ve learned is that any point can be argued from many angles, and who I am, where I was raised, what I studied and who my friends are all influence what I think is obviously true. I’ve also learned that I’ll likely never be Spock, and that the only reasonable defense is to invite different points of view, and accept that reasoning from different premises can lead to different conclusions, and still be logical and sound.
  4. You can use engineering for other stuff. As a flipside to above, I’ve also learned that the method of engineering that you learn in school and hone over the years is useful for a ton of other stuff than just programming. What engineering is to me is a way to define, decompose and reduce a problem space, and from that reason a solution under balanced constraints. Really, figuring out what you’re asking, and then answering that. And turns out that anything from sales, marketing, finance, design to analytics are super-susceptible to this. Don’t be afraid to dive in. It’s usually pretty simple to get stuck in.
  5. Users are not stupid. This one is a big one. When users complain about your product, it’s usually not because they’re stupid. Your dad, uncle or whatever that don’t really understand Facebook are not stupid. They just know other shit, and they haven’t learned this stuff yet. And that’s Facebook. They have literally hundreds of user researchers making Facebook simple. When your uncle doesn’t understand your app, it’s probably because it’s pretty unusable. Don’t blame users for that.
  6. Engineers have professional responsibilities. If you work with software in a company that makes money, chances are you have users. Even if you’re building Spotify, not a pacemaker, you still have a responsibility to your users. They’ve chosen your product, and if it sucks, they’re suffering and it’s your fault. This means that if you’re out chugging beer, the systems you maintain go down, and no one else can pick them up, you get a cab home and fix it. Obviously, don’t let a company take advantage of this responsibility. You should get reasonably compensated. But it’s still a responsibility. You can’t laugh off service disruption.
  7. Inverting a tree is useful, but not in the way you think it is. I’ve always been a strong believer in academic knowledge, and I loved taking the hardest courses. Particle filtering, non-linear signal processing, abstract algebra, advanced algorithms, etc. If it looked hard I wanted to know it. However, the point of Red-Black trees is not Red-Black trees. The point of graph traversal is not graph traversal. The point is, the tools you have shape how you solve problems. And the deeper the understanding of graphs you have, the easier it will be for you to see that a problem is a graph problem. Just like if you know enough economics, you can see business problems as market problems. And so on.
  8. Integrating early is always better. This is really mundane compared to all the other grand advice, but if you’re a bunch of people working on a piece of code, avoid branches and avoid submodules as much as possible. It’s really not better to work on your own branch until all is nice and then merge back. Merge early. Merge often. Otherwise you’ll spend a month merging. I promise. Like, I really, really promise … and actually, I guess there is grand life advice here as well. If you and someone you depend on disagree on something fundamental, don’t hold a grudge. Hash it out, as early as possible. Make sure you see eye to eye. The process and the product will be all the better for it.
  9. Simpler is literally always better. I saw someone write something like “Software engineers spend their first two years building complexity, and the rest of their careers managing it”. This is true. Really true. If you can avoid it, never write a dispatcher. Never write an orchestration framework. Don’t use Java if a bash script will do. Solve the problem you have now, not the problem you might have later. Nothing makes you feel as smart as a well architected, abstract framework for solving really complicated, general problems. Nothing makes you feel as stupid as not understanding how to debug it.

Anyway. This is my list. The nine things I wish I knew nine years ago. It strikes me now that current me would love to see the list Nine Things I Wish I’ll Remember In Nine Years. What stuff have I forgotten that would warp my perspective? I’d love to hear your take on either this, or what I missed on this list.

By: Marcus Frödin from Spotify

https://medium.com/@marcusf/nine-things-i-didn-t-know-nine-years-ago-fcbc757b268b#.9xksp8f8t

What Rugby Can Teach You about Trust in Agile Teams

May 26, 2016
Summary:

Unconditional support, trust, respect, generosity, and courage are the behavioural values required for agile—and also for rugby. On the surface, the software development methodology and the rough team sport may seem to have little in common. But Luis Novella writes that rugby can actually teach you a lot about agile.

When I recently joined an agile team, I suddenly realised I had actually been implementing agile for a few years, just without leveraging the branding. It wasn’t until I listened to Johanna Rothman speak that it dawned on me: Not all things called agile are truly agile, and there are a lot of practices that are agile but are not categorised as such.

Once I understood what agile really means, I realised that I’d seen many of its central tenets contained in another system that’s important to me. Unconditional support, trust, respect, generosity, and courage are the behavioural values required for agile—and also for rugby. On the surface, the software development methodology and the rough team sport may seem to have little in common, but in this article, I’ll show you that agile and the sport of rugby are alike where it really counts—and understanding how to be a team player can improve your career as well as your game.

Trust in Your Teammates

Rugby teaches you to find the most optimal, collectively intelligent strategy within a group of diverse and versatile individuals. When everyone has this mindset, you get sustainability, innovation, and the pleasure of working with a team fully engaged toward a common goal. Overall, rugby is a decision-making game that focuses on shared leadership, and many types of it. It assumes that individuals will be specialists for certain tasks, but they will have the contextual intelligence to make the best decisions for the team based on a deep sense of self-awareness and consciousness of the other team members and the progression toward the goal. Sound familiar?

Despite having played a few rugby games here and there when I was younger, I never imagined the endurance of the behavioral blueprint the sport could generate in a high-performance team. I would argue that the training provided by rugby in terms of behavior is useful regardless of what agile technique or method best fits the particular challenge.

One of the key elements is trust and unconditional support between team members. Despite 160 years of updates, improvements, and new laws, rugby teams at any level still function the same way: When the player with the ball makes a decision, every single teammate actively supports and engages with his position and the context, aiming to provide the best options for the ball carrier (who is always the boss in rugby, if you are into the boss concept). Every player trusts that the decision-maker will make the best choice based on his vantage point, opposition, position on the field, and available support. Once a decision is made, everyone on the team makes the maximum effort for the result of that decision to accomplish the best outcome for the team.

The decision-maker also trusts that everyone behind him will be attentive and available. He believes that if his execution fails, no one will recriminate him; instead, he will be supported. In rugby, you inevitably “fail fast” and make plenty of decisions that turn out to be negative, but you know your innovation was encouraged and respected by the team. Your team trusts that you did the very best you can. They also trust that you have trained and prepared yourself to have been in the best possible condition to play.

Trust releases many opportunities in life. You can innovate and create. You can surprise the opposition. You can discover abilities in your teammates that you did not know were present.

I have had the advantage of working with business leaders who have the courage required to embark in agile transformations the right way—to really and truly happen, change has to start at the top, and the first one to change has to be the inspiration leader. In my opinion, this trust and ability to innovate and err generates pleasure in what we do. It makes our work open and helps us measure and get feedback, because you also trust that the people around you want to make you better.

Just like rugby, agile is a learning system in constant change played by a collectively intelligent team, and the team’s every move is enabled by trust.

By: Luis Novella from the Spark Team

https://www.agileconnection.com/article/what-rugby-can-teach-you-about-trust-agile-teams?page=0%2C1

Gig Economy

May 27, 2016

You could drive yourself steadily insane compiling a list of all the trends that were supposed to fundamentally reshape business. Once upon a time we were all “flexi” workers, then “mobile learners”. Both terms seem antiquated now, the corporate equivalent of a Segway – perfectly sensible in principle but somehow faintly ridiculous in reality.

What makes the “gig economy” – the legion of individuals taking on piecemeal work, enabled by online talent platforms – feel different is that it’s being driven not by hip early adopters in co-working spaces (though there are plenty of them involved too) but by genuine need, both in the “real” economy and, crucially, in boardrooms.

If you were staffing a major new project from scratch today, it would seem an act of faint lunacy to bring in a raft of full-time employees with cumbersome overheads (and personal taxes) when you could go online and find experienced, verifiable individuals you could pay by the hour and dispose of when required. Similarly, if you were a coder, IT contractor or other technical specialist, why would you harness yourself to one organisation when you could enjoy both variety and a more lucrative income hopping from gig to gig (along with the attendant tax advantages of being self-employed)?

So many businesses are waking up to this recalibration that 450,000 people with full-time jobs now have second jobs, many of them via TaskRabbit, Elance or their multitude of competitors. PwC has tried to cut out the middleman by setting up its own talent “market” of registered suppliers its offices can bid on. There are individuals in greater London making a handsome living assembling flat pack furniture on a piecemeal basis for an hourly rate – an occupation that would have been almost logistically impossible just a couple of years ago.

You can understand the appeal of living by the gig, beyond the financial benefits. The conventional career has been an awkward fit for many people over the years, and few jobs are capable of maximising all our skills and intelligences. Besides, most work is boring, which is why those lucky enough ever to have had a job for life employed the conversational repertoire of the prison system (“putting in hard graft”, “serving your time”) to describe it.

Gigs, by contrast, are exciting and ever-changing, even though they ask some deep questions of the psychological contract (why would I exercise discretionary effort for a business that only employs me for a matter of days? Can I trust someone who could work for my biggest rival tomorrow?). But they aren’t an untrammelled good, either. For every actuarial scientist earning a small fortune for a short-term job, there’s a hotel chambermaid who is now being paid by the room rather than the day. The huge rise in self-employment in the UK has as much to do with businesses shifting such workers – we should include the small army of couriers and delivery drivers in this calculation – off their books as it does people discovering new freedoms. Palpably, none of them are enjoying the benefits of the gig economy, not least because they cannot practically control where and how they work. They are left, instead, to feed on scraps.

Uber, the erroneously attributed poster child of the gig economy, faces a legal challenge over whether its drivers are technically employees. It maintains they are self-employed. This is a vital point for the courts to consider – cycle couriers and plumbers are engaged in similar cases – but in Uber’s case we should also note that it controls the supply of drivers into the market, and their pricing. This is assuredly not the “freedom” gig economy enthusiasts speak of.

Governments will have to decide the legal and ethical boundaries of such behaviours, not least because if gigs take off, their tax revenues will rapidly vanish. Already, there is serious talk of the need for a third kind of classification, between “employee” and “self-employed” which recognises the shared responsibilities (both financial and relating to holidays, sick pay and other benefits) between giggers and those they work for.

Pioneers like Wingham Rowan, who runs the Beyond Jobs consultancy, are trying to imagine a market that will ensure the gig economy brings mutual benefits and conveniences without being open to abuse. Businesses who want to enjoy the flexibility such arrangements provide should not absent themselves from such discussions – but neither should they fear this will turn out to be just another fad.

By: Robert Jeffery, Editor of People Management magazine

http://www.cipd.co.uk/pm

 

Remote Work: Stories of People and Teams Doing Great Things

Apr 29, 2016

Get ready to pack up your laptop and hit the road!

Today, I specialise in facilitating remote work. And it was an experience ten years ago that turned a light bulb on for me — in a way I would have never expected.

I was living in California at the time and belonged to a social community interested in the future, technology, and staying healthy. Every Sunday, we’d meet up for a hike together. One member of the group was particularly interesting to me because he was working on a startup idea I’d never encountered before: he wanted to eradicate death.

To the outside world, it appeared that he was building an online project management tool. That was a very “normal” startup idea, even for ten years ago. But what most people didn’t know was that he was building the tool so that longevity scientists from all over the world could collaborate and solve the “problem” of aging.

He had found that the best people needed for this unusual collaboration were not living in the same place. So his vision was to build a tool that they could use to work together remotely.

It was a true “aha experience” for me. Once we remove the issue of being geographically dispersed, we can gather the best, most enthusiastic people together virtually to work on the most challenging problems imaginable.

I was hooked by the concept and started interviewing people and companies working remotely to see what they were doing. Down the rabbit hole I went!

In the past, we had to go to a specific geographic place in order to access the information we needed for our work. Now, that information is likely accessible from anywhere. And this gives us the opportunity to play with new ways of working and new business models.

I’m increasingly seeing a move from a model of work-life balance, which assumes that work and life shouldn’t overlap or blend, to work-life fusion, where the lines between work and life blur.

Work and Life: No Longer at Odds

Jeffry Hesse is an agile coach working with a distributed development team of approximately 40 people at a company called Sonatype. He loves his work. He also loves mountain climbing, photography, and spending time with his grandmother.

Because he can work from anywhere, Jeffry combines his passions by working while traveling. He started by trying an experiment with his remote team. He spent one month traveling in Argentina — and didn’t tell his colleagues he would be on the road.

He wanted to test how productive he could be while traveling, and if anyone on the team would notice.

Admittedly, it was hard. Finding a decent internet connection in Argentina was one of the most challenging aspects. He tried coworking spaces and staying with friends — and his technical know-how came in very handy while experimenting with various VOIP phones. But while it was hard work, and sometimes shaky, he managed to get his work done without the distributed team noticing that he was on the road.

While being a digital nomad may seem like a radically unconventional way of working compared to the traditional 9 to 5 job, it gives us a glimpse into what’s becoming possible…and increasingly common.

What Does It Mean Today to Be “Present”?

The tools that allow us to work in new ways are developing at breakneck speed. One of the most exciting examples of this is telepresence. Telepresence is a combination of technologies that give you presence somewhere other than your actual location. Your smartphone and standard video conferencing tools — even Facetime — can all be considered forms of telepresence.

My favorite form of telepresence? Robots.

The Revolve Robotics Kubi, for example, allows someone to call in (via video conferencing) to any tablet device. The difference is that you can move the tablet from side-to-side and up and down and control where you are looking from your own laptop.

For instance, if you are a remote participant at a meeting where everyone else is sitting together in a room, you can turn yourself to see who is talking. Other telepresence robots allow you to beam in to what is basically a tablet on wheels, and drive yourself around using the arrow keys of your keyboard. Schools use these for kids who can’t attend classes in person. Museums use these to give remote tours. Even doctors use them when specialists are scarce.

These interactive sensory experiences bring us closer to replicating what it’s like to be together in the same room. And the technology gets better and less expensive every year, opening new options all the time. Holograms are just around the corner!

How Businesses Are Changing

Because of these new technologies, more and more people are like Jeffry, seeking to balance their work with the freedom to pursue their passions. What it means to actually “be at work” is changing rapidly — businesses are evolving as well. Here are three examples:

A Virtual Network With Global Impact

Happy Melly is a social entrepreneurship network of individuals and small businesses dedicated to happiness at work. Supporters include coaches, creatives, authors, speakers, managers, and entrepreneurs. Members of Happy Melly help amplify and globalise great business ideas through virtual and in-person workshops, blogs, guides, books, tools, and videos.

I joined the network to get business advice from people who shared my same purpose and values. With the help of “colleagues” from all over the world, I learned how to structure and scale my company, Collaboration Superpowers, so that myWork Together Anywhere workshop could be offered online and in person around the globe. I’m also now the remote team manager for Happy Melly.

Serendipity Turned Them Into a Team

The team at StarterSquad first started working together (remotely) when a client hired them for a software development project. They didn’t know each other before the project started, but over time, the team clicked.

At one point, the client unexpectedly ran out of money — but the team members weren’t ready to part ways. They decided to find other clients so they could stay working together. They now operate as a self-organised team of entrepreneurs, specialising in building minimum viable products for software startups. In addition, they offer seed funding for startups whose ideas they believe in.

Forget About Facetime

Another company, Teamed.io, prides themselves on having no central office, no meetings, and no phone, Skype, or video calls. The company is made up of a large group of freelance software developers that have never met or spoken to each other. They work entirely through chat on task management systems.

Specific people are brought together for projects depending on the skillset that’s needed. Projects are broken down into very small tasks. Programmers are paid as they complete tasks, and they are not paid if the tasks are not completed. When the project is over, the team is dissolved and everyone moves on to other projects.

Extreme? Perhaps. But it does show ways of working that were never before possible.

Leveraging the Remote Advantage

There are numerous benefits to being able to work from anywhere. Some resonate most for solopreneurs and digital nomads as a source of empowerment to work and travel. Others please HR departments and hiring managers who need to build virtual teams or want to offer flexible benefits to their employees. A few are aiming to raise visibility around worker happiness and the environmental benefits of not commuting.

The ability to tap into information and collaborate with colleagues from anywhere has opened up new possibilities for work-life freedom. People can work on the things they are most passionate about, and businesses can hire people who love what they do versus people who are just doing their jobs.

If you haven’t thought about what’s possible with remote collaboration options in a while, you might be surprised by what’s happening — and what’s possible for you as well! I encourage you to do some more exploring. We’ve come a long way, and it’s only getting better from here.

By: Lisette Sutherland from Collaboration Superpowers