{"id":230,"date":"2012-06-05T18:07:36","date_gmt":"2012-06-05T17:07:36","guid":{"rendered":"http:\/\/www.michaelokarimia.com\/blog\/?p=230"},"modified":"2012-06-08T14:24:57","modified_gmt":"2012-06-08T13:24:57","slug":"recommend-reading-programming-books-for-c-web-development","status":"publish","type":"post","link":"https:\/\/www.michaelokarimia.com\/blog\/2012\/06\/05\/recommend-reading-programming-books-for-c-web-development\/","title":{"rendered":"Recommend reading: Programming Books for C# web development"},"content":{"rendered":"<p>The best software book that I&#8217;ve read is undoubtedly <a href=\"http:\/\/www.amazon.co.uk\/gp\/product\/0132350882\/ref=as_li_tf_tl?ie=UTF8&#038;tag=michaokaricom-21&#038;linkCode=as2&#038;camp=1634&#038;creative=6738&#038;creativeASIN=0132350882\">Clean Code: A Handbook of Agile Software Craftsmanship (Robert C. Martin)<\/a><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.assoc-amazon.co.uk\/e\/ir?t=michaokaricom-21&#038;l=as2&#038;o=2&#038;a=0132350882\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\" \/>, which changed my approach to programming entirely. Bob Martin&#8217;s highly readable examples really push home the <a href=\"http:\/\/en.wikipedia.org\/wiki\/SOLID_%28object-oriented_design%29\">strength&#8217;s of SOLID design principles<\/a>, without being too abstract or dry unlike <a href=\"http:\/\/www.amazon.co.uk\/gp\/product\/0201633612\/ref=as_li_ss_tl?ie=UTF8&#038;tag=michaokaricom-21&#038;linkCode=as2&#038;camp=1634&#038;creative=19450&#038;creativeASIN=0201633612\">the original Gang of four Design patterns book<\/a><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.assoc-amazon.co.uk\/e\/ir?t=michaokaricom-21&#038;l=as2&#038;o=2&#038;a=0201633612\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\" \/><\/p>\n<p><a href=\"http:\/\/www.amazon.co.uk\/gp\/product\/0132350882\/ref=as_li_tf_il?ie=UTF8&#038;tag=michaokaricom-21&#038;linkCode=as2&#038;camp=1634&#038;creative=6738&#038;creativeASIN=0132350882\"><img decoding=\"async\" border=\"0\" src=\"http:\/\/ws.assoc-amazon.co.uk\/widgets\/q?_encoding=UTF8&#038;Format=_SL110_&#038;ASIN=0132350882&#038;MarketPlace=GB&#038;ID=AsinImage&#038;WS=1&#038;tag=michaokaricom-21&#038;ServiceVersion=20070822\" ><\/a><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.assoc-amazon.co.uk\/e\/ir?t=michaokaricom-21&#038;l=as2&#038;o=2&#038;a=0132350882\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\" \/><\/p>\n<p>His follow up book <a href=\"http:\/\/www.amazon.co.uk\/gp\/product\/0137081073\/ref=as_li_tf_tl?ie=UTF8&#038;tag=michaokaricom-21&#038;linkCode=as2&#038;camp=1634&#038;creative=6738&#038;creativeASIN=0137081073\">The Clean Coder<\/a><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.assoc-amazon.co.uk\/e\/ir?t=michaokaricom-21&#038;l=as2&#038;o=2&#038;a=0137081073\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\" \/> is worth a read, covering important &#8220;soft skills&#8221; that a good programmer should have in order to work with all stakeholders in a software project.<\/p>\n<p><a href=\"http:\/\/www.amazon.co.uk\/gp\/product\/0137081073\/ref=as_li_tf_il?ie=UTF8&#038;tag=michaokaricom-21&#038;linkCode=as2&#038;camp=1634&#038;creative=6738&#038;creativeASIN=0137081073\"><img decoding=\"async\" border=\"0\" src=\"http:\/\/ws.assoc-amazon.co.uk\/widgets\/q?_encoding=UTF8&#038;Format=_SL110_&#038;ASIN=0137081073&#038;MarketPlace=GB&#038;ID=AsinImage&#038;WS=1&#038;tag=michaokaricom-21&#038;ServiceVersion=20070822\" ><\/a><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.assoc-amazon.co.uk\/e\/ir?t=michaokaricom-21&#038;l=as2&#038;o=2&#038;a=0137081073\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\" \/><\/p>\n<p><a href=\"http:\/\/www.amazon.co.uk\/gp\/product\/0321658701\/ref=as_li_tf_tl?ie=UTF8&#038;tag=michaokaricom-21&#038;linkCode=as2&#038;camp=1634&#038;creative=6738&#038;creativeASIN=0321658701\">Effective C#: 50 Specific Ways to Improve Your C#<\/a><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.assoc-amazon.co.uk\/e\/ir?t=michaokaricom-21&#038;l=as2&#038;o=2&#038;a=0321658701\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\" \/> provides a plethora of C# idioms and techniques, and importantly it shows the reader when to use them correctly and when their use is *not* appropriate. I discovered many efficient ways of writing code and I felt obliged to revisit some recently written code to apply my newly found knowledge. <\/p>\n<p><a href=\"http:\/\/www.amazon.co.uk\/gp\/product\/0321658701\/ref=as_li_tf_il?ie=UTF8&#038;tag=michaokaricom-21&#038;linkCode=as2&#038;camp=1634&#038;creative=6738&#038;creativeASIN=0321658701\"><img decoding=\"async\" border=\"0\" src=\"http:\/\/ws.assoc-amazon.co.uk\/widgets\/q?_encoding=UTF8&#038;Format=_SL110_&#038;ASIN=0321658701&#038;MarketPlace=GB&#038;ID=AsinImage&#038;WS=1&#038;tag=michaokaricom-21&#038;ServiceVersion=20070822\" ><\/a><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.assoc-amazon.co.uk\/e\/ir?t=michaokaricom-21&#038;l=as2&#038;o=2&#038;a=0321658701\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\" \/><\/p>\n<p><a href=\"http:\/\/www.amazon.co.uk\/gp\/product\/0596007124\/ref=as_li_tf_tl?ie=UTF8&#038;tag=michaokaricom-21&#038;linkCode=as2&#038;camp=1634&#038;creative=6738&#038;creativeASIN=0596007124\">Head First Design Patterns<\/a><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.assoc-amazon.co.uk\/e\/ir?t=michaokaricom-21&#038;l=as2&#038;o=2&#038;a=0596007124\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\" \/> makes for a great way to become familiar with design patterns and understand the correct circumstances to use them. All the code examples in this book are in Java. Given that I started learning Java at university I&#8217;ve had little trouble applying the patterns in C#, as they are quite similar languages.  I find that I revisit the book to refresh my memory, so it will serve you well as a reference book.<\/p>\n<p><a href=\"http:\/\/www.amazon.co.uk\/gp\/product\/0596007124\/ref=as_li_tf_il?ie=UTF8&#038;tag=michaokaricom-21&#038;linkCode=as2&#038;camp=1634&#038;creative=6738&#038;creativeASIN=0596007124\"><img decoding=\"async\" border=\"0\" src=\"http:\/\/ws.assoc-amazon.co.uk\/widgets\/q?_encoding=UTF8&#038;Format=_SL110_&#038;ASIN=0596007124&#038;MarketPlace=GB&#038;ID=AsinImage&#038;WS=1&#038;tag=michaokaricom-21&#038;ServiceVersion=20070822\" ><\/a><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.assoc-amazon.co.uk\/e\/ir?t=michaokaricom-21&#038;l=as2&#038;o=2&#038;a=0596007124\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\" \/><\/p>\n<p>I was lucky to be recommended <a href=\"http:\/\/www.amazon.co.uk\/gp\/product\/1590596242\/ref=as_li_ss_tl?ie=UTF8&#038;tag=michaokaricom-21&#038;linkCode=as2&#038;camp=1634&#038;creative=19450&#038;creativeASIN=1590596242\">The Career Programmer: Guerilla Tactics for an Imperfect World<\/a><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.assoc-amazon.co.uk\/e\/ir?t=michaokaricom-21&#038;l=as2&#038;o=2&#038;a=1590596242\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\" \/> by a software professional before I actually started working in the commercial world of programming, so it has influenced my working practises from day one. Focussing on how to deliver software projects in environments that are hostile to efficient work, this book will guide you how to become a productive and valued developer and make your boss love you (or at least appreciate you!)<\/p>\n<p><a href=\"http:\/\/www.amazon.co.uk\/gp\/product\/1590596242\/ref=as_li_ss_il?ie=UTF8&#038;tag=michaokaricom-21&#038;linkCode=as2&#038;camp=1634&#038;creative=19450&#038;creativeASIN=1590596242\"><img decoding=\"async\" border=\"0\" src=\"http:\/\/ws.assoc-amazon.co.uk\/widgets\/q?_encoding=UTF8&#038;Format=_SL110_&#038;ASIN=1590596242&#038;MarketPlace=GB&#038;ID=AsinImage&#038;WS=1&#038;tag=michaokaricom-21&#038;ServiceVersion=20070822\" ><\/a><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.assoc-amazon.co.uk\/e\/ir?t=michaokaricom-21&#038;l=as2&#038;o=2&#038;a=1590596242\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\" \/><\/p>\n<p><a href=\"http:\/\/www.amazon.co.uk\/gp\/product\/0321503627\/ref=as_li_ss_tl?ie=UTF8&#038;tag=michaokaricom-21&#038;linkCode=as2&#038;camp=1634&#038;creative=19450&#038;creativeASIN=0321503627\">Growing Object-Oriented Software, Guided by Tests<\/a><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.assoc-amazon.co.uk\/e\/ir?t=michaokaricom-21&#038;l=as2&#038;o=2&#038;a=0321503627\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\" \/> is required reading if you intend to understand, appreciate, and get the best out of Test Driven Development.<\/p>\n<p><a href=\"http:\/\/www.amazon.co.uk\/gp\/product\/0321503627\/ref=as_li_ss_il?ie=UTF8&#038;tag=michaokaricom-21&#038;linkCode=as2&#038;camp=1634&#038;creative=19450&#038;creativeASIN=0321503627\"><img decoding=\"async\" border=\"0\" src=\"http:\/\/ws.assoc-amazon.co.uk\/widgets\/q?_encoding=UTF8&#038;Format=_SL110_&#038;ASIN=0321503627&#038;MarketPlace=GB&#038;ID=AsinImage&#038;WS=1&#038;tag=michaokaricom-21&#038;ServiceVersion=20070822\" ><\/a><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.assoc-amazon.co.uk\/e\/ir?t=michaokaricom-21&#038;l=as2&#038;o=2&#038;a=0321503627\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\" \/><\/p>\n<p>I have been fortunate to attend a training course by the author of <a href=\"http:\/\/www.amazon.co.uk\/gp\/product\/1617290084\/ref=as_li_ss_tl?ie=UTF8&#038;tag=michaokaricom-21&#038;linkCode=as2&#038;camp=1634&#038;creative=19450&#038;creativeASIN=1617290084\">Specification by Example: How Successful Teams Deliver the Right Software<\/a><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.assoc-amazon.co.uk\/e\/ir?t=michaokaricom-21&#038;l=as2&#038;o=2&#038;a=1617290084\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\" \/>, Gojko Adzic, when he came to my workplace. Although I&#8217;ve not yet read this book in its entirety (there is a copy on my desk) I can see it covers most of the topics I learnt in Gojko&#8217;s course. The implementation we chose as a result from the course was to <a href=\"http:\/\/blog.stevensanderson.com\/2010\/03\/03\/behavior-driven-development-bdd-with-specflow-and-aspnet-mvc\/\">use Specflow to write out our scenarios, as described on Steve Sanderson&#8217;s post<\/a><\/p>\n<p><a href=\"http:\/\/www.amazon.co.uk\/gp\/product\/1617290084\/ref=as_li_ss_il?ie=UTF8&#038;tag=michaokaricom-21&#038;linkCode=as2&#038;camp=1634&#038;creative=19450&#038;creativeASIN=1617290084\"><img decoding=\"async\" border=\"0\" src=\"http:\/\/ws.assoc-amazon.co.uk\/widgets\/q?_encoding=UTF8&#038;Format=_SL110_&#038;ASIN=1617290084&#038;MarketPlace=GB&#038;ID=AsinImage&#038;WS=1&#038;tag=michaokaricom-21&#038;ServiceVersion=20070822\" ><\/a><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.assoc-amazon.co.uk\/e\/ir?t=michaokaricom-21&#038;l=as2&#038;o=2&#038;a=1617290084\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\" \/><\/p>\n<p>Speaking of Steve Sanderson, anyone who wants to write MVC.net web applications<a href=\"http:\/\/www.amazon.co.uk\/gp\/product\/1430234040\/ref=as_li_ss_tl?ie=UTF8&#038;tag=michaokaricom-21&#038;linkCode=as2&#038;camp=1634&#038;creative=19450&#038;creativeASIN=1430234040\"> should read his book on the subject. Pro ASP.NET MVC 3 Framework 3rd Edition<\/a>. If it is like the MVC 2 edition that I&#8217;ve read, he&#8217;ll bring you up to speed with MVC and show the benefits over ASP.Net web forms. <\/p>\n<p><a href=\"http:\/\/www.amazon.co.uk\/gp\/product\/1430234040\/ref=as_li_ss_il?ie=UTF8&#038;tag=michaokaricom-21&#038;linkCode=as2&#038;camp=1634&#038;creative=19450&#038;creativeASIN=1430234040\"><img decoding=\"async\" border=\"0\" src=\"http:\/\/ws.assoc-amazon.co.uk\/widgets\/q?_encoding=UTF8&#038;Format=_SL110_&#038;ASIN=1430234040&#038;MarketPlace=GB&#038;ID=AsinImage&#038;WS=1&#038;tag=michaokaricom-21&#038;ServiceVersion=20070822\" ><\/a><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.assoc-amazon.co.uk\/e\/ir?t=michaokaricom-21&#038;l=as2&#038;o=2&#038;a=1430234040\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\" \/><\/p>\n<p><a href=\"http:\/\/www.amazon.co.uk\/gp\/product\/0735619670\/ref=as_li_tf_tl?ie=UTF8&#038;tag=michaokaricom-21&#038;linkCode=as2&#038;camp=1634&#038;creative=6738&#038;creativeASIN=0735619670\">Code Complete: A Practical Handbook of Software Construction<\/a><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.assoc-amazon.co.uk\/e\/ir?t=michaokaricom-21&#038;l=as2&#038;o=2&#038;a=0735619670\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\" \/> while I haven&#8217;t read it cover to cover unlike most of the books I&#8217;ve described above, it does have some useful knowledge tucked away, yet it lacks the succinctness of Clean Code<\/p>\n<p><a href=\"http:\/\/www.amazon.co.uk\/gp\/product\/0735619670\/ref=as_li_tf_il?ie=UTF8&#038;tag=michaokaricom-21&#038;linkCode=as2&#038;camp=1634&#038;creative=6738&#038;creativeASIN=0735619670\"><img decoding=\"async\" border=\"0\" src=\"http:\/\/ws.assoc-amazon.co.uk\/widgets\/q?_encoding=UTF8&#038;Format=_SL110_&#038;ASIN=0735619670&#038;MarketPlace=GB&#038;ID=AsinImage&#038;WS=1&#038;tag=michaokaricom-21&#038;ServiceVersion=20070822\" ><\/a><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.assoc-amazon.co.uk\/e\/ir?t=michaokaricom-21&#038;l=as2&#038;o=2&#038;a=0735619670\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\" \/><\/p>\n<p>Finally, I&#8217;m currently reading and enjoying <a href=\"http:\/\/www.amazon.co.uk\/gp\/product\/1935182501\/ref=as_li_ss_tl?ie=UTF8&#038;tag=michaokaricom-21&#038;linkCode=as2&#038;camp=1634&#038;creative=19450&#038;creativeASIN=1935182501\">Dependency Injection in .NET<\/a><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.assoc-amazon.co.uk\/e\/ir?t=michaokaricom-21&#038;l=as2&#038;o=2&#038;a=1935182501\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\" \/> which is a pattern that can be extensively using in the MVC framework. The code examples in the book model accurately what I&#8217;ve used in production sites, so the book gets my seal of approval.<\/p>\n<p><a href=\"http:\/\/www.amazon.co.uk\/gp\/product\/1935182501\/ref=as_li_ss_il?ie=UTF8&#038;tag=michaokaricom-21&#038;linkCode=as2&#038;camp=1634&#038;creative=19450&#038;creativeASIN=1935182501\"><img decoding=\"async\" border=\"0\" src=\"http:\/\/ws.assoc-amazon.co.uk\/widgets\/q?_encoding=UTF8&#038;Format=_SL110_&#038;ASIN=1935182501&#038;MarketPlace=GB&#038;ID=AsinImage&#038;WS=1&#038;tag=michaokaricom-21&#038;ServiceVersion=20070822\" ><\/a><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.assoc-amazon.co.uk\/e\/ir?t=michaokaricom-21&#038;l=as2&#038;o=2&#038;a=1935182501\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\" \/><\/p>\n<p>Do you have any suggestions? What do you think is should be essential in a web developer&#8217;s reading list? Leave a comment and let me know your thoughts<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The best software book that I&#8217;ve read is undoubtedly Clean Code: A Handbook of Agile Software Craftsmanship (Robert C. Martin), which changed my approach to programming entirely. Bob Martin&#8217;s highly readable examples really push home the strength&#8217;s of SOLID design principles, without being too abstract or dry unlike the original Gang of four Design patterns [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[25],"tags":[31,6],"class_list":["post-230","post","type-post","status-publish","format-standard","hentry","category-books","tag-books-2","tag-design-patterns"],"_links":{"self":[{"href":"https:\/\/www.michaelokarimia.com\/blog\/wp-json\/wp\/v2\/posts\/230","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.michaelokarimia.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.michaelokarimia.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.michaelokarimia.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.michaelokarimia.com\/blog\/wp-json\/wp\/v2\/comments?post=230"}],"version-history":[{"count":39,"href":"https:\/\/www.michaelokarimia.com\/blog\/wp-json\/wp\/v2\/posts\/230\/revisions"}],"predecessor-version":[{"id":391,"href":"https:\/\/www.michaelokarimia.com\/blog\/wp-json\/wp\/v2\/posts\/230\/revisions\/391"}],"wp:attachment":[{"href":"https:\/\/www.michaelokarimia.com\/blog\/wp-json\/wp\/v2\/media?parent=230"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.michaelokarimia.com\/blog\/wp-json\/wp\/v2\/categories?post=230"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.michaelokarimia.com\/blog\/wp-json\/wp\/v2\/tags?post=230"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}