Saturday, October 11, 2014

Work Life: Being a Professional (coder)

I just read an interesting article. It has a lot of good points. Although I do not agree with every single point, there are a lot of good take-aways for anyone who is starting their career. In general, it is a good read. It is a bit lengthy but a good skim cannot hurt either. I also realize I wrote quite a bit too

The biggest problem (similar to some of the comments) is about learning off-the-clock being required as a professional. If you can spare time, this is a great way to get ahead. You should always strive to improve yourself, although it should be focused on areas that you cannot cover at work. Learning material that is related to your work should be done during work hours (assuming you are an employee).

As a contractor this may be a different story depending on the contracted work. If you contract to do work on certain work within your existing skill sets, then learning things to skills that have been promised should not be billed. On the other-hand, if you are contracted as a hired-hand, then the learning materials should depend on what your contracted responsibilities are.

The next problem is much lesser than the learning aspect. I rather separate the definition of responsibilities and professionalism. I prefer to see that professionals have a set process on how to deal with unexpected problems and responsibility as problems that should be managed by the person. If there is a big enough problem that falls within your responsibility, then attempts should be made to go outside of existing procedures to correct the problem. That includes staying up late and knowing when you should take a break. I have seen too many junior developers stay up all night then become completely useless the next couple days thus just adding onto the emergencies.

Also by separating the two, professionalism also covers responsibilities that may be outside your circle of responsibilities. For example if an outside group found a problem with communicating with your application, reasonable attempts should be made to assist the group even if there are absolutely no problems on your end. These groups could be third-party or system test team or another department. Being professional is knowing what a reasonable attempt is. You may already have prior engagements thus unable to assist in the short-term.

From my experience, one of the biggest factor to being professional is simply to manage expectations. Although some groups may not like that you cannot assist them immediately, almost all groups are satisfied with a path-forward (some plan where they can show progress) even if the response is that I will need 2-3 days to investigate the issue before providing a new status. One of the most helpful reminders for me is that most projects are really not life-critical (although I have treated some like one in by younger years). Although companies will claim that they lose so much money per hour that it is not fixed, there are many areas that they have skimped that also contribute to the problem. If you are a single-point of failure, that is not your problem... it is the company's problem. Do not confuse this as a reason not to do work, but more to prioritize how to balance your personal life and work life. If it is your anniversary or your child's big play, those should almost always take priority over extra work. Simply manage the "client" expectation that you will focus on it first thing in the morning.

The last problem that I want to bring up is primarily that the article also falls into one of its own points of curse of knowledge. Although I can relate to most of the points, I think it would be difficult for someone who is just starting their careers to fully understand why each point is problem. This is not an easy problem to fix as I suspect that I probably do the same all the time. A couple main topics are like "Don't be egoistic," "Be responsible," and "Accept criticism" (probably a few other topics). The problem with those is that everyone (good or bad) will always think they are all those things. Like who does not think they are good especially those who are victims of "bad" traits? I would have liked to see how to recognize when I am being egotistic or when I am in self-denial. I have faced many people who say "they accept criticism" when it is clear to everyone else that he is not.

The part about experience is actually a lot trickier than it is stated in the article. For example, I work with a lot of people who have much more experience in work experience but few have actual development background. Rarely are my suggestions are ever considered. I usually remain patient and professional in stating my opinions but not over-pressing the issue. Most of the time, the problems that come up are consistent with exactly the risks that I have stated. Am I perhaps being egotistic in that I provide more value than it really is (the actual data seem to back up my recommendations), or perhaps my coworkers egotistic in not allowing more value to my suggestions or accepting my criticism in their suggestions?

I find it more difficult when dealing with people who have more experience but do not seem to really comprehend the problem. Although they also recognize that there is a problem, I often do not agree with their methods in resolving the issue because they do not fully understand the full extend of the problem. I have tried to explain but I seem to fail in getting them to understand my point-of-view until it is too late. To me (imo), being a professional also means knowing when someone is set in their views, have more authority, thus knowing when to back-off and just hope they will someday see the value that I can bring to the team (even though they say that they welcome our thoughts).

Reference