Simplify the Data Analysis
Create tools that will help you analyze data faster.
For example, application logs usually contain a lot of information, which is good if you are looking at a specific problem, but if you want to see the big picture, all those details make it hard to identify trends and patterns.
The solution: Build the tools that can parse the logs and give you exactly the information you need. You can create a standalone script that you run manually, which generates a report, or you can run it as a cron job and feed the data into a web app or a mobile app that will handle the presentation logic.
Automate as much as you can.
Automate application testing, system health, reports or anything else that you need to do or check over and over, the same way every time.
Your automation scripts can run when you’re on vacation, when you’re sick, and on the weekends. You don’t need to remember anything, and the scripts can notify you (by sending you an email, for example) when there’s an error.
If you do this right, it will free up your time, allowing you to focus on things that require your brain, and not just your fingers, such as making decisions, fixing bugs, gathering requirements and other creative tasks.
By the way, if you aren’t a programmer and don’t know how to code, don’t be afraid to ask for help. Programmers help each other all the time, and many of them will be happy to help you too.
The Best Way To Motivate Is To Not Demotivate
If people are dissatisfied at work, it’s usually because there’s something that bothers them. They may think they are underpaid, they may feel pressured because the other people’s expectations are unrealistic, or perhaps they don’t feel valued or heard.
Good managers know what demotivates each one of their people, and work with them to get their needs met. This doesn’t mean that they will wave a magic wand a make all of their wishes come true. No, in most cases the manager’s job will be to enable the individual to reach their goal.
For example, an employee who wants to be paid more could take on more responsibility, which will increase her contributions, and therefore her salary.
For this to work though, the manager and the employee need to trust each other, and the expectations needs to be clear. If one party does their part, and the other one doesn’t keep their promise, the things can get even worse than before, and the damage could be irreversible.
But if it works out, it will make the employee feel trusted, appreciated and respected. On a larger scale, the team performance and retention will increase, and the people will be more engaged and focused (because now they don’t have to focus on that thing that bothered them).
Not All Decisions Are Equal
We all want to make good decisions. But in many cases, there’s no way to find out whether the decision we’d like to make will work before we actually make it.
It’s a catch 22.
We research, and test, and ask other people to help us. We try to identify the risk and then minimize it.
This process can take a long time, and cost a lot of money. Is that a waste? It depends.
Not all decisions are equal.
In some cases, what you have is good enough. Things can always be better, but the return might not be worth the effort.
When you need to make a low-importance decision, timebox it.
The critical decisions, on the other hand, take time and money (sometimes in surprisingly large amounts). But that’s OK, because they will save you much more time and money later.
Email vs IM vs Phone vs In Person Communication
Choose the communication media based on the nature of the message, not the personal preference.
Email works great when you want to share a lot of details (especially if you’re sharing it with a large group of people), or when the question you have is extremely simple. If somebody asked you to send her the links to the documentation, or if you have a non-urgent yes/no question, you would use email.
The great thing about email is that the recipient does not have to be available at the time a message is sent. The bad thing is that you need to be very careful about the words you use because the message can get easily misinterpreted.
You would want to use a direct IM when the question or request you have is simple and relatively urgent. Keep in mind that every time you send a direct IM, you are distracting the other person. He needs to stop whatever he’s doing, shift contexts and then respond to you. After the conversation, he needs to go back to his work, and this change in focus takes time, and affects productivity.
If you have a job that requires you to be reactive, such as customer support, then this is OK. Otherwise, you may want to disable the notifications and check your IMs only during breaks (if you use the Pomodoro technique, which I highly recommend, this would be every 25 minutes).
When you want to explain a complex situation, and need the other person’s constant feedback, you would probably want to use a phone or communicate in person. Sometimes you are not sure what the other person knows, and what needs to be explained. Or perhaps you want to be absolutely certain that the other person completely understood you.
If you want to see how the other person feels about something, the most effective way is talking face to face. That way you can pay attention to the non-verbal cues, such as gestures, facial expressions and voice inflections. This does not necessarily mean that the other person needs to be physically present - video chat can also work very well.
So, next time you start writing or responding to an email or IM, reaching for the phone or scheduling a meeting, spend a few moments thinking whether your approach is really the best way to communicate your message. This awareness will result in better understanding, less conflicts, and it will save everybody’s time.
The Best Thing About Coding
…is that anyone can learn how to do it.
You don’t need a lot of money, a degree, or a team of people. All you need is a computer and the desire to learn.
The internet makes is very easy to share things with others, get feedback and improve. Every iteration takes your product and your skills to the next level.
In addition, it’s very easy to see if the feature you are working on is functioning properly. If you are working on a web app, sometimes all you need to do is reload the page (or better yet, automate it by writing a test).
Learning programming (and many other things) has never been easier. If you have never done it before, try it, even if you don’t plan on doing it professionally.
And if you are an experienced programmer, spend some time teaching others or building something cool just for fun.
Years of Experience
Years of development experience isn’t a good indicator of knowledge. Some jobs teach you more than others, and some people learn a lot in a short period of time doing side projects in addition to their full time work.
Don’t get discouraged if a job posting requires more years of experience than what you have. If you have the skills, are a quick learner, have a continuous track record of exceptional performance, or all of the above, you may be just the person they are looking for.
If not, the good news is that it’s never been easier to learn programming and build something worth showing your potential employers.
It doesn’t matter where you work from… as long as you get things done. If you are productive and accessible, why would you need to come to the office? Why would your job determine where you can live? And at the same time, why would a hiring manager limit the talent pool she can choose from?
The communication is not a problem anymore. Technology has made it possible to make video calls, conference calls and share your screen.
The question “How do I know if a remote employee is actually working?” is a sign of a much bigger problem. How do you know if the people in the office are actually working? Presence does not equal productivity. It’s a false sense of security.
People who don’t trust each other (regardless of whether the perception of untrustworthiness is real or not) won’t achieve extraordinary results no matter the environment.
The best communicator isn’t the one who speaks the best. It is the one who is willing to listen.
A conversation turning into a monologue usually leads to a tangent story. Giving a speech or sending an email without knowing the audience/recipient is a shot in the dark.
A few right sentences might answer more questions than 10 meetings. To be able to reduce the noise, you must be willing to listen.
Becoming a Team Lead
If your goal is getting promoted, doing your job well might not be enough.
Being a great programmer does not necessarily mean you’ll make a great team lead. Working with people is not the same as working with computers. Computers are predictable and reliable (for the most part), and people, on the other hand, are flexible, creative and unique, at their best, and deceiving, disengaged and resentful when their needs aren’t met.
Managing a team is completely different from managing a cluster of servers. There’s no documentation. There’s no restart, reinstall or undo.
How much you know will always be important. But how much you care is what will determine your ability to lead.