- Good tech lead, bad tech lead.
- Can we please please stop telling people that coding is easy?
- Confessions of an Intermediate Programmer. The perception and psychology of competence.
- The Science of Making your Story Memorable Some interesting advice about presentations. The presentation itself used as example is interesting as well.
- Thirty percent feedback to iterate faster.
- The classic “your problem with Vim is that you don’t grok vi” response in Stack Overflow.
- A very nice list of Python articles. Best Python 2013
- Companies and startups are different. Not only in size, but qualitatively. An startup is based on the search for a business model, while a company is based on the execution of a business model.
- A typewriter to print water paints. Amazing.
- How much is time wrong around the world, actually meaning how places in the world are synchronised to “12 AM when sun is higher”.
- A reflection about how Internet is so full of strong emotions and is so judgmental.
- When It’s your job to give bad news, because we don’t live in an ideal world.
- Writing is hard.
- This is a wonderful comment (in Hacker News)
- A great initiative to clean up Vim code. Neovim. It includes a fundraiser to help in the initial phase.
I think that one of the most overlooked components on any sane company culture is Respect. That’s probably true also for any relationship, also outside work environment, but I think is usually forgotten when nice places to work are described.
When I look back about the things that bothered me the most, most of them are related to disrespect, even in relatively minor form. It can be personal disrespect or not respecting the work itself or even the customers. Probably because is something engraved, it’s easy to take for granted when it exists, and to identify more problems deviating from the lack of it when is not present. We typically talk about how great cultures are innovative, open, communicative, fun, collaborative, etc. but one of the prerequisites that makes these values worthwhile is Respect, both to your coworkers and to the work itself.
Without Respect, ideas are accepted mostly depending on who present them, and need to be imposed. Even when there are explicit request for ideas, they take the shape of “suggestion boxes” where no one really looks into them. So, in practice, being proactive is discouraged unless you’re in a power position.
When there is Respect, ideas can be freely exchanged without fear of not being talking seriously. They are also welcomed from any source, not only through the “chosen channels”. There can be hard scrutiny, but it will be fair, and rejections will be reasonably based in facts.
Without Respect, a “funny, relaxed atmosphere” can be easily transformed into harassment and abuse. Jokes will actually hurt. Closed groups, extremely aggressive with everyone external with them, will be formed. That can include groups outside the company, like mocking customers or partners. Some groups will be appointed as intrinsically “better” (engineers, executives…) as others (secretaries, workers…) and generate asymmetrical relationships, with one part dominating the other.
When there is Respect, jokes are played just for the laugh, and are taken up to the correct limit for everyone, as there are people with thicker skin than others. If those limits happen to be crossed, the problem will be arisen and people will sincerely apologise and correct their behaviours in the future, without external influence. Occasionally the customers or partners can be make fun of, but the quality of the delivered software will be took extremely seriously (the highest form of Respect for customers) and their requests or suggestions will be taken into account when making new features.
Without Respect within the company and the different groups, no particular measures will be enforced to protect anyone or anything. Therefore, it will be easy for someone to take advantage of that, ranging from lower the quality of the work to be a moron and degrade the working environment. Code will devolve into an unreadable mess, and technical debt will grow uncontrollably. Hiring standards will get lower, and not-that-great people will be part of the team (technically, but also in a more personal sense). Also, the expectations will be to work overtime regularly, without any contingency plans or treating it as a bad sign.
When there is Respect, the organisation truly cares about the people, and not just as an empty statement. This includes understanding when overtime is unavoidable evil and work as a team to avoid it as much as possible. And when it happens, everyone do as much as they can to make it as short and enjoyable as possible. There will be understanding when someone wants to leave because they have a genuine different interest, leaving the door open if things don’t turn out for the good. Learning and personal growth will be encouraged with actions, not only with words.
Trust, a extremely important value, can only arise if there is Respect. Without Respect, fear and uncertainty will replace real trust. Being honest needs trust and confidence in the other part, as real honesty can be, and sometimes should be, uncomfortable to hear. Formality and defensiveness take control over honest feedback and team work when respect is not present. Any long-term relationship also needs Respect to stay healthy.
Being imperfect human beings, we cannot probably achieve perfect respectful relationships at all times. But we should try to be as respectful as possible, identifying our mistakes and the ones of the organisation, and move up towards the Respect ladder. That makes a much healthier (and happier) environment for all. We should recognise the Real Respect, as the word is often abused.
It is great to aim for having a great organisation or startup, with a thrilling culture. But, in order to get to establish a funny, exciting, learning, diverse and passionate place to work, we should lay strong foundations with Respect. Identify it, and not tolerate the lack of it.
Well, at least is not ideal from my point of view…
At the moment there seems to be a lot of hype about startups. And why not? They are the places where the cool stuff happen. Filled with purpose, excitement, high stakes, fantastic teams, growth opportunities and the rare chance of maybe becoming a multibillionaire at a young age. I’ve worked in big and small companies (including startups), and I definitively prefer to work on smaller ones. You’re impact is bigger, the team works closer, way less corporate BS, etc…
But, while I think that working on a startup is exciting, and a great career move, I don’t think is a great first job. When starting a career on tech, a better place to start is an established company, at least for one or two years. Why? Simple because if you want to be a rebel, you have to know what to rebel against.
Established companies have a lot of bureaucracy, process, rules and middle managers. They are boring, that’s for sure. But there is one thing that they have than an startup has not. A proved method of doing stuff. A running operation. It can be dysfunctional, inefficient, stupid o just crazy, but they are being able to earn money with it. While the stupid processes seems to be there with the sole purpose of annoying workers, they are there for a reason. Maybe not the best one, but it is great learning experience to navigate through them.
Also, within all that craziness there are some steps that make sense. Something that has been refined after years of experience and a lot of work and it’s there for a reason. On every department there is some one that is actually brilliant and knows everything around. These people are excellent mentors. Not only on tech, but also on “the business world” and career-wise. We tend to think when we start that everything older than 5 years is obsolete. Talking to someone that is 25 or 30 years older gives a lot of perspective. They had gone through a lot, and their experiences are very valuable.
And, obviously, because that will make feel some of the pain on what a big company is. When I was a freshman out of college, I’ll just accept things that will drive me crazy today. Once you think about that you can effectively remove the pain points knowing why, and with actual experience on them. It’s the equivalent of measuring some software to discover the bottlenecks and then concentrate on them, instead of just making wild assumptions. Without real work on the field, it’s all premature optimisation.
Moving in the opposite direction, from small company to a big one can be absolutely horrendous. It is extremely difficult to perceive an increase in bureaucracy and processes as an improvement. Even in the few cases when it is. Having facing it in advance helps accepting it.
To be able to recognise how big companies operate and what are the real reasons why you don’t want to work there is a great experience when working in a startup. Of course, a small company have its challenges. But if your aim is to improve what big companies are doing (and that should be the goal of anyone working on a startup), how do you expect to do it without knowing it beforehand?
I have been watching recently some documentaries about software development, including the classic Triumph of the nerds (available in YouTube in three episodes, 1, 2 and 3) and Indie Game: The Movie. They are both very good and I’d recommend them not only to developers, but to people interested in technology and/or entrepreneurship in general.
But they are very good exponents into something very present on the software scene, which is presenting crunch mode, working insane hours, in some sort of glamourised way. It is part of the usual storytelling and, and probably, part of the hard work -> ??? -> profit logic.
Let me told you something. When I was starting my career, on my first long term job, we once had a very strong deadline. This made us work in crunch mode for a long time (around 2 months). That meant working around 12 hours or more per day, 6-7 days a week. The very last day (a Sunday), I started working at 9:00 AM and went home the Monday at 6:00 PM, only stopping for eating something quick and going to the toilet. The rest of the team did similarly.