I will be presenting [TS9518] on the subject as part of the LabVIEW Champions Track at NIWeek 2016 on Wednesday, August 3 in room 15 (don't miss other Champion’s presentations in the same room as well). An alternative title is Writing Better Code Faster.
This is a substantially improved version of the presentation I gave at the CLA-E Summit in Rome (April 2015) – you may want to join in even if you saw the old one. As had been mentioned in the NIWeek Speaker Training Course “… most of us need to hear something 6 to 7 times before we remember”
I am passionate about bringing contemporary SW Development Methods to the LabVIEW community. This presentation purpose is to demonstrate how applying SOLID Design Principles can result in leaner and more scalable SW designs and code. I will hand you a map and show the trailhead, but walking that trail is a personal journey and no one can do it for you. Getting to the summit takes time and effort - but the views are well worth it
On a serious note - learning how to write better code faster will help you stay relevant as SW Developers and make LabVIEW Ecosystem a better place …
I’ve set a humble goal for this presentation – 20% of attendees getting the Agile Software Development book by Robert C. Martin and half of those to start reading it before the next New Year Resolution season …
I would greatly appreciate your feedback (and a quick note from those who got the book and/or started working on it) to this thread.
TS9518 References & Resources
General SOLID Resources
 Agile Software Development, Robert C. Martin, Prentice Hall, 2003
 Inversion of Control Containers and the Dependency Injection Pattern, Martin Fowler, 2004
 Dependency Injection, wikipedia.org
 UML Distilled, Third Edition, Martin Fowler, Addison-Wesley, 2004
LabVIEW SOLID Resources
 On Using Dependency Inversion, Dmitry Sagatelyan, CLA Summit 2014, Austin
 Going Agile: How Applying Agile SW Design Principles Changed My Designs and Code, Dmitry Sagatelyan, CLA Summit 2015, Rome
 Computer Science for the G Programmer, Year 1, Stephen Loftus-Mercer, Jon McBee, NIWeek 2014
 Computer Science for the G Programmer, Year 2, Stephen Loftus-Mercer, Jon McBee, NIWeek 2015
 Principles of Package Design, Jon McBee, CLA Summit 2016, Austin
SOLID Design Examples
 Actor Programming without an Actor Framework, Dmitry Sagatelyan, CLA Summit 2015, Austin
 Error Handling for LabVIEW Architects, Dmitry Sagatelyan, CLA Summit 2016, Berlin
 HALitosis : Quit Writing HAL (Hardware Abstraction Layer) That Stink !, Norm Kirchner, CLA Summit 2015, Austin
Message was edited by: Dmitry
Added Presentation Slides
This is one of my favourite books (well, the C# edition updated by his son anyway). But given I have had it for several years I don't think you can count me in the 20%
I do not have the Clean Code book, but based on Contents Section I see that it covers different issues (clean coding) and does not mention Agile OO Design Principles. There is also a The Clean Coder book (A code of Conduct for Professional Programmers) - a fun reading mostly about personal values, team dynamics, etc.
There is also a book Agile Principles, Patterns, and Practices in C# by Uncle Bob and his son. It is a superset of the original book (730 pages instead of 520 pages) with substantially more (C#) examples covered to greater depth. Personally, I prefer the original book because I do LabVIEW and do not care much about how things are done in C# ...
I have clean code and enjoyed it very much. Looks like getting the agile
book would be beneficial.
I enjoyed your presentation at Ni week.
Dan Shangraw, P.E.
Certified LabVIEW Developer
Certified LabVIEW Instructor
Automated Software Technology
I enjoyed Section 1 of the book - Count me in your categories of book purchased and started by 2017. - Thanks!
I saw your presentation at NIWeek 2016 and found it very interesting. It brought up issues about my code that I knew existed but which I did not know exactly how to address.
I have just spent a couple of hours playing with a UML diagram trying to figure out the best way to implement multiple interfaces for a single object thinking terms of SOLID and I realized that I have been shown a path but I have not walked it yet. So, I just ordered the book "Agile Software Development" by Robert C. Martin.