Tech side of a company
When it comes to company culture, I know nothing. In this paper however, I'm writing things that showed up in my mind after a meeting.
This is the first article about the IT industry, startups and company culture on this blog. As a reminder, all the articles in this blog reflect my views and opinions, and do not reflect those of my employer. On such a topic, I think it is useful to state it clearly.
Company culture is a vast subject and I do not qualify to talk or write about it. My only point in this paper is to express my thoughts right after a disturbing meeting I had in the past weeks : it was about recruitment, and trying to find solutions to recruit talented (web, backend) developers. It appears that I work for a company which is mainly known in the embedded software field and for its industrial traits, therefore, one of the main question was "how to make it clear that we develop web/backend software ?". I won't answer this here. Instead, I will focus on what, in my humble opinion, build a developer culture (or, more accurately, a developer culture where I will fit in).
Grey box
To be seen as a top software editor, a company must state it clearly. Take REA for instance. It is not a young company, not a startup, and it does not state clearly that it is a software company. In fact, I am not sure it is. But I know them, even if they are based in Australia whereas I live in France. Why, you may ask. It is just because they have a tech blog which pops up sometimes in my Twitter feed. Without even knowing what their business is about, I know the technologies they are interested in. And if I were a candidate, this could give me some insights of the things I could do every day there.
Then, I think that this expression space for the developers is a nice showcase for the company. Nothing guarantees that what they talk about is what they use daily but it is appealing ! That is why I would call this insights from the inside a grey box view of the company. A second benefit of such a blog is that a filtering is done : if a candidate doesn't like the technologies, he won't apply for a job.
Another good thing that is part of this Grey Box is open source policy. When a company like LinkedIn opensources Kafka, well it is pretty clear that they use is. It also give a lot of information on the standards/languages/frameworks used. That is how we know that Zalendo is using Java/Scala, for instance.
There is also conferences, meetups & user groups : they provide circles where to express that a company supports, uses a technology. By participating, proposing talks, a company can show that it is leading the usage.
All of those things relates to the visibility and culture of secret inside a company. If the company isn't transparent enough about what it does on the inside, then it won't be visible to those who might be interested by joining. This transparency can't be reached quickly and the topics of blogging, opensource, conferences & talks are only the visible part of an internal way of working. Aiming for the grey box is easy, the hard work is on the path leading to it.
About being a top software company
Then, what does it take to be this attractive, leading, top software company where developers work on complex and rewarding problems ?
Part of the answer lies in the question. The company has to offer leading challenges and to be a pioneer of some sort in the software area. Every single developer will have it's own definition of being a pioneer in development. Speaking for myself, I will see the adoption of Functional Programming as a pioneering act, yet FP is used for decades in some places ! This pioneering concept is relative to the place, the "average" position" in the geographic area, the companies around, the competitors, the previous employer,...
I write "average position", and by that I mean the position that the recruiters states when they want resumés in contracting companies. I include healines like : "Senior Java EE Developer with experience in Spring Hibernate". In my area, there is a lot of opened positions like this one. If you seek one without giving much details, given the market, nobody will apply (or will do, but without high expectations). And if by chance someone may apply, then the salary will make the difference on paper. Fortunately, I think that for a leading software company, there are many assets to show off and not just open "average positions". First, there is the overall project, main business area of the company. It can be ambitious, cool, pioneer in itself. But what really matters (for me, at least) once inside the company is the "how" teams in the company move toward the ambitious goal. Some companies are incredibly pioneer and sell to the outside world things that were previously unseen. But they do it in a non-pioneer way and it is regrettable. The question then might be rephrased to "how to be this company with a strong, identifiable culture ?" Marketing gurus, communication experts have the keys to this for sure. Aiming to an original company culture is complex, as I see it. But enough digression. Purely on a technical side, an appealing company would encourage diversity in technologies. How many times did I see the (in)famous "foundation technical framework" or as stated in French "le socle technique" which is the common ground for every single project in the company. I do hate this symptom to guts : it ties teams that do not share the same objectives (in terms of performance, scalability, maintainability,...) to a frozen dependency which become so critical that it never evolves. As I said, it is only a symptom. The real reason behind is that the cursor between code sharing and new code production is not correctly set and that the knowledge bandwidth in the company must be kept small, limited and closed to a small set of technologies, putting aside blindingly some of them. As often, using the right tool for the job is hard. Investigating new things is costly and uncertain. But it is (imho, still) one of the key properties of a top, leading software company. This ability to investigate, propose, explore new things is key. In the end, it also comes down to organization and structure of the company.
As expected, the topic of this post is not narrowing to a simple point and simple answer. If being a leading software company is a goal for a company, then it has to be part of its roots, or start to be part of them.
There is no (non-obvious) conclusion
How to change this culture then ? How to redistribute innovation accross teams ? I have absolutely no idea. Context matters. I guess a company will have to do some introspection, see by itself if teams really want change, and the path to drive into a new organisation. In the end, people and their will, will have it. Trying to enforce a culture may be done by pushing away those who do not adhere (either they leave volontarly by being bored, either they get fired). But all this is just my 2cents.And that's almost nothing...