Why do I work remotely?
I lived in London, UK for many years. My family live in France. At a given point I wanted to rejoin them.
Modern technology allows me to work remotely and enjoy living with my family.
I don’t have the stress of commute. I can work more and get less stressed because I don’t have the continuous interruptions I have in an office.
You may want to work remotely for a lot of different reasons.
Is your reason that you need money to pay your bills?
When working remotely you need to love coding otherwise what will motivate you when nobody is around?
There is no love in coding to pay the bills.
You may let fear motivate you. But fear makes you stupid and you need your brainpower untouched to solve problems.
What remote employers want from you
You need a specialization. It’s hard to get things done being a generalist.
If you are a software developer, you need to focus on a language or two and a small set of tools. Just to keep yourself trained and updated on a language will take a lot of time.
You won’t convince your clients that you can do everything, they won’t believe you.
They don’t want you to tell them what you can do, they want you to show them what you can do.
Put your code on GitHub, write articles, have a professional website and make a GitHub repository with the code you wrote to build it.
You are your own project manager
There should always be at least four hours of overlap between your working time and the one of everyone else in your team.
Yet for four hours you are on your own. Do you have project management experience?
I managed a team of eight with not just a deadline, but a dread line. Every day of delay carried a penalty of 5,000 Euro.
My company trusted me so much that they sent me to work abroad for a project where to miss the deadline meant to lose a millions Euro deal.
When working with a London client, he trusted me with working at home for a long time.
You can join an open source project. This will tell a lot about your ability to manage your work.
Good at writing
Remote workers write a lot.
When you have a question for your team, don’t rush to ask it.
Show that you are well-organized and know how to work remotely.
Rarely what you need to know is urgent and for that there is the phone.
Put your questions together and ask them when you meet your team in a video conference.
Even better put them on a collaboration space on-line and let your team answer them at their convenience.
Everyone gets less interruptions, relieves stress and is more productive.
You can agree on a calendar. Your colleagues can have a specific time when they answer questions.
There should be documentation you can consult when nobody is available to help you. Even when you can ask, it’s much better if you can read because you don’t have to disturb your co-workers.
To practise my writing skills I write articles. I have written 50 articles about a subject I call Human Energy. They are articles about psychology, self-help and sociology. I have written a book and 50 technical articles.
I practise free writing. I switch off my inner editor and enjoy the flow. It makes my writing better and me happy.
I use Edward de Bono’s games to entice my creativity. I got many good ideas this way and many opportunities to write and improve my writing.
Learn to cut the clutter, it makes text hard to read.
Check and double check your writing for possible misunderstanding. Use emoticons to convey the right mood. Avoid hot discussions.
If your words upset the team, there may be four hours of time during which your hurtful turns of phrase make damage. You will have a hard time trying to soothe people’s ill feelings.
Check and double check your writing for clarity.
Read “On Writing Well” by William Zinsser if you write in American English or “How To Write Better English” by Robert Allen if you write in British English.
Who to work with?
Don’t apply for each and every job you find. This will likely make you very tired and kill your motivation. It won’t work either.
Remote employers want to know that you have good chances of liking what you do when you work with them.
If they see a canned application, they will reject it.
Start with finding a few companies you feel you will like to work with.
They may be companies whose products you know and use or who work in industries you like.
Do your research and figure out what they may need and the challenges they face.
Can you offer your life experience to them? Are they trying to solve a problem you too would like to see fixed? Are they improving life quality in a way that you yourself enjoy?
Your human side matters
What makes for smart solutions? What are the ingredients? Just that you can write an algorithm in the time it takes for me to blink my eyes?
You have seen all sorts of CSS tricks and can spit them out like a machine gun?
Smart solutions come out from merging technological expertise with life experience.
Don’t think that your job is just to implement what someone else decided.
That doesn’t work and we have been knowing for a very long time that it doesn’t.
Agile development means that you write some code, then you, the team and the client pour your life experience onto it and see it morph into something else.
A client who has some understanding of how software development is supposed to be, should see your lifestyle as a recipe for failure.
You are not a robot, don’t try to be one. Don’t think that if you make a robot of yourself, your work will benefit. The opposite is true.
Do you collect coins as a hobby? Do you volunteer to take care of sick people? Do you enjoy cooking? Are you curious about whitebark pine conservation? This is what will make your code great.
We make software for humans to use, not for robots. Robots and AI gadgets will never be able to make good software for humans because they don’t participate in the human condition.
When they ask me what my major defect is, I say that I’m human.
To some to be human is wonderful, to others it’s a disease to cure.
These latter guys are on the dark side.
Your creativity flourishes where your humanity is valued. Your creativity is the nourishment you need to build quality applications.
Organizing time and communication
Your client is based in Los Angeles and you in India.
Is it fine? No, it isn’t.
New York and Paris is OK. Los Angeles and Paris is stretched. London and New Zealand is out.
Don’t tell me that you can work at night. Remember life-work balance? And how it’s important for your work itself that you try not to be a robot? And how life experience will improve your work?
Make sure that you let your team mates know about what you do.
Keep a journal of your activities. Update it 2-3 times a day.
Ask quality questions
The quality of your work is as high as the quality of your questions.
Ask a lot of questions. You want to know how and why. How is not enough. You want to see the big picture and know that what you do makes sense.
You are thinking that the only thing you can do is just to execute whatever the client wants.
“Who am I to ask questions? I’m just paid to bang on the keyboard as fast as possible and leave big questions to others.”
Forget it. This attitude will kill your interest in the project and your motivation.
When you ask questions, you aren’t wasting time. You are motivating yourself and improving the project’s chances of success. Don’t be shy and ask away.
If the designer produces a design without ever asking you about how to make it easy to implement and maintain, that’s a sign of bad project management.
In the past, a very long time ago, software was made following a waterfall model. An analyst was making an analysis. She passed it on to a designer who made the design. A developer wrote the code. A tester checked quality. There was very little interaction.
This wasn’t working. The Agile movement took off to fix this problem. Now software is made in a much more interactive way.
Once, I got an analysis a very famous management consulting firm had written.
They made it and disappeared.
My team was supposed to implement it.
It was useless. We ignored it and figured out what to do ourselves.
Understand company culture because you will be supposed to use it to direct your work when you are alone.
Beware the “must-run” mindset
A very long time ago, IBM had a genial idea. They invented the factory of software.
“Why not make software the same way we make cars in factories?”
"Just let’s figure out the process we need to follow to assemble applications.”
“We have a measure of productivity, it’s the number of lines of code developers write.”
“Once the process in place, just accelerate it and we have better productivity.”
It has been a resounding failure.
And yet the “must-run” way to manage software development is well alive and causing disasters.
Maybe now even more than when IBM attempted the factory of software.
A client who operates observing the “must-run” credo is going to pressure you and you will produce code the rubbish bin will refuse. Too dirty.
As you run and run and run, your code becomes very messy, hard to fix, to read, to improve.
As you run, you become stupid and have a hard time fixing problems.
You patch the code. Your code becomes a patchwork with the difference that actual patchworks are beautiful, your code is ugly.
Your patched code becomes such a mess that it takes very long just to figure out what it’s doing.
The bottom line is that your client ends up with nothing at all.
He may even blame you.
A client of mine wasted half a million pounds because developers were running and producing rubbish code that my client had to throw away.
I have a friend who worked for two years on a project with a large team. They had to abort the project because nobody could figure out any more how to complete it.
Never think you can change your client.
You need to understand how she works and what level of comprehension of the proper software development process she has.
IBM learned from their mistakes.
Now they are the best software development school in the world and I have been so lucky to work for them.
They want you autonomous. They want to trust you.
This is very important when working remotely.
How to spot a “must-run” mindset
“Legend’s are born in the valley of struggle!”
“We work with a sense of urgency”
“We are a fast paced start-up”
“You have to be ridiculously committed”
“Starting a company is like chewing glass”
“Your goals don’t care how you feel”
“Here everyone is available all the time”
“We have a high speed culture”
They pay attention only to what you do wrong
There is a lot of bureaucracy
Life-work balance is nowhere to be seen
You see them stressed and exhausted
Serious flaws in communication
Deadlines are actually artificial, they set them for the sake of it
There is competition among team members
Free coffee subcutaneous injections
If you need time off to stay with your sick child, forget it
They chop the project into small bits they want you to estimate and price
Everyone looks miserable
They use applications that spy on you whilst you work
Your opinion is worth zero
They send you coding tests you have to complete against the clock, that are unrelated to actual work, that last for days and are unpaid
They show no respect for your time and effort
They regularly work more than 40 hours a week or on weekends
They let teams grow to more than 3-4 people and don’t know that they are supposed to break projects into sub-projects until teams are manageable
Working remotely with a “must-run” client
The “must-run” disorder will much likely ruin the project.
It will make you stressed and the client will end up with poor quality code she may have to ditch.
In a remote setting, it will be much worse than in an on-site one.
The “must-run” client will boil deep in distrust for up to four hours before he can see you again and you can reassure him about your progress.
You are updating the team on Slack so frequently that you are distracting yourself from doing actual work.
But the “must-run” client is insatiable.
She will be obsessed with controlling you and the distance will make things worse.
What to do? Run! Get rid of them! For once to run is the right thing to do.
Things to learn about
How to manage interruptions when working. I’m lucky to have a working environment with no interruptions other than the ones I produce myself.
Secure your laptop. Best if you can encrypt the entire hard disk. But an encrypted partition will be fine as well.
Test many conference applications like Appear.in, WebEx, Google Hangouts and Skype. You need an application that allows you to share your screen. Audio and video quality have to be very good. Don't compromise on them.