administration mode
Pssst...Ferdy is the creator of JungleDragon, an awesome wildlife community. Visit JungleDragon

 

Article: Learning strategies for developers »

FERDY CHRISTANT - JAN 4, 2007 (07:47:51 PM)

   

It is uncommon for me to write a "soft" article, one not discussing technology or software. Still, my own personal challenges triggered me to write the following.

Ever since I was in the software development industry, I have tried to keep up with new developments. I still do this today. However, as I'm getting older, it is getting harder and harder to combine the educational part with my other responsibilities. Through this article, I will tell you how I manage it all, or at least how I try to. I hope you can use some of these tips to your own benefit. 

I'll go through some tips in random order, and explain how I apply them. Note that I do not follow these principles all the time, but I know that I should. Even by following only 80% of these guidelines, you will most likely boost your own growth.

Acceptance

The first thing to do is to accept that you continuously need to learn. Consider it part of your destiny. Accept that it is not optional, and that your future income is at stake. This will help in dealing with the sacrifices that you need to make later. Speaking of destiny, at one point you will have to make some important decisions:

  • Will I continue to be in this industry in the long term? Do I want to?
  • If so, is it my passion or solely a provider of income?

These decisions affect your learning strategy dramatically. I personally want to be in this industry in the long term, and I surely am passionate about it, and do not want to be mediocre. Given the fierce global competition, my reality is that I have intense educational needs. Continuously. I need a strategy.

What to learn

This is a complex puzzle. There is so much out there to learn, and only so little time to do it. You will need to make choices. I solved the puzzle as follow. First, I split my learning needs in two parts: professional needs and personal needs. The professional needs I consider the most important. I have bills to pay, if I can't, I cannot continue my way of living. Personal needs I consider important as well, but are mostly targetted towards fun and the expression of creativity.

To decide on your professional needs, you need to have some insight in the job market in your environment. Do your current skills suffice to provide an income in the next years? Also, you need to be aware of market movements. If it is clear that a particular skill is in demand the coming years, you can decide to invest in it now.
With your personal needs, it is wise to also follow market movements and trends. This way you can combine the fun factor with something useful for the future.

In my case: I have solid Lotus Notes and Domino skills. In my country I can continue to work with this technology for a living in the coming years.  Still, other platforms, such as .Net are rapidly growing in popularity. Therefore, for my professional needs, I will learn .Net. I also noticed the rise of the web scripting languages, such as PHP and Ruby. Therefore, in my personal needs I will learn those. I consider them fun, and maybe one day I can make use of them professionally.

Note that despite these choices, you should continue to monitor other segments of the market. J2EE is not part of my learning strategy, but at all times I know what is going on in that community. How? Simply by subscribing myself to the most important web feeds, and reading about it almost daily.

Getting out of the comfort zone

It is common practice for professionals to specialize themselves in a certain technology, but there is also a hidden danger in it. Even when the technology provides you a solid income, and an outlook of years of demand for it exists. The danger is that the market decides on the destiny of the technology, not you. We all know how fast our market moves. Furthermore, the technology vendor you depend on has a strategy, and most likely it is to make money, not to provide you a job. See the conflict? 

So, how to get out of the comfort zone? I will get into that later, but one clear sign that you are out of your comfort zone is: pain. No pain, no gain. It can be hard to learn new stuff. It takes a lot of effort, practice and dedication. If your head hurts after studying or practicing, well done. You're growing. At the same time, learning new stuff can also be joyful, refreshing and inspiring. Even still, it will not make your head hurt less.

Get real, and get over it

You can fool everybody else, but not yourself. How good are you really at what you do? How many good things have you come up with yourself, not relying on others? Do not make the error of comparing your skills with your office buddy. Instead, compare it with an entire community. Do you lead, or follow? It is key that you know what you do not know.

Be open minded

Our industry is full with technology enthusiasts, and many of them defend their technology choice passionately. Do not waste your time doing this, unless you can directly affect the outcome. There is no best technology, there's only choices. Before you decide to hate a technology, or the company associated with it, at least know what you're talking about. Participating in the technology flame wars is a waste of time, your credibility, and limits your choices. Once you're skilled in multiple platforms, your need to defend one of them will vanish.

Learning from others

For somebody to become a good software developer, years and years of dedication are required. What better way then to take a shortcut and learn the best practices from the start? On my first job, I was working in a department with a few senior developers. Instead of bugging these guys with continuous questioning, I got access to their code and analyzed it. The quality of the code was much better than mine, and I quickly discovered why. I started to understand and apply the differences in my own code and became a better developer. It felt like taking a shortcut, and that is exactly what it is. I cannot imagine a faster way to learn than to learn from others.

A word of warning applies. Do not rely on a single example. That way you may learn things the wrong way. Instead, use code of multiple co-developers and public code to learn from others.

Practice, or you will not understand

I'm subscribed to dozens of web feeds covering multiple technologies. I spend at least an hour a day reading them. This routine improves my knowledge, but not my skills. The only true way to improve my skills is to practice. With limited time available, it is important to pick the most important aspect to practice. I am a certified Java developer, but since I have not practiced it for the last two years, I know that I do not truly have those skills. However, last year I did lots of PHP coding for some personal projects. I acquired my PHP skills though practice. Practice is the most time-consuming aspect of learning, but also the most benefitial one.

Prove your knowledge and skills

I am still surprised how many developers do not care about their certifications. They posses the skills, yet not the proof. This is foolish. A piece of paper means nothing to your peers, but it does matter for your (future) job. Out of two candidates with equal experience, the one with proof of their skills wins. Take that last step and go for the exam. I usually try to acquire two new certificates each year. The extra effort of studying for the exams is neglectibe. As a result, years later I now behold 15 certificates. I'm not saying this to show off, there are lots of people with the same or better skills, but relatively few with such proof of it in my age group.

The other way to prove your skills is your track record at your customers. Since this builds up automatically, I will not give it much attention here. The importance is evident though.

Finally, my personal favorite: have a portfolio. It is wise to have your own web site or blog. Employers will look at this more and more. Even better, make your hobby projects public, much like I did with the s3maphor3.org site. Since your code is public, you have proven your skills.

Patience and persistence

One crucial aspect in the learning process is to be humble, patient and persistent. Rome was not build in one day, and it is ok to screw up. Every developer is familiar with the scenario where you spend hours and hours troubleshooting a problem, only to find out it was the misplacement of a single character. Stupid you. Not so, you are being persistent in solving a problem and learning, and you will never forget about the mistake you made. While you think you are wasting time, most others made zero progress. They came home, had dinner and watched TV.

Persistence, combined with frequent short practice sessions over a long period guarantee your growth.  You may not notice it, since the daily growth is so slight, but your environment will notice. Persistence and patience are your friends. Never give up.

Time management

On to the most challenging part. Depending on your specific learning needs, you will need time to spend on it. Most likely, it will be a lot of time. Step one is to convince yourself that you really need the time. Step two is to convince your environment of it. Step two becomes much easier once you realize that this concerns your future income. It concerns the future of the familiy. If you're like me, you can also explain that this is you, the profession that you chose, the passion that defines you. How can someone else possibly deny you this time, given its importance?

The "get real" concept applies here as well. Nowadays everybody seems to be on the fast train, claiming they do not have time. It's trendy and makes them feel important and productive.  In reality, they probably spend dozens of hours a week being in front of the TV. Everybody has time. Everybody. You have control over the majority of your free time. They don't call it free time for nothing.

Realistically, time management can be challenging indeed. I personally combine frequent short daily sessions (to learn) with infrequent, long, full-day sessions (to practice). And yes, I have a life.

Distractions

As stated, learning can be hard. It requires focus. It is tempting to get distracted in the comfort of your own home. How to setup a focused environment differs for everybody, but here is how I do it.

First, I prefer to be alone. In my current situation this is possible. See, learning can be received by others as a non-working activity that they are free to interrupt. To avoid this, I try to be alone in the house, or at least in the room. I set myself a time frame for the day, and stick to it, unless I have the freedom to continue longer. I prefer to be in a room that is slightly cold. It alerts me and keeps me focused. I like a gentle background noise, preferably upbeat electronic music. This brings a level of comfort, without the interruptions. There's a wealth of possibilities in creating the ultimate learning environment, but I'll leave that up to you.

Learn to love it

When I started in this industry, I hated the idea of spending unpaid time. Over the years I made a 180 degree turn. It is now part of my routine and I love it. I actually look forward to my practice sessions, they're an outlet of creativity and make me feel productive and valuable. There's no secret in how to accomplish this affect. You simply need to make the whole learning and practicing part of your routine. Once it is in your routine, continuous growth is on auto pilot.

Take pride in your accomplishments

It is ok to be proud of yourself once you accomplished something, no matter how small. During my first job, I wrote software and a manual that drastically improved the software development thoughput time of the team, by maximizing software reuse. It was not my job to do so, it was born out of my own frustration and done in my own time. It got me my current job. I cherish the product that I then delivered, even though it is highly irrelevant today. I have it printed in a nice booklet in my personal archive, that I intend to keep forever.

The point: it is ok to look back and take pride in your accomplishments. It will empower you to take on new goals and achieve them equally well. Over time, you will build up a great track record of high quality deliverables, whether it is a certificate or piece of software. These are deliverables to yourself, not others. Since you will not want to break such a great track record to yourself, you will try extra hard to maintain it. And there you have it: continuous learning and improvement has become part of your life.

Conclusion

I'm no psychologist or personal improvement coach. Still, I hope that my tips and attitude towards learning inspire others. My own reality is that I am not able to follow all the above principles all the time, but I do try. So far, I consider it to be a successful approach. I have turned learning from a sacrifice into a joy.

Share |

Comments: 14
Reviews: 10
Average rating: rating
Highest rating: 5
Lowest rating: 3

COMMENT: LOVRO

JAN 4, 11:12:01 PM

comment » Nicely summed up. Respect! «

COMMENT: SENTHIL KUMAR emailhomepagerating

JAN 6, 09:18:37 AM

comment » Very nice article neatly presented. Need to read this everyday and hence created a folder "OnceMore" and bookmarked it there.

Good things comes at the start of the year 18

And most of the said things are completely true at least to me. I read many Lotus related blogs and all i am gaining is only the Knowledge but only when i practice i will get the necessary skills. While i knew this, i am not able to spend time practicing or working on the code on a daily basis.

I also liked the concept of Open Minded. I take some time in doing technology related wars with colleagues defending Lotus and thrashing MS. As rightly put, if i don't have any hands in the outcome then its waste of time discussing who is better.

Thanks much Ferdy for this wonderful article. Will treasure it for many days to come :)

Happy Holidays @ Amsterdam. Cheers «

COMMENT: FERDY

JAN 7, 01:32:47 PM

comment » Thanks guys, I appreciate the compliments! «

COMMENT: LIONEL emailhomepagerating

JAN 16, 01:52:58 AM

comment » Hi Ferdy, this is an excellent article.

Thank you,

Lionel «

COMMENT: DILEEP SHARMA emailrating

JAN 16, 02:55:15 AM

comment » Hi Ferdy,

This is a perfect article, an outcome of the experience and maturity that you have gained over time in software industry. You have been successful articulating all the aspects of learning approaches. I wish you keep on sharing such pieces, out of a perfectionist mind. Waiting for some more experience sharings in the offing.

Thanks,

Dileep «

COMMENT: NITIN CHASWAL rating

NOV 20, 05:47:59 AM

comment » Well that was really an eye opener...... love it... «

COMMENT: CHUCK rating

APR 15, 2008 - 01:49:21 PM

comment » Ferdy,

This was an excellent article, especially for someone like myself who is 26 and is a beginning programmer. I didn't have formal schooling in Computer Science and received a different degree. I am now going back to receive a computer science degree and am learning .NET in my free time. I appreciate the time you put into this as it puts a lot of things into perspective for me. «

COMMENT: JOE BLOW rating

MAY 5, 2008 - 01:45:03 AM

comment » Good stuff.

Consider also that you'll get farther ahead learning to communicate effectively than by piling on yet another certification.

As a case in point, most companies would consider your article an embarrassment because of its abuse of the language. As a hiring manager, I can tell you that if a candidate writes or speaks poorly, their little portfolio of certifications mean nothing. No one works alone, and only the lowest serfs are not required to perform some form of persuasive communication. «

COMMENT: FERDY

MAY 5, 2008 - 10:24:42 AM

comment » Joe,

Thanks for taking the time to respond. I agree with you that merely a set of certifications alone is not indicator at all for a person's skill level. I do think, as outlined in the article, that acquiring them is better than not acquiring them if you're learning something new anyway. Whilst the importance of non-technical skills such as communication and teamwork is evident, it is somewhat out of scope for this article. Instead, this article focuses on how developers can effectively keep up with technology.

I'm not sure what you're trying to say when you think that most companies would call my article an embarrassment? I am very open towards criticism but am simply curious to know what you mean with it, and where I am "abusing the language"? «

COMMENT: WILLEM SOUWER emailrating

NOV 4, 2008 - 10:15:04

comment » Ferdy,

as a developer with only 16 years of IT job experience ;-) I can only say that your arguments constitute a clear, concise and certainly persuasive summary of what I have learned about acquiring and maintaining one's personal skill set in this industry. I appreciate your investing your personal time to write this article, in order to share your know-how, very much and will of course circulate it amongst my coworkers.

@"Joe Blow" : whatever prompted this entirely unwarranted outburst is beyond me; to be more precise, any company that hopes to recruit competent developers, would be well advised to get rid of such "hiring managers". «

COMMENT: FERDY

NOV 5, 2008 - 10:25:50 AM

comment » Willem,

Thank you for your kind words, I appreciate it. And don't worry, unreasonable comments like those from Joe Blow are part of running a public blog. «

COMMENT: RISHI rating

MAY 15, 2009 - 02:46:33 AM

comment » Good one Fredy.. «

COMMENT: NUR emailrating

JAN 15, 2010 - 03:33:05 AM

comment » A two-years old article, but I'm glad that I found this now.

I'm currently studying in Japanese for Master degree in Computer Science, and my time has spent much on learning the language itself -- you know that Japanese has its own alphabets (kanji-hiragana-katakana) - not to mention the vocabs, grammars, etc etc -- that I feel there's no time anymore to upgrade my own computer-science related skills and knowledge.

I really need to rebuild my thinking frame, and rewrite the time management plan. Thank you for the encouragement from your article. «

COMMENT: MIKE emailrating

MAR 19, 2010 - 12:38:00

comment » Thumbs up!! I cant wait to read your other articles. You have showed us the way its now up to us to do it.

Thanks for such a beautiful article. «

RATE THIS CONTENT (OPTIONAL)
Was this document useful to you?
 
rating Awesome
rating Good
rating Average
rating Poor
rating Useless
CREATE A NEW COMMENT
required field
required field HTML is not allowed. Hyperlinks will automatically be converted.