What’s the best approach to take when there are so many different opinions about a “great” programmer? The answer is ABL - always be learning.
You are an experienced developer, but you want to be great. Despite the fact that you’ve worked with a couple companies and noted that each has its own way and working style. Some companies put value in TDD, while others care about clean code. Then there are those who only look for result (you know, clients), without caring what’s underneath. So what’s the best approach to take when there are so many different opinions about a “great” programmer?
The answer is ABL - always be learning. Take a look at this list of 10 practices compiled by programmers at the top of their game.
How often do you allow other developers to take a look at your code? And how do they do it? From someone’s else perspective, your code can look more or less foreign. Maybe you didn’t notice something? Maybe it could be written shorter or more efficiently? The key here is that programmers rate code and not persons. Learn to request and apply advice from others, and share your constructive advice as much as possible.
Yes, people are busy and have a lot of crazy stuff to do everyday, but pair programming is one of the fastest, funnest ways to get a job done. Team up frequently with colleagues from the office or friends from University and spend an hour together in the front of the computer. You can use ScreenHero or just simple Google Hangouts. Here's how we use pair programming at netguru.
Analyze Your Team
People around you have a big influence on your work flow. Identify who around you inspires or disturbs you and how. Identify how supportive they are. Are you free to write a hipchat message with a problem? Are they allowed to ask you for help? Do they ask too much? Strive to work most with those who you fit best with, and actively write out lists to identify the strengths and weaknesses of each member. You’ll discover new ways to cooperate or better approaches to asking people for help.
Sometimes you need to take two steps backwards to move forward faster. You might have been a senior PHP developer once, but when you switched to Ruby, you became a junior again. Always ask yourself if its the right time to challenge yourself again. Learning something from the beginning can even help you grow in the things you’re good at already. A new language, and always having a side project is a great way to start.
Webinars have become more and more popular. It’s easy to organize and no matter where people are, they can join the conference and learn. Organizing web-based seminars in your community does a lot for your career and your community. Start out with 1 hour sessions, per month, in a group of 4-6 people, and share what you know. It’s a good way for you to learn too, as others will share what they’ve recently discovered (e.g. the latest gems that they discovered).
You may think: I wish I want to join this fantastic conference but it’s far away and traveling there it’s a waste of time, and most of all I have no time for organize a trip. This means you are not well motivated to do so. Think outside the box. Share your idea with a colleague, collaborate in organizing the trip, negotiate the ticket price and finally ask your company to co-finance it. You will use the knowledge not only for your personal growth but for your company as well.
No matter whether you work at home or the office, organize space in the way that suits you best. Despite of obvious stuff like adjusted desk and comfortable chair, think about people around you—your family at home or colleagues at work. Make a rule that helps not to disturb each other and focus on your work. Set boundaries (e.g. hours when you are, and aren’t, available for others) and be strict about space and time.
You know at least one link aggregator you use on a daily basis. But do you know what is the most important thing? Reading those articles. Ok… at least scanning them. It would be the best if you keep them all in one place. Pocket can be very useful. It’s adjusted to mobile and web and it’s easy to select articles according to topics. Subscribe to newsletters like i.e. Ruby Weekly, our Ruby Brief or use Feedly to be up-to-date on Ruby links.
Notice the above practices aren’t really about specific tools or programming techniques, but lifestyle tips that push you as a programmer and keep you at the top of your game. Always-be-learning is a process that involves a lot of mistakes, iterations, adjustments, and, yes, social interaction!