This is a guest post by Ola Pszczoła of netguru.
You are an experienced developer, but you want to be great. You’ve worked with a couple of 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 being a ‘great’ programmer?
The answer is ABL – always be learning. Take a look at this list of ten 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 else’s 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 people. 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. If you’re looking for inspiration in pairs, check out the video from Ruby Kaigi 2013 or Pivotal Tracker’s website. Here’s how we use it at netguru.
Analyse 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 co-operate 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 it’s the right time to challenge yourself again. Learning something from scratch 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 organise and no matter where people are, they can join the conference and learn. Organising Web-based seminars in your community does a lot for your career and your community. Start out with one-hour sessions in a group of four to six people, and share what you know. It’s a good way for you to learn, too, as others will share what they have recently discovered.
You may want to go to some fantastic conference or other but it’s far away and traveling there is a waste of time – something that you’re short of. This means you are not motivated enough to do so. Think outside the box. Share your idea with a colleague, collaborate in organising 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, organise space in the way that suits you best. As well as obvious stuff like an adjusted desk and comfortable chair, think about people around you – your family at home or colleagues at work. Make a rule that prevents everyone from disturbing each other and focus on your work. Set boundaries (e.g. hours when you are, and are not, 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? Actually reading those articles. OK, at least scanning them. It would be 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.
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!
Photo: Markus Spiske via Flickr