InsaneProgramming

Ramblings of a Java developer and OSS fanatic

The Route to Being a Good Software Engineer

In terms of tenure I still consider myself a rookie in this industry. In some aspects, I’m still an apprentice, in others competent and perhaps one or two area’s proficient (if you don’t know what I’m talking about here, this is based on something called the Dreyfus model). But in my 8 years, I’ve learned a great deal what to do and especially what not to do in order to grow professionally. Here are some of my insights.

Take control

As a starting professional, you’re still considered a novice or advanced beginner for most aspects of your job. However, you need to take control from day one and strive to become better in those aspects. You can’t expect anyone else to do it for you, so you need to take control from day one. Under no circumstances, surrender control of your career to someone else. Some companies provide a career path. You can use this path as a guide, but treat this path as something set in stone. If you feel that the route it taking you down a path you don’t want to go, take control and change directions. This also means that when you feel like your career is going nowhere and there aren’t any improvement possibilities on the horizon you need to take control and start looking for a career that provides those.

Be a group person

We’re in an industry where it’s fairly easy to ‘go solo’. Many projects start out as solo project, but only a few of those end succesfully that way. Learn to work in a group and learn to communicate to other people. You’ll learn so much more in a group than you would alone. Also, actively search for contacts that will make you a better professional. Attend conferences and talk to the people there or even better, host a presentation. Join a user group. The bigger the group of competent people around you, the more chances you have at knowledge transfer.

Get noticed

Getting feedback is extremely important in professional development. But in order to get meaningful feedback, you need to get noticed first by people with more knowledge that you have. If you live your entire professional career in a cubicle, you won’t learn much. Start writing stuff, do presentations and start working on an open source product. Just make sure the attention you’re getting is because of the right reasons: getting singled out because you crashed the production server is not the right way to get noticed.

Coach

If you follow the 2 things I mentioned above, chances are you’re already coaching someone. There’s nothing as rewarding as teaching others. It’s hard to do right and it takes a lot of skill to teach others. But not only the ones you coach will be better off, so will you. The best way to learn is by teaching others. Sounds counterintuitive, but it really is. Also, by coaching others you will present yourself as a team player and perhaps as a team leader, something that may benefit your further down the road. But coaching shouldn’t be limited to person to person. Coaching can also be done in a group, like brown bag sessions. Just be careful in that case that the session has a learning motive and isn’t just a simple informative session and more importantly, is highly interactive.

Aspire to grow and learn

A wise man once said to me: the day you stop learning should be the day you die. In other words, never stop learning, especially in software development. We live in a fast paced world and you have two choices: you learn and grow or you fall behind. Read books, try out new technologies, share your experiences with your colleagues. The fun thing about learning new things is that you sometimes rediscover what your current goals are. My goals today are not what they were a couple of years ago and my path has taken me places I never thought possible just by constantly learning new things.

Embrace failure and keep moving forward

Let me assure you: you will fail sometimes. However, when you fail, the trick is not crawling up in a hole, feeling sorry for yourself. Try to find out where you went wrong and how you can learn from that experience. Don’t think too long about your failure and look ahead to the future. Good software engineers always fail at least once. From failure you learn, from success… not so much. Great engineers are hallmarked by their ability to bounce back up after one or more failures. Never be afraid to try out new things.

Write down ideas

This is one I learned this year after reading Pragmatic Thinking and Learning. I now always carry a small notebook and a ballpen or pencil. The trick is to write down an idea when you get it. Most of the time you get ideas on the worst possible moment. Writing them down enables you to defer thinking about your idea, but with the assurance you won’t lose the idea. Ideas are the bread and butter of our industry and you’ll write down a lot of useless ideas. But every now and then you’ll have a great one. Having a pen and paper at all times makes sure you won’t lose that idea.

Have a great career everyone!

Comments