Importance of a Personal Development Plan

August 20th, 2008

I first need to mention, this post is intended to be and interactive one as I will be posting a question to all the readers at the end, looking for some good feedback to help me with my training plan at work.

I am always amazed at the lack of personal responsibility many (the large majority) developers display.  Obviously skills that are learned act like building blocks and will carry you a long way.  The problem is that our industry is one of the most dynamic and rapid changing of any out there.  If you do not keep up with the ongoing industry innovations you can quickly find yourself being left behind and unmarketable.  It is nice when you work for a company that is training minded and helps develop their employees but that is not the norm, and even then you still need to make a personal effort to progress your development skills.  The only person that is going to truly look after your well being and future marketability is yourself. 

It has been interesting to observe over the past year or so how many open mid to senior level software engineer/developer positions are available.  Many of these positions have been open for quite some time too.  I have spoken to a few of these employers to ask how their recruiting efforts are going.  I consistently hear the same echo, we have plenty of applicants just not finding people with the skill set we are looking for. Sure enough, the skills they are looking for are technologies and methodologies that are relatively new to our industry.     

Some good news for the readers of this blog.  By the sole fact that you are reading this post means you are among the top 10% to 15% of developers who are actively engaged in developing your craft.  One of the departments I worked for had 68 software engineers.  Of that group I only knew of 9 (13%) that were active BLOG readers, attend user groups or local geek events,  frequently reviewed or read software books/journals/magazines,  earnestly downloaded and experiment with beta software just because they wanted to, not because you were required to, or was part of some open source project giving time to make something cool to better our industry.              

You can probably tell by now I am a strong advocate of employing people who are self motivated and will personally take charge of developing their skills.  I hire people for what they know not what I can teach them (entry level positions excluded from that). Unfortunately I still have to work with and manage the other 85% to 90% who need to be told what to do.        

NOW TO MY PLAN:

I changed companies several months back.  My new employer is training minded and very supportive, the unfortunate part is they have no formal training direction or requirements for the members of the IT department.  As one of the companies Solution Architects I am seeing huge discrepancies and lack of standards throughout our department.  One of the first things I want to implement is a mandatory book reading list.  There will be three (sounds like a good number) books that every engineer will be required to read and signed off on.  There will be an accompanying class/lab that goes along with each book to give some hands on reinforcement.

First Book:

Needs to target programming style and software construction.  I have already chosen this one, I could not think of anything better then  “Code Complete 2” by Steven McConnell, I am currently working on the class lab material for this book now.   I am hoping this book and accompanying lab material will help get the developers on the same page regarding software construction standards.                 

Second Book:

Will be on Design Patterns.  I have not solidified my choice here yet only the category.  There are lots of good titles to choice from here. Obviously there is the original design pattern book “Gang of Four” and newer pattern books like ”Head First Design Patterns”.  What are your thoughts here?

Third Book:

I have nothing slated here yet.

The question for you all is, if you were going to have three books with accompanying lab/presentation material which was going to be mandatory for all developers to read what would they be?  Like many corporations we are multi platform so the books do not necessarily need to target a particular language but we are striving to standardized most our systems/applications on the Microsoft development stack so .Net is going to be a big part of our future.       

Thanks

Scott Nichols

Scott Nichols

  • http://statestreetgang.net Will

    1) The first and most important book any .NET developer should own and have read through is CLR Via C#, by Jeffrey Richter. Its for version 2.0 of the CLR, so it doesn’t have any of the new frameworks included in it. But it does cover the absolute minimum you must know in order to develop .NET. Noobs should skip the initial couple of chapters; save ‘em for later.

    2) A book on LINQ. Not sure which one, as I haven’t read one yet. Data access is one of the three pillars of business software (UI, business logic, and data). Linq is the future of data access in .NET. Also, learning Linq is a good way to learn and understand lambdas, which the more you use the more you come to love and adore.

    3) Pro WPF in C# by Matt McDonald. Not only is WPF lightyears ahead of Windows Forms in terms of flexibility, ease of use and sheer awesomeness, but it is the birthplace of, what I believe, will be one of the most important parts of the .NET platform: XAML. Born in WPF, xaml is showing up in other frameworks. For example, Workflow Foundation uses xaml to serialize workflows (i.e., POCObject graphs) for editing and storage. You’ll begin to see more and more products using xaml to serialize objects for storage and design time, as people come to realize that xaml serialization for object graphs is much better than plain old xml and binary serialization.

  • http://www.alvinashcraft.com/2008/08/20/dew-drop-august-20-2008/ Dew Drop – August 20, 2008 | Alvin Ashcraft’s Morning Dew

    [...] Importance of a Personal Development Plan (Scott Nichols) – Link of the Day [...]

  • Andy

    If you require a design pattern book, you should (imho, of course) definitely take the “head first” one and not the “original” gof. It’s much more readable and gives better examples so your colleagues will get a much better impression of how to use each pattern and the patterns will stick much longer in their heads. In my opinion the original is quite academic and too abstract.

  • http://www.JeremyJarrell.com Jeremy Jarrell

    Even though Code Complete and the GoF patterns book are pretty much the standards, depending on the skill level of these guys you may want to start them out with some a little lighter.

    The Head First book is a good book for getting started with patterns, and the interactive feeling of the book would make it great for labs or a classroom setting.

    CodeComplete should definitely be read at some point, but I would start them out with Pragmatic Programmer. They don’t really address the same topics, but the Prag Pro will 1) open their eyes to everything they’re missing and 2) put a lot of things that McConnell talks about in Code Complete in more perspective.

    Something else you may want to try: on my team we keep a page on our wiki where people can post articles, links, podcasts etc that may be of general interest to the whole team. It lets everyone feel like they can contribute plus you can easily subscribe to an RSS feed to get updates on new posts from your teammates.

  • http://www.lazyinitialization.com Bradley Harris

    I would recommend Agile Software Development, Principles, Patterns, and Practices by Robert C. Martin (http://www.amazon.com/Software-Development-Principles-Patterns-Practices/dp/0135974445/) or the newer C# version (http://www.amazon.com/Principles-Patterns-Practices-Robert-Martin/dp/0131857258)

    When it comes to practices that I can apply regularly in my work I think I have learned more from that book than I have from the more established classics like Fowler’s Refactoring or the GoF’s Design Pattern’s. I know some people may be turned off or think it might not apply to them because it’s presented as an “Agile” book but I believe it has an awful lot to offer no matter what your engineering process is.

  • Jorge Diaz Tambley

    I read the Head First book on patterns before the GOF one and it was a great idea.

    Other mandatory books (IMHO) are:

    The mythical man month
    Peopleware
    The secrets of Consulting

    Regards

  • http://matthewbotos.com Matthew Botos

    Great idea, Scott. Few companies and even fewer senior technical people are taking the responsibility to mentor and grow their teams. As you note, a continuously improving team makes your job easier, and if you can sell the team that building their knowledge will make their jobs easier as well, people should jump on board.

    The labs are probably the most important; programming is really only learned by doing. If you could break it up into bite-sized junks, it would make a great just-in-time learning library. Frequently, people just want to learn enough to solve their current issue and return as needed. As Jeremy said, a wiki is also a good tool for capturing these small bits of knowledge.

  • Steve Sheldon

    1 for Head First design patterns book

    If your company is doing a lot of web development, I’d recommend some focus on HTML and/or CSS.

  • Rowan

    “Code Complete” is also my vote for #1. I particularly like Steve’s reasoned approach to any recommendations that he makes.

    The Heads First book on patterns also gets my vote. I find it more than just a good book on patterns: it is also an excellent book for learning the basics of ‘good’ object-oriented programming!

    I would start by workshopping these books as a start, then identifying weaknesses to be addressed by further books and/or training.

    Also, since it is your intention to address the company’s wide variances in standards, consider including programming tools in your overall brief. Tools such as FxCop & StyleCop – some continuous integration wouldn’t go amiss – tend to produce a major wake-up call … 8)

  • Neil

    I liked Practices of an Agile Developer, (and basically anything published by Pragmatic Programmers).

    Also, the free eBook, Foundations of Programming, is a great little read too.

  • http://www.andrewhanson.net Andrew

    Scott, I agree that we need to develop a personal development plan. But I think you missed the first set, which is defining what type of developer you want to develop into. Having a target drives your list and your training. You can see my full response to the “Nichols Personal Development Plan” here…http://www.andrewhanson.net/archive/2008/08/23/response-to-quotthe-nichols-personal-development-planquot.aspx

  • http://elegantcode.com Scott Nichols

    Very good point to bring up Andrew. Personalizing your development plan based on the direction you want to take your career is quit essential. I whole hardly agree with the post on your blog about this. In the situation I have at work we build and support all the apps e.g. web based, desktop clients and mobile. At this point the initial books are meant to be more general purpose that any developer will benefit from regardless of what presentation medium they are most comfortable with or language for that matter.

    Beyond this mandatory book list (no more than three) I will encourage the other developers to take their personal development seriously and continue to strive to make themselves better. Then help point them in the right direction in regard to bolstering their natural abilities and desires . For example, I have one person on our team that is really good with UI’s (any presentation medium) I would like that person to dive deep into WPF and Silverlight (become the XAML expert). We have another person who is really good with databases. I would like that person to dive deeper into all the new ADO.Net and access protocols i.e. LINQ/Lambda, Entity, ADO.Net Data Services, etc.

    In the perfect world there will be general requirements that all the developers on the team will be expected to know and then we will help various team members dive deeper into areas which we need expertise on and hopefully match up with their natural desires and strengths.

  • Phil Ledgerwood

    Another vote for the Head First over the GoF. I’d also second the idea of The Pragmatic Programmer being in there.

    As the person largely responsible for trying to catalyze my team’s personal development, The Pragmatic Programmer has been a great way to get discussions started on some foundational topics. I have a team with a very wide range of skill levels, and that book provides something that everyone can sort of hook into. Also, the sections and topics are divided into very small pieces that could easily be structured into a curriculum, or even just a daily lunchtime discussion.

    If you’d be willing to share it, I’d love to see what you come up with for your Code Complete curriculum, as I’d like to do something like that over here.

  • mike
  • http://haxrchick.blogspot.com abby, the hacker chick blog

    Definitely take a look at Bob Martin’s new book: Clean Code. It just came out and it is absolutely wonderful. Reminds me a lot of Code Complete – simple and yet oh-so-necessary advice we should all be following and, in typical Bob Martin style, extremely entertaining and enjoyable to read. If you can forgive the shameless self-promotion: http://haxrchick.blogspot.com/2008/08/clean-code.html

    I also have a question for you and the other readers… I agree it’s important that we keep up with new technologies, but what do we do when we’re not learning it at our companies? I asked a recruiter the other day how many companies are looking for WPF. “A LOT!!” he said, clearly excited that I might have experience with it, “have you worked with it?” he asked. I explained I was teaching myself in my spare time, going through some online training and developing my own app in it.

    “Oh” was his – clearly disappointed – response. The companies wanted people who had done it at professionally – at their jobs – not in their spare time. Now, I’m not convinced that this guy is a very good recruiter. But, the bias is real and, perhaps, understandable to some extent. How do we deal with this contradiction that companies want new skills that few other companies are working with – and, yet, they don’t give much credence to experience we’ve gained in our spare time. Perhaps THIS is why some of those positions with new technologies remain open for so long…

  • http://www.codenenterprises.com Marquette

    Scott,

    First off I would like to give you kudos for actually taking this approach.
    I have heard of several companies that say they are training minded, only to have it as an afterthought due to lack of direction, schedule conflicts, time crunches, or just continuously putting it off.

    As for the books I would recommend, Code Complete 2 is a great all-encompassing book but may take some time to get through.

    I also agree with Bradley’s suggestion on Agile Principles, Patterns, and Practices in C# by Martin C Rober, as the agile development methodology and extreme programming combination helps to overcome many of the current software development obstacles we are experiencing today.

    Last but not least, Head First Software Development by Dan Pilone has my vote. This book addresses several of the issues I am sure we have all witnessed and experienced first hand from requirements gathering to improving scheduling and time estimation (which I believe is a valuable skill for everyone to know, not just the project leads).

    One other suggestion would be to allow each individual to select a book on a new technology topic that interests them and write up how that technology could positively impact the organization.

  • http://blog.softwareontheside.com/ Mike

    I would completely agree with Code Complete and HFDP (esp over the GoF book… it’s a good follow up after reading HFDP though.) I’d also add the Pragmatic Programmer (which mike above also recommended). What we are doing at our company is reading some of these as a department (there are about a dozen developers) and discuss the reading each week (usually about a chapter). We’ve already gone through Code Complete, Prag Programmer and are working on HFDP right now. We’ll probably read something like Agile Principles, Patterns, and Practices in C# next.

  • http://pragprog.com/titles/ahptl Andy Hunt

    I’m glad to see all the pointers to Pragmatic Programmer, thanks! You might also be interested in my newest book, Pragmatic Thinking and Learning, which covers a lot of these sorts of topics.

    enjoy!

    /\ndy

  • http://www.pchenry.com PHenry

    Kudos on the blog entry, very well done! :> I too have worked many organizations who do not feel the need to help their employees excel in their careers. OH they all pay lip service to doing it, but when it comes to organizing, scheduling and paying for courses is when things fall apart.

    You picked two GREAT books. One thought, why not leave the last one up to the individual coder to pick? Instead of dictating, give them some freedom to pick something of their own interest, let it be TDD, Agile, UML, ASP.NET, what ever, but let them get jazzed up about something and give them an opportunity to show you their excitement.

    If I were to run my own R&D shop, I would start with your idea (and first two books), but then I would leave the third one up to them.

blog comments powered by Disqus