I’ve been trying to hire enthusiastic Clojure programmers and most of the responses i hear are:
“that sounds great, I’d love to learn more, it’s a remote position right?”
Which since the group I work with (and really really enjoy) is focused around an office with a kitchen (we’re a food search engine) it’s been hard to get past that initial conversation much of the time.
- is this selection bias becuase I’m looking in plces that focus on online communities that attract distributed teams?
- is this the future of programming and I need to accept that?
So do you work (in Clojure) in a remote, distributed, or centralised team?
In (prev job) we grew a fairly large office but we didn’t do it by hiring Clojure programmers, we hired and trained other folks for the most part, and that worked fairly well.
I currently work remotely because I’m in a town where only one shop writes Clojure so distributed makes more sense for me.
I work in a highly distributed team - we have eight programmers and none of them live in the same place. About half of those programmers write Clojure regularly.
My previous Clojure job was mostly remote employees as well.
Centralised. I have the possibility to work remotely a few days a week if I ask for it, but I really prefer having workmates physically around me whether I have a question (or they do) or to take a break, have lunch together and talk.
Semi-centralised here: We have people meeting physically in the office for about half the weekdays, the rest of the time is remote.
I also second the advice of hiring and training non clojure programmers that are willing to learn. We did just that in the company I work for.
You do have invest some time pair programming with the new recruit at first, so that you can teach them the tooling right. But once a competent programmer has internalized the basics of paredit and how to use the REPL directly from an editor’s buffer, you would be amazed how fast he or she can ramp up on clojure!
Centralized (kinda). I work at a company (Nubank) that has two offices.
I started working on the Sao Paulo (Brazil) office and we recently opened an office in Berlin and moved to Germany.
This is my first full time job, and it helped me a lot having senior people by my side. I don’t think that I could learn as much working remotely.
But in the future (in some years) I’d like to work remotely because I don’t want live in a big city.
Regarding your first question: for my company what worked was hiring good engineers that where open to learn clojure. It was definitely not easy to hire as many programmers as we have (around 130), but it’s manageable.
Centralized (12 engineers). Though we have a couple of engineers working remotely. I prefer to work from the office, closer to the team, but we also remoting when needed. Being all together at a single place especially valuable, at least for me, when a product is in active development or pre-release phase.
I’ll be politically incorrect, trying to respectfully answer this question with my utmost honesty. I give permission for mods to delete it if people find it disrespectful, though I intend the opposite.
I don’t want to be in some boring artificial environment they call an “office.” Why does someone want to stick me in such a place? My home is more comfortable than even fancy offices.
Maybe it’d work if someone told me: “I don’t care if you put a bed in here. Here’s a shower for your best thoughts, and a place to put your toothbrush. You’ll be near chill people who each have their special processes. Now, no need to show you’re ‘passionate’; we don’t need you to be psychotic, you obviously have many emotions to experience. Just… do what you need to get shit done, y’know? We’ve seen your skill, knowledge and heart.”
But I’ve never heard that.
My team has been using Clojure for about 8 years now, and most people we hire never touched Clojure or FP in general. We found that it takes about a couple of weeks to ramp up new developers up to start doing useful things. We do a lot of pairing at the start, and we conduct code reviews where we provide suggestions.
So, I wouldn’t worry too much about prior Clojure experience if you already have people working with Clojure on your team currently. If the candidate is enthusiastic and understands programming fundamentals, they will pick up Clojure quickly with a bit of guidance from the team.
Same for us, the lead dev of the company I work for had never written any Clojure/LISP/Functional language before. He was guided for a few weeks by an experienced dev then left mostly alone. Even to date, I think I know Clojure more than him but it doesn’t matter, he can write code, fix bugs, ship features and more importantly understands the business very well (way more than me).
So same conclusion as Yogthos. Past Clojure experience isn’t necessary if you have experience inside and have a good onbaord process.
Related to remote, I think it works well only for experienced people, whether it’s technologically or professionnally (business, politics, life-at-the-office etc.).
We build an awesome kitchen so people could cook together at lunch, never seen that anywhere else. nobody has asked about sleeping in the office.
It’s the future of programming (and many other forms of work) and everyone needs to accept that. It’s hard enough to find the right people for a team without making it harder by adding a filter based on where they happen to live (or are willing to move). In addition, anyone who wants a balanced life will have an easier time if they don’t have to sacrifice a chunk of each day to a commute and then work within someone else’s idea of how a day should be structured.
(Source: I’ve worked from partially to completely remotely for ~20 years, during which time I’ve invented all sorts of interesting technology and made quite a bit of money building and selling companies.)
Unfortunately I don’t work remotely, but even in Italy (where I live and work) which is a very conservative place we’re starting to talk about working remotely at least for a few days per week, so I guess it really is the present more than the future.
I perfectly understand that it might be annoying to make an investment such as yours for a nice office and looking at it half empty. But think about it: if you hire remote workers the office will be half empty for some time, but you can use it to gather people once or twice a year, while if you stick with your current policy and you don’t find anyone available it will remain half empty anyway, so…
I guess we like
pmap too much
A “remote” team can often be in the office, when we judge valid reasons to do so. That’s what my team does. We’re not so distanced that this is a problem. Indeed, some of us visit every week. It can also mean I work with you at a coffeeshop.
Regarding naps… we take naps whenever useful. But most of us would never nap in an office. (I have, but always endured snarky comments and complaints behind my back. I once tested it: at a new workplace, I asked if they supported lying down. An ex-coworker told me of snarky jokes after I left…) Fortunately, with “hammock time” the Clojure community culturally supports horizontal-with-eyes-closed. Also, the energy boost of naps is probably healthier than energy drinks and relaxing on social media.
I know a large company that uses Clojure. Even their managers tell me “We know working remote is the future” but culturally can’t accomodate it. Ironically, I assist them in Clojure job searches, but personally would find working there painful.
I hope remote is the future. In the sphere of consumption, tech companies destroy in-person-only and replace them with remote-first-with-in-person-too (Apple Store, Amazon Go). Last week, an old retailer’s security stopped me because they spied me spending “too long” researching keyboards. They suddenly turned nice when they realized I buy more tech than average. It’s like the snarky comments again, when I’m just trying to act thoughtfully.
One counter-argument is remote is bad for developing junior programmers. But I’m happy to mentor nice people in person. And let’s look at the other side: if I were a stumbling junior (in the office) or poor (in the store), I’d be punished for deviating slightly and reasonably from the norm. Now that I’m a privileged experienced dev, I get politeness to my face and negativity behind my back.
In the sphere of production, we’re lagging, but getting there.
Also, it’s worth decomplecting the workplace. Going past cultural biases, what are advantages/disadvantages of different spaces? Can they be combined a la carte as needed? So when I need a change of scenery, I go to the nearby coworking coffeeshop? A restaurant with no internet (aside from my phone’s) when I need focus?
When we started our own company we knew that we would be remote first, there was simply no better way to structure things. I feel that remote done right is such a strong advantage, if you don’t do it your competitors will. There are challenges, but they can be overcome. I’ve worked remote for the past six years and I can’t imagine going back. Here are a couple of tips that I think can make it work:
- Use chat as your primary form of communication, favor open channels over private conversations.
- Encourage the use of video chat, it really helps to get the nuance behind what people are saying.
- Everyone needs a good network connection.
- Everyone needs a good headset with a boom mic.
- Encourage pairing. There are good techniques available. Here’s one.
- Remote doesn’t mean never being together in person. Get the team together 3 - 4 times a year.
There’s more to it but this is a good start. Yes, we think that remote is the future, and the future is now. The breakthrough for me was working on a fully remote team at Sonian, where I worked closer and felt more connected to my teammates than at any other job. It can work really well if you do it right.