- 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.
- 60 hour work week is not a badge of honour. I talked about something similar here some time ago.
- Social Aspects of Success and Failure in Cultural Markets. Follow up about the Flappy Bird issue, and about the unpredictability of success.
- About retaining team members, which is not an aspect of companies that is not as discussed as recruiting.
- Some interesting Unix tricks and recipes, in a very simple txt format.
- Very graphic display on how conditional probability works.
- Levels of excellence. Interesting view on learning. It is fascinating how sometimes it truly seem like “a level”, a real qualitative change.
- You Are Not So Smart blog is amazing. Here is just a taste of it (The Benjamin Franklin effect), but all the articles are great. It includes the following amazing quote ”We are what we pretend to be, so we must be careful about what we pretend to be” by Kurt Vonnegut
- A brilliant car insurance turkish commercial, presenting a real-file Street Fighter bonus phase
- The Pixel Density Race and Its Technical Merits. We are probably approaching the limits of what make sense in terms of pixel density.
- And two nice graphs from Twitter:
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?
As a way of collecting interesting reads across the Internet, I plan to keep a relatively regular posts with some articles and posts that I’ve read, mostly related to development, software and tech world in general.
Here it goes the first edition.
- Your Progress As A Programmer Is All Up To You
- Theory and practice Short and simple, but nice
- Every line of code is always documented Nice ways to use version control to our advantage when navigating through unknown code
- When random isn’t random enough or why randomness is a more complicated problem than it looks
- Interesting talk about different databases and distributed queries
- A 1986 Bill Gates interview about coding. It is interesting how some of the topics are still challenges today, but have been more refined, like team collaboration. Love this quote “We’re no longer in the days where every program is super well crafted.”
- Why indie developers go insane, about (but not limited) to all the Flappy Bird issue
- Nice graphic representation of version control history. Using airplanes!
- gn command for Vim. This is a very interesting new addition to my Vim lexicon
- Very good points about non-English speakers developers. Not sure if I totally buy it, at the end tech world is so predominantly english, that being able to use it is a huge win, but still interesting read.
- Being a noob programer at 38
Hope you enjoy it!
There are a lot of discussion online about a huge number of different topics. That’s fantastic news, I’d love to had a learning tool that powerful when I was in school. To share some of my interests, and have other people to talk about “cool stuff” and learn from them. Online communities have speed up personal and technological growth intensely, allowing people from around the world to share knowledge and to feel close. But, on the other hand, these kind of communities get naturally and subtlety biased. While this is normal, and probably unavoidable, anyone participating should be aware that the so-called “real world”, or even the community as a whole, is not a perfect extrapolation of it.
It is quite spread the idea of the “1% rule” over the Internet. A1% of the community will be the most active, driving the discussion, generating the subjects that will be provoke discussion, etc. ~10% of the people will collaborate, comment, retweet, add their impressions… And the rest will just consume it and learn from it. This distribution seems to be present in any community big enough. It makes sense, there’s only a very limited number of people that can be creators (I’ll call them leaders), there is a bigger group of people willing to spend time and effort collaborating (I’ll call them participants), and then the rest that are interested, but not willing to spend a lot of time (I’ll call them consumers).
But, here is the interesting part. The 1% is not a perfect representation of the whole.In fact, it can (and normally will) be pretty biased. That’s something quite natural. After all, leaders are different from the majority of the community, or they won’t be leaders. But other than their tendency to stand up, to speak up, they can have a lot of significative biases.
For example, a clear example of that are so-called “hardcore gamers”. While the statistical profile of a “gamer” (someone that enjoys video games from time to time) is very very broad, the “hardcore gamer community” is the most vocal. The discussion about games is centred into big AAA games (GTAs, CoDs…), and, to a lesser degree, to big casual games (FarmVille, Candy Crush…) and interesting indie experiments (Gone Home). The main idea someone will get is that “gamers” are mainly young, male and like to play for hours, when that’s not a good statistical representation of the community. Keep in mind that 45% of players are female, and a third have over 35 years. There are discussions about “what is a game and what is not” (meaning, ”I’ve decided that you’re not playing games, OK?”), entire genres that are often ignored by everyone, and a general perception on what “real gaming” should be. A very good indication of that are the recent rants against microtransactions. Sure, they feel wrong for a lot of people that is used to get a whole game for a price, and play it all. But I’m afraid that a lot of people right now spend a small amount of time playing and they just don’t feel like committing to a game, and Free to Play model present advantages to that kind of player.
I am not arguing that biases are good or bad. Some will be good, because will bring focus to a chaotic community, some will be bad because will represent a minority that think they are the only “real” members of the community. Probably each of us will have a different opinion about which ones are positive or negative. What I am trying to say is that they are unavoidable.
Let me focus in development, as is the one community that I am most interested in. In the general online developers community, there are some biases that I think are quite strong, and probably not perceived from leaders and participants (after all, it mostly resembles them).
The community is young. This is clearer in the participants group than in the leaders one, after all, wisdom and insight are a good qualities for being a leader, and those comes mostly with age. With youth comes new views to change the world, but also naïveté and inexperience.
It is driven mostly by Americans (and foreigners living in the US, to a certain degree), not only by the strong position US has in tech, but also because the online lingua franca is currently English. In particular, it is very centred into Silicon Valley because is where the most discussion-driven companies of the world are based. Both well established companies and start-ups.
The most talked technologies are web tech (both front-end and back-end), with mobile apps in a second place. There is comparatively few discussion about desktop applications (which are the basis of everyday work), and even less on areas like embedded systems or commerce backends (including banks).
All those biases (there are more, of course, but just to limit to these three) work together in ways that some times are curious. Like assuming that most people are able to earn a Silicon-Valley-level salary, or that access to a computer (or even worse, Internet) in your teens is granted. Also, grammar errors are unforgivable mistakes a lot of times that should be pointed (and forget about things like transcript conference talks). Products are only relevant when they’re launched in the US, and everyone went to an american High School (which, as depicted on media and comments seems to be the Worst.Place.Ever.). That hardware come, out of the blue, from time to time, so we can run software faster. Of course, I’m exaggerating, but not by much.
I don’t know, from my point of view, given that I don’t share a lot of those biases (I can’t honestly consider myself “young” anymore, I am a Spaniard living in Ireland, and I spent half of my career working on non web technologies), sometimes I get baffled by online discussion, especially the ones that talk about the community (as opposed to the tech, which is a different issue). My main concern with all the system is that everyone (participants and consumers in particular) will assume that every single issue raised by leaders can be translated directly into the general community.
Just to show an example, there is a lot of discussion about what makes a great developer and the proper strategies to hire them. Some ideas that could work for hiring a young front-end developer in San Francisco may not work as well on other places, for different technologies. There is always discussion about being a founder in different countries, and, as you can imagine, the experiences are quite different. Different legal system, different business cultures, etc…
Being in contact with communities where you’re talking to what in many aspects are your peers is absolutely fantastic, You can relate to them in a lot of things. That’s why you’re part of the community. Heck, I learn a lot everyday. But we also need to take some distance some times, be a little critic on some subjects and try to adapt what we learn to our particularities. Because chances are you’re biased in a different way than the leaders and participants of the community.
1.I don’t like the microtransactions thing, but I just think that there is a business case for it.
2. Embedded software related to satellites and industrial control systems.
I read this post and liked it:
So what does all this have to do with recruiting? A lot actually. An candidate will begin to form an idea of who you are as an employer over time, your employer brand, through articles, tweets, consumer ads…etc….maybe even a friend who already works there.
When she walks into your office for the first time, all this could come crashing down or on the contrary, it could live up to the hype.
Take a minute and think about all the candidate touchpoints from inital reachout to 1st day of work? What are they? What happens in each? Is your brand being reflected in each one? Do you even have an employer brand?
I also think that, for the recruiting process, all those details are very important, and there is a huge opportunity in those terms for recruitment. Of course, it should be sincere. Just trying to look cool does not make you cool.
4 years ago, I did two interviews for positions on Dublin with a difference of a few days.
My first interview was done in a Hotel’s bar, as I was just arriving from my plane. It was for a position on a small startup company. The ones conducting the interviews were technical people (CTO and technical lead). I had a phone interview with them a couple of days before. It was funny to each a sandwich while I was hearing about the role and the company history. I also had to do a couple of programming exercises on paper. They were interesting, and I felt like I was collaborating, not like doing an exam. After the interview (which was not very long), they said that they’ll be making me an offer, and send me the details by email (the CEO, which was in charge of it, was sick that day). So –they ask me — do you want to see the office? So I went to see the office. Then it was — do you want to see the new office? An I saw the new office. Then we went to the pub, when we were joined by a couple of people working on the company. After that, they invite me for dinner, and then we went to another pub. All the “post-interview” process was “off the record” (or so they said, and if I had done something really inappropriate they could have reconsidered, but it was quite relaxed). We talked about a lot of stuff, mostly not related to the job (including things like Star Trek and other nerd subjects) and everyone was quite smart and amicable. It was an enjoyable evening, really.
The second interview was for a more established company. The company was locate in a business park. I had an interview initially with an HR person, then with the manager, a technical interview (which included some coding), and then again with the manager. The technical interview was interesting, but the rest was a quite standard interview process. Nothing fancy or particularly bad, but a lot of the kind of questions that you feel are just not very relevant. At the end, the manager asked me if I’ll be interested in coming back to do another interview. Please note that I was coming from Spain, which mean two 2.5 hours flight, plus getting to the airport, etc, etc.
I guess I don’t really have to tell that I accepted the offer from the first company (Jolt Online) and I was quite happy while I was there (unfortunately, I closed two years ago. You know, startups). Probably that’s quite extreme example of this kind of “Wow factor”, and I think that bringing someone to the pub is not necessary for a job interview (Nice touch, though). But most of the interview processes are, well, quite dull.
For example, I had a lot of problems with phone interview times and reschedules. With scheduling interviews at reasonable times (meaning reasonable times for someone that is already working somewhere else). With interviews that are supposed to take 1 hour and take way more. With questions that requires “aha moments” and doesn’t look remotely similar to what real work looks like. Or with processes that are just one interview after another, with no clear view on when will it end.
They have never been deal breakers for me, to be honest. Most of the time you understand that it’s the way it is. But I think that anyone that tries to be careful about all those details and sincerely works on delighting the interviewees can get a huge advantage.
Again, this needs to be sincere. This needs to reflect who you truly are, or it won’t work. There are already to many places pretending to be cool, looking for ninja rockstar developers. But there are also a lot of nice places that are not showing their best (and real) face.