Naguel

I'm Nahuel, and these are my work experiences, ideas and thoughts as a web developer working on the eCommerce industry.

Hiring a remote developer but as an actual team member

Hiring a remote developer but as an actual team member

At some point on a developer career it's possible that we'll get an offer to work for a foreign company as a remote developer, with a contract, from our home, in maybe a different language. And as a company it's also possible that you'll be thinking on hiring some remote Senior developers.

We all know in what we are thinking when talking about a remote position: sell/buy some hours, receive/assign some tasks, deliver/expect some code, repeat, whether you are the developer or the company.

As a front-end developer who worked as a Technical Leader in a local company, I was afraid to make the jump into a remote position because my main fear was to get stuck on coding only, without the possibility to bring something else to the table, just putting color on some buttons and nothing else for the next 5 years.

Well, it doesn't have to be that way, and thinking that a remote position it's only useful as the way I described before it's just lame thinking.

It's not simple, and it's up to the company

As a remote developer we can try to get out of the pre-formatted remote role model, but basically is up to the company we work for to give us the space to do so, to acknowledge the advantages of having us as one more team member and not as "the remote developer".

Companies usually set aside the remote developer from the development decisions (ironic, I know), despite the fact that sometimes that remote developer possesses a higher seniority than the local people, or more experience on the particular subject being discussed.

When a company turns to the idea of hiring a remote developer it's because they're searching for a Senior in terms of coding, because they have a tight deadline or the current projects they're having are becoming more complex day by day.

Your local team will need 3 weeks to finish a task so you hire a remote guy who'll get it done in 1 and allows you to remove pressure from the local team so then they can focus on something else... and repeat. Sounds familiar? It also sounds like a software factory, and that's fine if that's what you're aiming for, but don't expect team work on a software factory, don't grumble when you got stuck in quality, and don't blame the dev team when they not improve the delivery times.

For the same price you're missing somebody who can bring more, who can grow the team in terms of quality, delivery times, complexity of the tasks that can be carried out by the whole company, etcetera, just because... you're afraid?

Afraid of what?

You're afraid of giving full permissions to a guy you "don't know"? Are you afraid of giving decision power and all the company's credentials to somebody you've never seen before just because he can disappear from one day to the other?

I've seen local team members actually disappearing a day or two without notice, also people walking out of a meeting because of drama, developers working on a freelance project while being on working hours at the physical office.

Don't you have that kind of people at your office? If so don't give me that I've-never-met-the-guy excuse.

If the developer is going to be an asshole, it's going to be that either sitting on your office wearing a suit or in pajamas at home. If he's going to procrastinate, if he's going to spend 7 out of 8 hours in Facebook, he's going to do so either under your watch at the office or from the bed at home.

Come on, you're already know that, I'm just stating the facts.

I've seen developers on-site expending 90% of the day at YouTube, right in front of my nose, and I've seen spectacular remote Project Managers, Business Analyst, and developers, of whom I don't care if they are at YouTube or not because they deliver. Because I've trusted them.

I bet you can relate, I bet you already have some remote people who perform better than some local team member, so I also bet that you're starting to realize that this idea of not making the remote developers a real member of the team it's all just about unjustified fears.

Building a positive company culture with a remote team
Do not think for a second that a classic culture, rules, or way to go for when you were on an office will accommodate everybody now working in pajamas. That process of yours needs to be dust off and made again.

But chat it's not the same?

Along with those fears stated above comes the "communication issues" also known as: just more excuses. Of course, it's not the same to have a face-to-face meeting than having to call somebody over Skype, but is it really that big of a deal?

I really don't stand this excuse, and I don't think we should spend too much time debunking it when we're living on a society where my +60 years old mom knows how to call me over WhatsApp, where my 20 years old sister knows how to share a video over Facebook while adding her own thoughts about it.

So, if 20 billions human beings can found a match on Tinder and potentially start a relationship or just have sex... I think we can overcome the "communication issues" when working on a Magento 1 to Magento 2 migration.

Turn on the camera and you'll see how all that remote things disappear. I'm being real, that helps a lot when you are trying to add the human factor to the communication process because it's not the same to say thing to a mic than to a face even when inside a monitor.

A developer sitting away at a 15 hours flight from your office can still give the same as the one sitting on your local branch. In this globalized world these excuses don't have a chance.

Play spot the difference as part of your front end development process

Play spot the difference as part of your front end development process

I know that inside the front end development kingdom there are a lot of different sub species, different front end developers out there working in different stuff: a few more focused on the functionality closer to back end development, and some working on converting designs into code.

If you're a front end developer whose main task is to look at a PSD file and "make it happen" in code, then I can't stress hard enough how important is for the job that you achieve this successfully. And if you're thinking that this is obvious and there's no need for a post, trust me, it's still a common problem among developers... and it's hard to me to understand why.

What's the main task of a fire fighter? Extinguish a fire. What's the main task of a plane pilot? Fly the plane. Main task of a mother?... I have no idea, but my chips are on keeping the baby alive.

Jokes aside, what do you think is the main task of a a front end dev? Get a design, then implemented it as pixel perfect as it can be.

I saw this problem presented in a variety of seniorities, as it doesn't distinguish between Juniors and Seniors. Of course, the problematic is more present in lower seniorities, that's not surprise, but it still cause for rework in more experienced developers.

If "main task" seems like too much, as you probably thinking, just like I am, that a front end developers faces a lot of task during a day and it's hard to decide which one is the main one (again, related to the fact that your front end developer job description it's for sure different than the others), then just let's not get stuck in grammar.

It might not be your main task as a front end developer, but for sure is an obvious task, something that you should be already been achieving without anybody raising any doubt about it when you deliver.

So why aren't you? Or why you still have this problem in your team?

If it's your problem then awesome, today is a great day to start solving that. And if not your problem but something you see that happens within your team or company... then it's still your problem, sort of.

The most common excuses I heard about it is the lack of tools, or people using the wrong tools, to view and manipulate the designs.

"Oh, it looks different because I don't have Photoshop in my computer so I opened the document with other software that converts .psd files if you're using Linux."

That's not a good excuse and you know it.

We're missing a synchronization here between developers and people in higher position within the company when deciding on what tools to use. Are we going for Adobe Photoshop for the designs' team?, great, then let's make sure that we also have Adobe Photoshop in the developers' computers... and not Linux if we're going to deliver .psd files to them.

Here's another one, "We were on a hurry, so I couldn't spend time on making the implementation pixel perfect". I can only assume that the equivalent for that on a fire fighter would be something like "Oh, we were on a hurry, so we only extinguish the fire on the first floor".

That "explanation" is a symptom of a higher problem within the company that might deserves an individual post, but for the moment just stop the presses and evaluate if you're giving to the developer the necessary time to accomplish all the items included in yours definition of done. If not, then you're asking for the impossible.

On the other side, if you're the developer. Come on dev, stand your ground! Do not go for an impossible estimation knowing that you won't be able to deliver successfully. If the time frame won't allow you to go for a pixel perfect implementation, then speak up. If everybody is on board of what the outcome will be, then good, no surprises for nobody.

And finally, the Top 3 seems to be "I tested it on Chromium for Linux Mint and it looked exactly like the designs". Looks like a child of the first excuse, and still a bad one.

On the developer's side, ask for the specifics, ask what browsers you are supporting for that particular project, or ask for metrics from Google Analytics to know exactly what your final customers are using. And test, my friend, test it on more browsers (specially knowing that Chromium for Linux Mint can't have the final word).

If you're the company, or somebody with a technical seniority that have a say on technical decisions, then define what browser do you support and include them on your definition of done. Avoid having technical decision based on the personal believes of each developer on the team.

Spot the difference

Have you ever played that magazine or newspaper game where you have two almost identical images next to each other and the goal is to spot the 10 differences? Why don't you try the same game with your work before tagging it as done?

I've been on meetings where emotions are high, reviewing an implementation that clearly doesn't look like the designs, where the conversation last for less than a minute because all it takes from the person evaluating the job is to put the original design next to the developer implementation and ask "Does it look the same? Does it look like it is finished?".

And of course it doesn't. Just avoid that meeting by playing the game by yourself and prevents others from playing it for you with your work.

On a not much of a side note, I find the post "The Undefinition of "Done"" quite cool, so check it out as it might help with your development process.

The long standing cliche war between the sales team and the developers team

The long standing cliche war between the sales team and the developers team

If you think this happens only on the company you work for, surprise surprise, this "war" appears in many software developer companies as I happen to discovered in a dev exchange session during a Magento Meetup.

So, what's the problem? It seems to be that the developers claim that the sales guys are selling too much, and sales shrug their shoulders and keep on selling because that's what they do.

For a start let's say for a fact that sometimes developers are way up to the eyes and can't handle either the amount of work they have or the delivery dates people up in the chain of command are expecting them to accomplish. I'm not whining about it, I'm saying it happens to me in several occasions and it's something companies acknowledge by time to time (therefore, a fact).

If you are a developer going through this, then of course you are going to complain when a new project arrives as "you simply don't have more time to do it and nobody seems to understand that".

Time passes and you, developer, contain your discomfort deep inside, only having as a escape pipe your rolling-eyes attitude when a new client is presented. That means that when you encourage yourself to talk about this problem, with the sales team, is already late: you're angry, the sales team is angry too because they know by talk around the water cooler that the developers are complaining, so the discussion is getting to nowhere.

Sorry to disappoint you, my fellow developer, but to keep the company open for business the sales guys must attract new clients. Sales gotta sales, and, on top of that, the company must remain competitive, which means that the estimates provided in the commercial proposals must be competitives.

Stand in the shoes of a client picking a company for his next project: you will look at the estimates written in the proposal from the different companies you're consulting before choosing one, in addition to take into consideration the quality their provide.

Finally, the sales team times are different than the ones experienced by the developers team. Pre sales can take months, so it's hard to predict right now how busy the developers are going to be in, let's say, 10 months from now.

If you put your dev problems aside for a second, the explanations coming from the sales team are understandable, so give the sales guys a break.

I can see that both sides are right but unwilling to listen to the other. Nobody talks to nobody, developers raise complaint among developers only, sales within sales, and the real problem is never faced.

Up to this point we must agree that developers happens to have too much on their plate, and sales must keep on selling because everything I just said, but nobody is going to quit doing what they're doing to solve "the problems from the other side", at least nobody is going to do just that literally.

Understand that it's not about your problems and their problems, but a problem we have as a whole team.

The first step toward a solution is to start seeing this as an integrated team between devs and sales, no separate teams. Otherwise, if you can't accomplish this, then become a freelance and sell your time by the hour, because whether you are a developer or sales you're only thinking about yourself and not seeing the big picture, missing an opportunity to be a better company and benefiting you, plus everybody in the process.

Start talking, and planning together, but don't wait until you're mad. And find common ground about the problems you are facing, because sometimes it's not about changing the reality you're living but more about facing it and accepting it. Everybody, devs and sales, acknowledging the same reality (the same reality being the key words in this sentence).

Not changing the reality but just accepting it? Here's an idea...

Wouldn't be better to work in a place where a salesperson sells "the impossible", but closes the door behind the client, turns to the developers and says "Look, this project's delivery dates are challenging, but it's a key client we had to win"? Wouldn't be better to work in a place where, after that, the developers team says "Okay, we both agree on the times for this new client to be very difficult, but since we both agree on that let's work this out internally"?

Resolve it indoors! Keep on selling, good job, then sit on the same table and plan altogether with the developers team how are you going to accomplish the deadlines. It's impossible to get it done in one month? What if two devs work on this instead of one as it was originally planned? Wait, does this augmented reality requirement must be on the go live or can it be postponed for the support phase? Work it out as a team!

When I say that it's not about changing the reality but accepting it I'm saying that as long as we agreed on the problem, as long as we stand on the same boat knowing what's going on inside the company, both devs and sales, there's an opportunity to fix what's going on.

And, if not, if you don't think this means fixing anything... at least you'll be working on a place where the "enemy" is not inside the same building, causing the working environment to be much better, less stressful for sure.