New Community Website

Ordinarily, you'd be at the right spot, but we've recently launched a brand new community website... For the community, by the community.

Yay... Take Me to the Community!

The Community Blog is a personal opinion of community members and by no means the official standpoint of DNN Corp or DNN Platform. This is a place to express personal thoughts about DNNPlatform, the community and its ecosystem. Do you have useful information that you would like to share with the DNN Community in a featured article or blog? If so, please contact .

The use of the Community Blog is covered by our Community Blog Guidelines - please read before commenting or posting.

Software Development is a Craft

This post is cross-posted from my personal blog.

As Senior Architect for DNN Corp I get to be involved in interviewing candidates for developer positions within the company.  Thankfully, I don’t have any direct management responsibilities - its not what I enjoy - but I am asked to interview candidates to determine both their technical competence as well as to help determine whether they will fit with the team chemistry.

Many candidates come with glowing resumes - their list of skills and experience is excellent, but I have detected a disturbing trend - too many developers don’t appear to think of software development as a craft.  They list 5 yrs. of experience with .NET or 3 yrs. experience with JavaScript.  That looks like they might be excellent candidates, but when asked about such things as variable scope in JavaScript or Dependency Injection, they can’t answer these fairly simple techniques of our craft.

The problem is many companies when hiring focus on the tools of the trade - the technologies we use - like Web API, jQuery or C#, and forget about what makes a great developer - the techniques that we use to build great software.  And if companies focus on these easy to quantify items, its no wonder that developers focus on them in their resumes.

I like to make the analogy of a carpenter.  Sure a carpenter needs to know how to use his tools - can he hammer, can he use his saw, but for a craftsman the real test is does he know how to build a functional cabinet - and just as important does his work look good.  It’s the same thing with software, its not about how well you know the tools of the trade - the languages and frameworks, but do you know how to use them effectively - can you build or “craft” good software.

So if software is a craft how do we become good at our craft? And maybe, more importantly how do we remain good at our craft?

There are many ways to become good at our craft.  We need to learn and stay up to date with the latest patterns and practices, so reading blogs, taking courses, attending conferences are all good ways to keep up.  But, its not just enough to learn about the latest technologies - we also need to learn how to use them effectively.

One of my favorite software development resources is “Uncle” Bob Martin’s book on “Agile Principles, Patterns and Practices in C#” .  If you don’t know what the SOLID principles of object-oriented design are, then in my opinion, you shouldn’t be looking for Senior Developer positions.  Now I don’t necessarily expect you to know the acronym (SOLID) but if I ask you to tell me what Dependency-Inversion means then I expect you to be able to explain it to me.  If you are looking for a Senior Client-Side position and you tell me you have 5 years JavaScript experience - that’s great - but if I ask about variable scope and variable hoisting or the Revealing Module Design Pattern then I expect you to know about these fundamental patterns.

I know that I am as guilty as the next person - I often focus on the cool new technologies, and don’t spend enough time improving my craft.  But that is my New Year’s Resolution for 2014 - and part of that resolution is to blog more about Patterns and Practices than I have been doing. 

So come along for the ride!!  Lets all learn some great development practices together.


Garvit Halwasiya
The most important thing is skills not experience.

Having a good skills in a particular field can do wonders.

Well said. Software Development is a craft and I agree on that. We need to keep ourselves updated with the latest changes so that we can use it efficiently.

Very impressive article. I really enjoyed in reading it.
Garvit Halwasiya Tuesday, January 28, 2014 5:06 AM (link)

Comment Form

Only registered users may post comments.


Aderson Oliveira (22)
Alec Whittington (11)
Alessandra Daniels (3)
Alex Shirley (10)
Andrew Hoefling (3)
Andrew Nurse (30)
Andy Tryba (1)
Anthony Glenwright (5)
Antonio Chagoury (28)
Ash Prasad (37)
Ben Schmidt (1)
Benjamin Hermann (25)
Benoit Sarton (9)
Beth Firebaugh (12)
Bill Walker (36)
Bob Kruger (5)
Bogdan Litescu (1)
Brian Dukes (2)
Brice Snow (1)
Bruce Chapman (20)
Bryan Andrews (1)
cathal connolly (55)
Charles Nurse (163)
Chris Hammond (213)
Chris Paterra (55)
Clint Patterson (108)
Cuong Dang (21)
Daniel Bartholomew (2)
Daniel Mettler (181)
Daniel Valadas (48)
Dave Buckner (2)
David Poindexter (12)
David Rodriguez (3)
Dennis Shiao (1)
Doug Howell (11)
Erik van Ballegoij (30)
Ernst Peter Tamminga (80)
Francisco Perez Andres (17)
Geoff Barlow (12)
George Alatrash (12)
Gifford Watkins (3)
Gilles Le Pigocher (3)
Ian Robinson (7)
Israel Martinez (17)
Jan Blomquist (2)
Jan Jonas (3)
Jaspreet Bhatia (1)
Jenni Merrifield (6)
Joe Brinkman (274)
John Mitchell (1)
Jon Henning (14)
Jonathan Sheely (4)
Jordan Coopersmith (1)
Joseph Craig (2)
Kan Ma (1)
Keivan Beigi (3)
Kelly Ford (4)
Ken Grierson (10)
Kevin Schreiner (6)
Leigh Pointer (31)
Lorraine Young (60)
Malik Khan (1)
Matt Rutledge (2)
Matthias Schlomann (16)
Mauricio Márquez (5)
Michael Doxsey (7)
Michael Tobisch (3)
Michael Washington (202)
Miguel Gatmaytan (3)
Mike Horton (19)
Mitchel Sellers (40)
Nathan Rover (3)
Navin V Nagiah (14)
Néstor Sánchez (31)
Nik Kalyani (14)
Oliver Hine (1)
Patricio F. Salinas (1)
Patrick Ryan (1)
Peter Donker (54)
Philip Beadle (135)
Philipp Becker (4)
Richard Dumas (22)
Robert J Collins (5)
Roger Selwyn (8)
Ruben Lopez (1)
Ryan Martinez (1)
Sacha Trauwaen (1)
Salar Golestanian (4)
Sanjay Mehrotra (9)
Scott McCulloch (1)
Scott Schlesier (11)
Scott Wilkinson (3)
Scott Willhite (97)
Sebastian Leupold (80)
Shaun Walker (237)
Shawn Mehaffie (17)
Stefan Cullmann (12)
Stefan Kamphuis (12)
Steve Fabian (31)
Steven Fisher (1)
Tony Henrich (3)
Torsten Weggen (3)
Tycho de Waard (4)
Vicenç Masanas (27)
Vincent Nguyen (3)
Vitaly Kozadayev (6)
Will Morgenweck (40)
Will Strohl (180)
William Severance (5)
What is Liquid Content?
Find Out
What is Liquid Content?
Find Out
What is Liquid Content?
Find Out