Thursday, 26 June 2014

1 Year On the Job

On 16th June 2014, I celebrated my 1 year anniversary...on the job.

When I first joined, I didn't know what I wanted. I was fresh, not even out of college. All I knew was that I liked programming, software and thinking in new, alien ways.

One year on, I think I know a few things.
  • I want and get interesting, meaningful projects. I like to be able to tell myself what a great day I had, what awesome things I did, before I go to bed every night. 
  • To learn and appreciate lessons, truths about life, applicable no matter what the future may hold.
  • Punctuality. Punctuality is vital to the modern world. But truth is more important. The balance between rigid measures and flexibility is achieved through tolerance, but communicating fully and honestly - Say the manager asks if I can come in at 9 tmr for a meeting. But I know 9 is not makeable because I really feel tired and need sleep. I negotiate a new time, instead of being a sucker.
  • Schedules. Project time estimates are always tricky. Then add politics, people relations and monetary considerations. Estimates can either get seriously bent, or the team-members will become cynics. Truth simplifies this and negotiation helps all parties accept it. 
    • I hold the attitude that the facts are the facts, and if you don't want to hear it, it's your problem and not mine. But since we're in the same boat, I must help you get it.
  • Assistance. When I need help, I ask for help immediately. In a team, an individual's time is also part of the team's time. If you waste your own time, you're wasting the team's time. Get the best people to do for you if possible.
  • Atmosphere. Programmers need cozy, quiet, enclosed areas for brain work, and cozy, quiet group areas for focused group-work. Managers unfamiliar with development work generally do not realize this. 
  • Managers. I believe that managers are there so that team members can be productive. If it means taking flak from other managers, well, that's what they're paid to do. If it means celebrating each small victory or project completion, surprise us! A sweet,satisfying aftertaste after every project is what makes developers come back for more.
  • Retention. You want to know why some companies keep doing well? Employee retention. Retain good people who know the systems well, help them become better, let them help others improve and they'll pay you back many fold. If you let them leave, the skills, invested training and tech know-how leaves with them. (The best example of this is the HKUST Robotics Team. They do well consistently, thanks to the strong mentorship by former members.)
  • Hard work. Programming is hard. That's a given. When you become incapable of it, stop and doing something else. I wasted many hours in the beginning in unproductive times.
  • Stay Fresh!
    In development, there is usually most to learn if you venture into an unknown territory. Like a PHP programmer venturing into Python Django. But on the job, these opportunities are rarely given to you, because people tend to trust those who are already proficient at it. I found that if I wanted to be challenged and practice my learning ability, I had to get new assignment. 

    To get new assignments, one has to finish off the outstanding ones first. Knowing that not all projects are equal, simply focus on the most important/urgent ones first and let the rest wait. Most people have this myopic tunnel vision when they are in a hurry, under stress or desperate for completion. If they can see the light approaching, they'll believe you are doing great.
Memorable experiences?

The few times nasty clients shouted over the phone about not getting what they want quick enough, while I am trying to solve difficult technical problems on their behalf. I simply let them vent while I put the phone down. After some moments, they started to become self-conscious, wandered if I was listening and I said "Anything else?". That was a good day.
  • The difference between a good day and a terrible day can be made in moments just like this. It takes patience and a good mood to best resolve conflicts with irrational people.
What made it work ultimately, was the people. Nice people you can share anything with, secure people who don't play political games, a few good managers willing to improve conditions all the time, a laissez-faire CEO who does his job and lets us do ours.

In all honesty, I can say I have enjoyed my current position for the majority of the year. Out of 100, I would give it an 80 - enough for an A.

To sum up, the past year has a dose of reality, a course on what life is like for the 9 to 6 people. Despite all the feel-good stuff floating around, there are very few people who can honestly say they enjoy every single second of being on the job, that every little detail is incredibly interesting and satisfying. You mix with the great with the not-so-good, explain/cope/forget/rant/resolve away the not-so-good and call it a good day!

Cheers!

No comments: