Showing posts with label Personal Development. Show all posts
Showing posts with label Personal Development. Show all posts

Wednesday, May 13, 2009

Expecting More From Example Code

While I'm typing this post, I'm actually on vacation.  A road trip to a destination in hopes to relax and unwind from my daily routines.  However, I had to bring the laptop for informational purposes (of course).  On the road, I was thinking about some of the posts that I have created and also of those that I refer back to.  I also compared a lot of these posts against the increased visibility toward the S.O.L.I.D. principles of Object Oriented design.  The more I thought about it, the more I became inspired on the question of should people who read blogs and go to presentations expect more from the authors?

In my opinion, the presentations and the traditional style of technical blog posts are fine.  I feel like they teach a concentrated concept in a, hopefully, straight forward manner.  Some topics provide more practical implementation; however, how many times have you ran across a demo where the variables were only named Foo and Bar?  Presenting a concept is great and effective; however, should more be provided in the examples of in a supplemental post on how to apply the information "properly"?

For example, I wrote a post on using jQuery for different types of visual effects of your elements last year.  It was a very simple post with a moderate amount of code that focused on the topic and didn't deviate.  I, as the author, left it up to the reader to apply this knowledge into their own works.  What if I was to go 1 step further and do a live demo similar to blogs like Beckelman.net and JankoAtWarpSpeed.com?  Would that help push the concept better?  What if I supplied a zip file with files that apply the concepts learn in a more real-world scenario?  A lot of my more recent posts include VS projects; however, it is usually a direct reflection of the code inside of the post.  In that jQuery effects posts, I could have easily created a simple directory structure containing the proper files in a traditional/standard method (i.e. separating the CSS and JavaScript into their own directories, etc.).  With regards to my .Net posts, should I make sure that all of my code is commented? Refactored properly to meet the SOLID principles (sans my F# code due to it being functional and not oo)? Include Unit Tests?  I know a lot of people, including myself, who learned some skill by taking someone else's code and then tinkering and tweaking it to learn how things work based on their changes.  I'm wondering if more people would used Unit Testing or "proper" OO design if more of the example code in the blogsphere came with such.

I said earlier that presentations and the traditional blog post is fine as is.  The reason why I say this yet question the example code is that the extra stuff (i.e. Unit Tests, Full Comments, properly design class structures) can sometimes sidetrack the post or presentation.  Questions often rise about these ancillary items as opposed to the concept you are attempting to teach.  So, with that said, I still believe that the posts and presentations are fine.

Should we expect more from the Example Code?  In my opinion, yes.  I know I have a lot of work to do since adding such polish is time consuming; however, if it can assist in improving the overall quality of the code someone else uses, then it'd be worth it.

What do you think?  Should those of us that read blog posts and presentations expect more from the example code tied to such?  Should those of us that author posts provide a more comprehensive look at their code in order to encourage better practices?

What do you think?


kick it on DotNetKicks.comShout it

Wednesday, November 19, 2008

Book Review: The Productive Programmer by Neal Ford

I'm going to do something a bit different than my normal posts and review a book I just finished reading.  I read a number of books each month and this will provide me an outlet of to point people to on some of my recommendations.

 

 

I don't know how I discovered The Productive Programmer by Neal Ford (O'Reilly Press 2008); however, I know that it was a great purchase.  The book covers various practices on how to become a more productive programmer through tips, tricks, and tools.  The book is split into two parts.  The first part really focuses on mechanics; how things are done and how they can be done better.  This section of the book focuses on a number of great recommendations for tools to use to make yourself faster as well as recommendations on good practices that make you faster or more automated.  The second part of the book is about the practices of programming.  This section focuses on refactoring tips, code analysis, metrics, and general philosophies.

 

The books is great for anyone who is looking to do their job better or make it easier by finding ways to remove the repetitive ceremony that we all encounter.  While the book is very Java and Ruby focused, he does point out a few examples in C# and tools specific to the .Net community as well.  He also draws on the philosophy that to truly know a subject, one should focus beyond their current problem domain to see how others address it.  I found very few items in this book that I couldn't find a counterpart in the .Net world or be able to translate it very easily.

 

Pros:

  • Easy to read
  • Very good tips starting at page 1
  • A large amount of small side notes drive key points home
  • Lots of examples

Cons:

  • Would like a larger variety of examples in different languages

 

If you are interested in finding out more about the book, please refer to the following links:

O'Reilly

Amazon.com

ProductiveProgrammer.com

Google Books

Neal Ford's Website



kick it on DotNetKicks.com

Saturday, October 25, 2008

Becoming More Than Just A Developer

A colleague of mine approached me the other day; wondering how he might be able to get out of the trend that he's found himself in.  The issue he approached me with was the fact that he's a tenured developer for his company and is often approached by his peers and managers to field questions and to help out when times are tough.  He has no issues with such; however, he finds himself drawn to newer technology than what he's working with on a daily basis and also loves helping people with their development questions.  In essence, he wants to become more than just the developer he is currently.  He wanted to know what he can do to expand his knowledge with new technology and project the information to others.

Like my friend, I had similar feelings in my job and career a while ago and looked at my options on how to branch out and grow outside of the mold that I found myself in.  Both of us wanted more than to come in to work, do our job, and then go home and do anything and everything.  In order to address my friends question, I decided to post some of the things that I would recommend based on my experience on going from a mind set of "just a developer" to acting on a desire to reach out and do more than code for a single company.

 

Finding Your Passion

So, you want to branch out and spread your wings.  Where do you start?  In order to answer this question, I have to ask: What are you passionate about?  The biggest advice that I can give to anyone looking to go beyond their daily developer routine is to know where your passions lie.  If you love designing applications, perhaps your passions surround UI designing or software architecture.  If your passion is a particular technology like Windows Workflow Foundation, perhaps focusing on such a technology, and similar ones, is your passion.  The reason why finding your passion is important is because you'll find yourself more motivated to follow through with various actions about such a topic.  Find your passion to find your subject matter.

 

Research Your Passion

Now that you have your passion identified, do a little research on it.  What are other people saying about your subject?  What resources are out there for you and others to learn about the subject?  If there are forums or a community around your subject matter, spend some time in there to see what everyone is saying about the subject.  While you're researching and tinkering with examples and such, don't be afraid to ask questions.  Everyone that learns something has questions about it at some time, and asking questions can yield to some good contacts and other opportunities (more on this later).

Something else to consider while researching your passion is to also look into attending local development user group sessions.  While the topics in question may not always be associated with your true passion, it does allow you to meet people, meet the organizers, and to somewhat get a feel for what others are looking for in such sessions.  Something else to keep a pulse on is the various development podcasts that exist.  These are invaluable since they can give you not only ideas but also lead you to new resources to expand your vision.

 

Finding a Starting Audience

Now that you have your subject matter that you are passionate about, who can you talk to about it?  There are many options with this.  You can, and probably already do, talk to your peers at work about this passion.  You probably talk about it more than you realize (I've been told that I do).  By talking to your peers you begin to generate a small buzz amongst your colleagues about what you're up to.  They may not know exactly what you're talking about all of the time; however, they know that it's important to you.

In addition to basic conversations with peers, you may find yourself in a position where a question that you asked is being asked again by a new community member or another person on a forum.  If you have the answer to the question, pipe up and share your knowledge.  Doing such will help others as well as help to build your confidence if you're concerned about giving the wrong information.  This also helps in showing others, including those that helped you, that you are learning the technology and enjoy it enough to help others with it.

 

Stepping Out of Your Comfort Zone

While everyone's comfort zone is different, taking a chance and changing things up a bit can be very beneficial to your desire of going beyond your typical routine.  One of the easiest ways to expand how your information and passion can be shared is to talk to your peers to see if they are open to the idea of spending their lunch hour learning about your subject.  Advise them to bring their lunch to the meeting and while everyone's eating, discuss your subject matter by providing some examples of such.  I'm not advocating "Death by Powerpoint" here since it's a sure-fire way to cause people anxiety about coming to your next one; however, having some key points to discuss and to show off the subject can help drive others to truly be interested in the topic.  From my own experience, I would recommend writing very little code on the fly and trying to keep the actual presentation to about 30-45 minutes to allow people time to get there and eat and to relax a bit since it IS their lunch hour.  If you keep doing these sessions (and you're presentation skills WILL get better if you listen to the feedback of your peers), you my find yourself presenting and helping out with different topics or even moving into "on the clock" training sessions that include more than just your immediate peers at the office. 

 

Personal Sites and Blogs

To go a step further, look towards getting a domain name and having a personal web site and/or blog.  If you want to start out small, there are a number of free blogging solutions out there (i.e. Blogger, Live Spaces, etc) where you can write about your experiences as you are learning about your passion more.  Make sure to publicize your blog and make it easy for people to subscribe to you.  The more you publicize the more people that you could possibly be helping.

 

Taking the Next Steps

At this point, the best thing I can suggest is to keep doing what has already been suggested.  Keep presenting to your peers and company, keep researching, keep answering questions, and keep getting involved.  After you feel confident in your skills with your passion, look towards possibly doing a presentation to your local developer's user group.  Seek out different user groups and events in other cities.  If you don't have a local group, look into possibly starting one.  Get involved in Twitter and other social web sites to connect to those that you have been following - you never know when they be begin looking in your direction.  As for the forums, if you are on there enough and build a good reputation, perhaps you may find yourself moving into a moderator position for that forum.  Eventually, your passions will lead to others as well and you'll be returning to researching and everything becomes cyclical. 

 

Conclusion

Nothing's wrong with being a developer and doing the typical coding, day in and day out.  However, if you are like my friend and myself, you may find your passion for coding transcends the code and you want to look into sharing your knowledge more.  If you're one of these individuals, I hope that some of these suggestions help you accomplish your goals and assist in voicing your passion.





kick it on DotNetKicks.com