Four ways to enhance knowledge within your working hours

adminguy's picture
Posted July 1st, 2015 by adminguy


Image Credit


It is sometimes said that programmers need to keep running to stay in the same place. After spending a decade and a half in software development, I'd say this is largely true. We need to constantly update our knowledge, in both depth and breadth, if we want to continue performing well as programmers.


The larger question is, how do we do it? Developers often talk about the importance of working on personal projects, reading, and going to conferences to keep their programming chops fit and flexible. All of these things are certainly useful, but they need to be done after regular working hours. This often takes a heavy toll on us. Many developers report getting burned out by the time they hit forty. We often end up burning the candle at both ends. At work - its crazy deadlines, ill-defined API's and arrogant managers. After work - we often spend time keeping up with new innovations in the field. The developers who burn out are unfortunately the ones who extend far more than their mind and body can take, and for too long a time. A few years ago, Kenneth Parker blogged about a co-worker who had a complete breakdown.

He was one of the hardest workers I had seen in the industry. He would frequently stay after hours to work on projects;
However, his productivity was not so great when he landed in a mental institution.

Ken's blog didn't mention it, but I am sure he spend a great deal of time updating his skills after work; reading software development books, coding a pet project two and probably attending software conferences as well. It's unfortunate that someone so conscientious should have to suffer like this, but it is to some extent the nature of what we do. How then can one keep up with the demands at work and the need for professional development? Since it's not possible to stop learning (we might as well stop breathing), we need to come up with smart ways to maximize it during regular working hours, so we can spend time after work with our loved ones and in pursuing personal hobbies.


Here are four things you can do to learn while you are at work.


Work with smart and positive people
The environment and people we surround ourselves with have a huge influence on our development. Teams of smart and positive people create a culture where learning often happens automatically through discussions. Such teams also have a great vibe which cultivates curiosity and passion; creating a wonderful baseline for natural learning.


I had the good fortune of working with one such team very early in my career. Not only was I motivated to learn and perform, but I also found the support I needed from my peers to discuss and clear doubts. On the other hand I have also been part of mediocre teams and the difference is very noticeable. It's not that the people in mediocre teams were bad, but the energy was different. There was little motivation to excel and there was no one with whom I could discuss and learn about what excellence really meant in the context of our work.


However it's not always easy to find great teams to work with. The best way to the right team is to talk with friends as well as ex-colleagues and be proactive about where you want to work. But what if you don't know a lot of people working in the tech industry? Finding work through referrals is easier once you have been in the field for a while and built a good network of friends and colleagues. Someone looking for their first or second job may not have such a luxury. All is not lost even if you find yourself interviewing with random companies. You can still take an educated guess from the people who interview you and the overall vibe of the place. This approach can work rather well for small companies, but taking an educated guess from an interview at a large organization is a lot like approaching an iceberg; ninety percent of it is hidden away from view. Try to back your intuition by asking questions on online forums or by reaching out to your school's alumni association.


Listen to your colleagues
The skill to listen well is one of the most important skills on the path to excellence. I don't mean eavesdropping skills - I mean real listening skills; the skill that allows you to listen with care, empathy, humility and precision, to what's being said, regardless of who is saying it.


Never ever disregard what someone is saying just because they are junior to you. Remember that technology is a constantly changing field, and like it or not, all of us develop biases and become comfortable in our knowledge over time. Every new generation brings with it a fresh set of ideas and a unique way of looking at things. But not listening to someone because they have fewer years of experience than you, is one of the surest ways to stop learning.


Something else I have noticed -- a lot -- in the tech industry is the propensity to interrupt. I don't know why we have become so impatient nowadays, but it feels like we expect people to convey everything in 140 characters, withholding the right to interrupt anyone who takes more that. The habit of listening well is invaluable because it enables us to learn by osmosis. Working with a great team will not help if you can't listen well. No one likes to help people who "know it all" or people who cut others mid sentence. If we want others to share knowledge with us, we have to cultivate good listening skills. 


Ask good questions
Being a good listener isn't just about listening. That would make for a very boring, half-duplex conversation. A good listener is also someone who asks good questions. Not just for the sake of asking, or to show how smart he is; but to genuinely understand what the other person is trying to convey.


Asking good questions is also a sign of respect for the speaker. Someone who is sharing their knowledge wants to know if she is being understood. Good questions motivate the speaker to continue.


However, questions need not be asked only in response to conversations. I think it's a great idea to ask questions all the time - as long as we don't become a nuisance. Ask questions about why a certain design decision was made, or how could something be done in a better way, anything! But at the same time it is useful to remember that basic technology concepts can be learned from books. When we discuss software development with colleagues, we learn their experience. We become privy to what they have learned deep in the trenches; fighting fires. This sort of knowledge is invaluable and is rarely found in books. Ideal questions are those that tap into this knowledge.


Knowledge sharing sessions
Asking good questions is a great way to learn from our colleagues. But learning is not just about receiving. It's a two way lane where we give and receive, and the more we give the more we receive.


Many good companies facilitate knowledge sharing by organizing lunch-n-learn sessions or after hours discussions. If your company doesn't already organize knowledge sharing sessions, perhaps you could take the initiative and start with a lunch-n-learn talk.


Try to utilize these sessions not just for learning, but also for sharing what you have learned. These sessions are a great way to teach and learn from practical challenges we face in our day to day work. For example when MongoDB was becoming wicked popular, there were still teams who burned their fingers adopting it, because Mongo was clearly a bad choice for their requirement. Unfortunately the pitfalls were rarely mentioned in books and articles cheer-leading for what was then a cool new technology. Real challenges faced by real people are not always found in books, but you will often be surprised by the wisdom you get in knowledge sharing sessions. 


In Conclusion
If you are looking forward to a long and rewarding programming career, your first priority should be to remain healthy and sane, while working hard deadlines and keeping up with the latest and greatest in your field of work.


I have a lot of respect for programmers who go home and work on pet projects, read books, and attend conferences. But all of these should be done only after you have maximized the learning potential while performing your day to day programming tasks. Working with a great team, cultivating good listening skills, asking good questions and participating in knowledge sharing sessions are effective ways to learn as you work.