The programmer hiring process at BlockTrades

in #software3 years ago

Apparently there have been a couple of people asking about how we go about hiring programmers for BlockTrades work and I was asked to write a short post to describe the process.

No blockchain experience required

Perhaps the first thing to say, and possibly the most surprising, is that we don’t generally hire programmers with previous blockchain experience. Why? There’s several practical reasons: 1) there’s a relatively short supply of such programmers and 2) they are usually ideologically-driven and have their own plans for what kind of code they want to write. Therefore, our hiring process focuses on finding highly skilled and motivated programmers who are capable of learning “on-the-job”.

What programming languages skills do we look for?

When we’re hiring an entry-level programmer (i.e. a recent graduate) we don’t really require any particular programming language background, but when we’re hiring senior programmers we often look for a background in languages and programming frameworks that match up with projects we’re currently working on. Currently, this means we’re typically looking for programmers with experience in languages and frameworks such as C++, Python, SQL, and Javascript/React-js.

100% focus required

When it comes to programming, I think it’s important to have programmers that are only working on code, not juggling many other tasks. When you’re coding, you have to keep track of many pieces of information, and if you’re distracted by other things, its easy to forget something of importance. It’s also difficult to resume a complex programming task after being interrupted for a week or so, because you have to relearn things that have been forgotten in the meantime.

For these reasons, we almost never hire part-time contract programmers, unless it is for relatively simple tasks. Occasionally we contract out with a part-time programmer with specialized experience for a particular task, but even this is relatively rare, unless it seems likely that the code in question won’t have further maintenance needs in the future.

Team location

This final requirement is the one that places the most limitations on who we hire as programmers. Generally speaking, we only hire programmers who can work at or near one of our offices (our offices are located in Virginia/USA and Poland). This is because I favor a team approach to most software development projects, and remote work tends to result in less communication between team members.

However, after someone has worked for a year or so in one of our offices, they’ve usually absorbed enough of our programming practices that it’s not really difficult for them to work remotely and still be productive team members. So this is mainly a requirement when someone first starts to work with us and we do have many programmers who work at least somewhat remotely now (especially with Covid-19, this became a necessity, of course).

The interview process

For the interview process itself, I’m usually looking for several things: 1) strong programming ability, 2) a positive attitude towards working, and 3) ability to work well with others. Perhaps not surprisingly, the most difficult hurdle in the interview is usually programming ability (and creating a properly calibrated programming test isn’t easy for the interviewer, either). When hiring recent college graduates, I find I usually need to interview 10 or more computer science candidates in order to hire one that met our needs.

I’ve found that it’s also easy to let a bias towards pleasant personalities affect one’s recollection of an interview process, so the technical portion of a programmer interview is done on paper or in front of a computer, so there’s a record of the work that was done by the interviewee that I can review later when I’m interviewing many people at once and have to make decisions about which ones to hire.

Post-hire process

When hiring new programmers, I’ve observed that companies often don’t do a good job with the “post-hire” process. When you’re adding a new programmer to your team, it’s very important to properly introduce them to the project. This includes training on expectations about how they should be contributing to the project and assignment of suitable tasks to let them “get their feet wet” without “throwing them in the deep end”.

In large companies, the tendency is to leave new hires languishing without any real project to work on (this especially goes for the interns they hire). Or on the other extreme, it’s not uncommon for small companies to throw some overly difficult task at a new programmer, because the manager making the assignment didn’t properly gauge the difficulty of the task for someone who hasn’t previously worked on the project.

So I think it’s very important to make sure someone is monitoring the work of a new hire, to be sure they have something challenging but not overwhelming to work on, and that can make adjustments to the task assignment and provide assistance when necessary.

Final thoughts

There’s a lot that goes into hiring a programmer and integrating them into an existing team. A good hiring process is one of the keys to success for a software development company and this post really only scratches the surface of the challenges involved. Nonetheless, I hope it will be of some use to others looking to build a software team.

Sort:  

I didn't know you guys were partly based out of Poland. Bardzo Dobrze 😀

Zapraszamy do Dąbrowy Górniczej :o)

Dziejkuje bardzo, chcialbym przyjechac jeden dzien i troche wieciej popraktykowac moj polksi ;) Tez jak bys był keidys w/ Ontariuu w Kanadzie to daj znak :)

The majority of our programmers nowadays work out of our Polish office. I'm in our US office, so I mostly communicate with them via rocketchat and online video conferences. We communicate in English as my Polish is limited to a few words like "tak", "nie", and "czesc".

That's awesome to hear, I am Polish myself but have been living in Canada for most of my life. And the language is certainly not an 'easy' one to learn ;) My reading/writing and spoken Polish aren't the best. But for the most part poles are kindhearted, hardworking and intelligent people so good choice for locations ;) BTW. It's hard to keep up with all the developments going on in the space, but if you haven't already, I hope that that whole steem funds freeze thing gets sorted out if it hasn't already. What a "joke." Regardless, the community is fully grateful for the 'intervention' that lead to our new blockchain. Thanks so much. And would love to visit the Polish office one day! 🤓

Good coders/programmers are hard to find.
I don't see this changing anytime soon.

Totally agree that a good coder just needs to code and nothing else.

Thank you for sharing.

Thanks for sporting and sharing

they are usually ideologically-driven and have their own plans for what kind of code they want to write.

Is this why projects get pulled in every direction at once, until the limbs get ripped off, then all that's left is a stump?

100% focus required

When it comes to programming, I think it’s important to have programmers that are only working on code, not juggling many other tasks. When you’re coding, you have to keep track of many pieces of information, and if you’re distracted by other things, its easy to forget something of importance. It’s also difficult to resume a complex programming task after being interrupted for a week or so, because you have to relearn things that have been forgotten in the meantime.

This 1,000%. As someone who can code, but it is not what defines me, I find my lack of focus on development to be a huge problem. Things take longer, more frustrating, and more difficult.

I actually wonder a bit about your attitude towards remote work. Especially in IT jobs it is common practice to enable people working from basically everywhere.

I understand that when starting to work together it has its advantages to be able to stick the heads together but since remote meetings are a thing the necessity is not really given.
At least that's my opinion.

When a small team is working together in the same space, it's very useful to be able to easily ask a simple question or initiate a design conversation whenever the need arises without needing to arrange a formal meeting. The extra overhead associated with an arranged meeting tends to discourage such interactions.

I operate in both modes all the time (remote and non-remote) and there's a huge difference in the amount of information that gets exchanged. It's so different that I try to make sure we always have a local tech lead for each project we are working on.

I’ve observed that companies often don’t do a good job with the “post-hire” process.

Typically it happens with service based companies most when they hire people and expect them to be productive very quickly to contribute. However, in product based companies its a bit different. We take people from college and put them for training for almost 1 year - with goals to enable them on our platform. Only after that they are given opportunity to do main stream coding.

Most service-based companies are financially motivated to get new employees working quickly, because that work directly contributes to the company's revenue (they represent billable hours to the company). I've seen this attitude in many India-based software contractors, where they will throw very inexperienced programmers at a project with a single experienced tech lead overseeing their work. This often doesn't end well for their customers.

Product-based companies generally know the dangers associated with turning loose an inexperienced coder into an unfamiliar code base. So they are much more careful about throwing a difficult project at a new programmer, unless it's a standalone project. And in fact, this often leads to employee dissatisfaction, if the employee is a talented programmer, because they find their skills are being wasted out of too much caution by their employer.

I prefer directed training on actual projects rather than sending people to classes, etc. This also depends on the experience and skills of the new hire are, of course. So I just don't hire anyone who I don't think can make a near-immediate contribution of some kind to our projects. This is a small company mentality that I still have from when I started my first software business, and we had to watch how every dollar was spent.

It's really nice and important to see how stuff works behind the scenes with our witnesses and developers, and just to know more about you guys. Thanks :-)

Also is Hive almost back to normal? It's been really buggy recently, especially other front-ends like peakd but sometimes hive.blog too

We've just about finished all the changes to hivemind and associated frontends like hive.blog and peakd now.

Are you guys currently hiring?

Yes, but we are actively seeking new programmers and system admins in Poland.

ahhhh, Im in Virginia whenever yall lookin for someone on this side of the ocean

Excellent work dear friend. Successes. Hugs faith Omar Gustavo Rojas Ortiz, from Cumaná Sucre state-Venezuela.

.

Hugs from Cumaná city of Venezuels facing the Caribbean Sea. I wish you success in your search for the required Programmer. Successful friend in Hive. Thank you for the evaluations you have made in my publications. Congratulations.

I didn't get the HIVE airdrop. I never expected I could be included in the Exclusion list and I was waited the launching, but I realized my HIVE wallet is vacant... I think something is wrong.

Hi, I'm sorry about that, but I asked someone involved in the exclusion analysis to check into this, and it looks like your account was proxied to zzhang at the time of the hardfork, and that account was voting for Justin Sun's sock puppet witnesses that were used to takeover the Steem chain. This is why your account was excluded from the Hive airdrop.

I suspect that you probably weren't the only person to proxy their vote to zzhang without realizing exactly what they were doing, and I know that zzhang offered some sort of reward for doing so.

I often think that the vote proxy feature is a bad one, because it lets people pass their power on to others, without necessarily fully understanding the significance of doing so.

On the other hand, it seems you are still proxied to zzhang on the Steem chain, so I suppose you may still be ok with their voting choices. If so, I can't be entirely sympathetic, since they voted for taking Steem funds from many Steem accounts, including my own.

Thank you for your considerate answers. It helps a lot for me to understand what was going on in steem and hive. As you said, many Korean users including me just vote proxy to zzan.witness without understanding the situations in order to get votes from zzan. I came to steemit as a doctor to write articles about medical knowledge and get rewards from them, and gradually went over to Appics community. I invested to steem and appics at a great cost, so that I just wanted to get more votes but I didn't know that zzhang did bad things to you and many steem accounts. I don't know much about history of high witness of steem and hive, but I now understand there are troubled relations between them and I feel sorry to you if my unintended behaviors affects you bad. But like I said, I am just a author and investor without any political views. I just want to get what I invested, that's all. If I got Hive in a normal way like other steem users, I had continuously posted my articles here, but I couldn't because I didn't get my shares. Also, I tagged 'palnet' whenever I posted articles, but I realized it is here in hive as well. I know it's too late, but I still have regrets and leave a reply. Thanks.

Thank you for responding as well: I appreciate your understanding.

I suppose it's all understandable to some extent: you are probably not the only person who mostly understood Steem as a social media platform, and didn't understand the importance of the governance aspect of a blockchain-based social media network.

With the creation of Hive, there is more emphasis on the importance of the governance model, and we're still working on improvements to the governance system for the future. The proxy system as it stands today is still a problem, I think, because it does allow someone to lend their weight without necessarily knowing what is being done with it. Hopefully our improvements will remove this problem eventually.

Also, I was being waited for SMT project to be done, but it was stopped due to Justin Sun. I think that had blocked the possibility of huge development of Steem and I am so angry with it. There were disagreements between witnesses but I think at least Hive team should have given me chances to choose using Steemit or Hive. After Hive launching, I tried to write several articles in Hive, but it was not easy because I didn't have my Hive power which were originally my valid rights. I feel victimized because I was so against Justin Sun at that time and my proxy was not matter of interest.

There's one basic disagreement we have here: "my Hive power which were originally my valid rights". Hive didn't exist previously, no one was "owed" it. Hive was primarily created for everyone who was actively opposed to Justin Sun's takeover of Steem. And it took effort on the part of many volunteers to create a new cryptocurrency and setup the infrastructure to support it.

During this process, one thing that became very clear is that very few of those volunteers supported airdropping the new currency on voters who actively supported Justin Sun's sockpuppet witnesses. The general sentiment was very straightforward: why reward those people who had actively helped Sun centralize the Steem chain, essentially stealing their home, and forcing all the work associated with creating a replacement chain?

Mayvbe it is not clear what I mean by "sockpuppet" witnesses: I mean these weren't even real people. They were just a bunch of accounts created by Justin Sun's tech guy and voted in by the Steemit tokens. Based on the fact that you said there were "disagreements between witnesses" about Justin Sun, I guess it's possible you didn't understand this. But there wasn't a much of a disagreement between real Steem witnesses, there was a disagreement among the existing witnesses (and the stakeholders who voted for those witnesses) and Justin Sun.

But even if you didn't know this, I'm quite sure that the zzhang proxy did in fact know this. Their representatives were at the meetings between the witnesses and large stakeholders and Justin Sun. And they publicly posted their own stance regarding the disagreement between the other stakeholders and Sun. They were not secretive at all when it came to their opinions, and anyone voting for them should have become aware of it.

Now I think many of the other stakeholders felt that zzhang was essentially holding the chain hostage, by requiring that either Justin Sun or the opposing stakeholders would give in to their own previous demands (some of their posts had been downvoted in the past, for example, so I think they were asking for removal of the downvote function at the time). I think this negotiation tactic annoyed most of the other stakeholders: it's not a nice tactic to extort someone for personal favors when the blockchain's decentralization was facing an existential threat.

Now I don't mean to say that zzhang was the only supporter of Justin Sun. There were a few other stakeholders that felt that Justin Sun would bring marketing benefits that would make it acceptable for control of Steem to be centralized. But most Hive enthusiasts viewed this as compromising moral principles in favor of profit, because decentralization was a core tenet of blockchain technology.

And there were also some people that were convinced that all the existing Steem witnesses were some sort of cabal, and that Justin Sun would be no worse, so they decided to vote for his sockpuppet witnesses. Everyone's free to have their opinion on such matters, of course. But I guess it's not surprising that all the people who worked so hard on a volunteer basis to get Hive going (and this was no small amount of work and was done as a labor of love) were not excited about rewarding people with that attitude either.

I totally agree with Justin Sun's inappropriate works and most members of my team who had written medical blogs with me left steem after Justin Sun's joining. But I wanna ask one more thing, does Hive exists only for the volunteers and witnesses who had made efforts to create Hive, or for every users who wanted to invest and write blogs to Steem and Hive to preserve their system?

10/10 on the response. Good job #KingNerd

Just curious, why Poland?

Sorry for the delay, missed your question until now.

We opened the office in Poland originally because there was a group of programmers there who were experienced in a complex and somewhat esoteric programming area that my company was working in (digital electronics simulation).

But it's worked out well, as there are some talented programmers there, and the labor cost is much lower than the US and many parts of Europe, so we've continued to expand there with time.

Thank you for your answer

Got an unrelated question... Will you be sponsoring a My 2020 blog contest/challenge again?

A bit off-topic.

But is there any chance we can see Bitcoin Cash and Binance Coin in Blocktrades HBD & HIVE swap option? Considering ETH is extremely expensive in fees. BCH and Binance coin can be a better option. Any other non-eth coin would do as well.

Just curious if you plan on adding more options :)

BCH/HIVE/HBD pairs are there now (although it looks like BCH -> HBD is missing, so I'll add that one shortly).