<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Schauderhaft &#187; books</title>
	<atom:link href="http://blog.schauderhaft.de/tag/books/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.schauderhaft.de</link>
	<description>Softwaredevelopment, Projectmanagement, Qualitymanagement and all things &#34;schauderhaft&#34;</description>
	<lastBuildDate>Sun, 22 Jan 2012 19:13:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Getting Started with Testing</title>
		<link>http://blog.schauderhaft.de/2011/07/31/getting-started-with-testing/</link>
		<comments>http://blog.schauderhaft.de/2011/07/31/getting-started-with-testing/#comments</comments>
		<pubDate>Sun, 31 Jul 2011 15:33:13 +0000</pubDate>
		<dc:creator>Jens Schauder</dc:creator>
				<category><![CDATA[Softwaredevelopment]]></category>
		<category><![CDATA[books]]></category>
		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://blog.schauderhaft.de/?p=868</guid>
		<description><![CDATA[In a recent article I described how important I consider the practice of Testing, especially in the form of TDD. Erik made a real good comment on that article: “Start learning how to test today” Do you have any good resources? “Most of the code we produce isn’t fizz buzz, but is concerned with GUIs [...]]]></description>
			<content:encoded><![CDATA[<p>In a recent article I described <a href="/2011/05/22/the-cost-of-testing-or-you-dont-know-what-you-are-missing/">how important I consider the practice of Testing</a>, especially in the form of TDD.</p>
<p>Erik made a <a href="/2011/05/22/the-cost-of-testing-or-you-dont-know-what-you-are-missing/comment-page-1/#comment-3903">real good comment</a> on that article:</p>
<blockquote><p>“Start learning how to test today”</p>
<p>Do you have any good resources?</p>
<p>“Most of the code we produce isn’t fizz buzz, but is concerned with GUIs and databases, both make testing hard and expensive. But these problems can be solved, so you can gain the benefit of TDD even for these cases.”</p>
<p>How?</p></blockquote>
<p>I&#8217;ll try to answer the first question today, the other one will have to wait.</p>
<p>TDD encourages good design (at least on the class level), because code that isn&#8217;t nice and modular is hard to test. Therefore I recommend as a first resource the best book I have read on that topic: <strong><a href="http://www.amazon.de/gp/product/B001GSTOAM/ref=as_li_ss_tl?ie=UTF8&amp;tag=schauderhafte-21&amp;linkCode=as2&amp;camp=1638&amp;creative=19454&amp;creativeASIN=B001GSTOAM">Clean Code: A Handbook of Agile Software Craftsmanship</a></strong> by Robert C. Martin also known as Uncle Bob. Actually you should as much stuff written by him as possible, e.g. his <a href="http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod">principles of OOD</a>. If you are into twitter you might <a href="https://twitter.com/#!/unclebobmartin">follow him there</a></p>
<p>There are plenty of books about testing, but I have to admit I wasn&#8217;t tremendously impressed by any of them. But they are still usefull.</p>
<p>A good introduction into TDD is <a href="http://www.amazon.de/gp/product/0321146530/ref=as_li_ss_tl?ie=UTF8&amp;tag=schauderhafte-21&amp;linkCode=as2&amp;camp=1638&amp;creative=19454&amp;creativeASIN=0321146530">Test Driven Development. By Example (Addison-Wesley Signature)</a> by Kent Beck. This book is for TDD beginners. Although the two examples he is working on through the book aren&#8217;t trivial they do have the appearance of examples and probably differ a lot from what you&#8217;ll find in real life. But in every topic you start with simplified tasks in order to get started. For this purpose I can recommend this book.</p>
<p>The first book I read on this topic is <a href="http://www.amazon.de/gp/product/1932394850/ref=as_li_ss_tl?ie=UTF8&amp;tag=schauderhafte-21&amp;linkCode=as2&amp;camp=1638&amp;creative=19454&amp;creativeASIN=1932394850">Test Driven: Practical TDD and Acceptance TDD for Java Developers</a> by Lasse Koskella. It starts with very simple stuff, but also covers things like acceptance tests and mocking frameworks. There is one tip from the book that I remember especially well: Don&#8217;t access thing like the system time directly, but use a simple service which implements a simple interface. If you do so you can stub/mock that service which helps tremendously when testing time dependent code. Without this, how are you planning to test that your code works correctly across the change from daylight savings time and back?</p>
<p>Possibly the best book about testing I read so far is <strong><a href="http://www.amazon.de/gp/product/B0017DQ8KU/ref=as_li_ss_tl?ie=UTF8&amp;tag=schauderhafte-21&amp;linkCode=as2&amp;camp=1638&amp;creative=19454&amp;creativeASIN=B0017DQ8KU">Working Effectively with Legacy Code</a> by Michael C. Feathers</strong> although it actually isn&#8217;t focused on testing in itself. He writes about legacy code which he defines as code without test. So I guess for many of us this is most of the code we are dealing with on a day to day basis. Most strategies he describes are about bringing convoluted code bases under tests. Very helpful, although I&#8217;d wish I&#8217;d never need these strategies. Although the code examples in the book are shortened to fit into a book you can &#8216;smell&#8217; the bad code found in real world projects.</p>
<p>Of course I haven&#8217;t read everything available about testing. So there is still stuff on my whish list, like for example <a href="http://www.amazon.de/gp/product/B002TIOYVW/ref=as_li_ss_tl?ie=UTF8&amp;tag=schauderhafte-21&amp;linkCode=as2&amp;camp=1638&amp;creative=19454&amp;creativeASIN=B002TIOYVW">Growing Object-Oriented Software, Guided by Tests</a>.</p>
<p>All the reading doesn&#8217;t help as long as you don&#8217;t put the stuff you read about into action. So start writing test. For the start stay with simple stuff. Where you can immediately write down the test. You might wonder if the test is worth the effort for such trivial code. But remember you are trying to learn. And learning is done by practicing over and over again. You will find situations where you realize writing the test isn&#8217;t as easy as you thought. Try to write the test anyway. Try to find a solution for the testing problem. Ask at <a href="http://stackoverflow.com/">stackoverflow</a> how to solve the issue.</p>
<p>Learn a testing framework. Learn a second one. Learn one in a different programming language. A long the way you will learn a lot about different styles of testing and different solutions to problems.</p>
<p>Learn a mocking framework. I&#8217;d recommend <a href="http://mockito.org/">Mockito</a>. Try not to use it. Find out why using a mocking framework might be a sign of bad design.</p>
<p>Enjoy the ride. And add recommendation as a comment.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.schauderhaft.de/2011/07/31/getting-started-with-testing/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>The Kindle is Awesome</title>
		<link>http://blog.schauderhaft.de/2011/05/15/the-kindle-is-awesome/</link>
		<comments>http://blog.schauderhaft.de/2011/05/15/the-kindle-is-awesome/#comments</comments>
		<pubDate>Sun, 15 May 2011 11:07:09 +0000</pubDate>
		<dc:creator>Jens Schauder</dc:creator>
				<category><![CDATA[The Rest]]></category>
		<category><![CDATA[books]]></category>
		<category><![CDATA[kindle]]></category>

		<guid isPermaLink="false">http://blog.schauderhaft.de/?p=781</guid>
		<description><![CDATA[For three weeks now I&#8217;m the happy owner of a Kindle and it is just awesome. It&#8217;s not perfect &#8230; but it is awesome. Let me elaborate a little. Why it isn&#8217;t perfect: It&#8217;s bound to Amazon. Everything in the kindle is geared to buy from Amazon and to be bound to Amazon the content [...]]]></description>
			<content:encoded><![CDATA[<p>For three weeks now I&#8217;m the happy owner of a <a href="http://www.amazon.de/gp/product/B003DZ1Y8Q/ref=as_li_ss_tl?ie=UTF8&#038;tag=schauderhafte-21&#038;linkCode=as2&#038;camp=1638&#038;creative=19454&#038;creativeASIN=B003DZ1Y8Q">Kindle </a>and it is just awesome. It&#8217;s not perfect &#8230; but it is awesome. Let me elaborate a little.</p>
<p><strong>Why it isn&#8217;t perfect:</strong></p>
<ul>
<li>It&#8217;s bound to Amazon. Everything in the kindle is geared to buy from Amazon and to be bound to Amazon the content is encumbered with Amazons DRM. This isn&#8217;t much of a problem right now, but I don&#8217;t like that situation a bit.</li>
<li>It&#8217;s not an iPad. Don&#8217;t get me wrong, I&#8217;m not much interested in an iPad. If I would win won, I would be happy to sell it and to buy books for the money, but It would be cool if the kindle would have the fast color display, touchscreen and a sensor to tell it its orientation in space.</li>
</ul>
<p><strong>But the kindle is awesome</strong> because it is the perfect gadget for the purpose for which I bought it: Reading.</p>
<ul>
<li>The kindle is small and light. You can hold it for a long time in one hand, e.g. while walking. Try that with an iPad.</li>
<li>It has a display that is so paper like that I actually thought it would be a piece of paper I had to pull of before using the kindle when I unwrapped it. You can read in in bright sunlight at an angle at which a normal computer screen would act like a mirror</li>
<li>You can put it to the side for 5 seconds or 5 days without worrying about the page you where reading. Great if you want to read near kids who ask a question approximately every 12.57 seconds.
	</li>
<li><a href="http://www.amazon.de/gp/redirect.html?ie=UTF8&#038;location=http%3A%2F%2Fwww.amazon.de%2Febooks-kindle%2Fb%3Fie%3DUTF8%26node%3D530886031%26ref_%3Dsa_menu_kbo1%23&#038;site-redirect=de&#038;tag=schauderhafte-21&#038;linkCode=ur2&#038;camp=1638&#038;creative=19454">Kindle books</a> are cheap. This might confuse you because a lot of people complain that Kindle books are only a little cheaper than hard covers and more expensive than paper back editions. But if you buy English books at Amazon.de you pay the american price for the kindle book which is in many cases way cheaper than the German book price.</li>
</ul>
<p>One complain you often here is that the handling of PDFs and other document formats is bad. Well it depends on what you expect. PDF is a page oriented format without any semantic information. For example a footnote is just a piece of text inside PDF an in no way tied to the place where the footnote is referenced. If you convert such a format to the kindle format you get some not so nice effects, but it was absolutely usable in about half a dozen cases where I tried it. If the layout is to complex, possibly with tables and graphics you can read PDF directly without converting it, which works ok, when holding the Kindle sideways. It will enlarge the PDF so the width fills the screen. And &#8216;turning the page&#8217; will actually scroll down the page in about two steps before actually proceeding to the next page. Again not perfect, but absolutely usable.</p>
<p>So if you read a lot and are interested in <a href="http://www.amazon.de/gp/redirect.html?ie=UTF8&#038;location=http%3A%2F%2Fwww.amazon.de%2Fs%3Fie%3DUTF8%26x%3D0%26ref_%3Dnb_sb_noss%26y%3D0%26field-keywords%3Dsoftware%26url%3Dnode%253D567135031%23&#038;site-redirect=de&#038;tag=schauderhafte-21&#038;linkCode=ur2&#038;camp=1638&#038;creative=19454">English Tech Books</a> or old <a href="http://www.amazon.de/gp/redirect.html?ie=UTF8&#038;location=http%3A%2F%2Fwww.amazon.de%2Fs%3Fie%3DUTF8%26sort%3Dprice%26ref_%3Dsr_st%26keywords%3Dclassic%26qid%3D1305371687%26rh%3Dn%253A530484031%252Cn%253A%2521530485031%252Cn%253A530886031%252Ck%253Aclassic%26page%3D1%23&#038;site-redirect=de&#038;tag=schauderhafte-21&#038;linkCode=ur2&#038;camp=1638&#038;creative=19454">Classics </a>(which are often free) chances are you want a Kindle.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.schauderhaft.de/2011/05/15/the-kindle-is-awesome/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Books I Read in 2010</title>
		<link>http://blog.schauderhaft.de/2011/01/02/books-i-read-2010/</link>
		<comments>http://blog.schauderhaft.de/2011/01/02/books-i-read-2010/#comments</comments>
		<pubDate>Sun, 02 Jan 2011 14:27:34 +0000</pubDate>
		<dc:creator>Jens Schauder</dc:creator>
				<category><![CDATA[The Rest]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[books]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://blog.schauderhaft.de/?p=678</guid>
		<description><![CDATA[Looks like a year is over again. So everybody is doing some kind of review. I&#8217;ll chip in by reviewing some of the books I read during the last year: Presentation Zen Design: Simple Design Principles and Techniques to Enhance Your Presentations (Voices That Matter) is the follow up on Presentation Zen: Simple Ideas on [...]]]></description>
			<content:encoded><![CDATA[<p>Looks like a year is over again. So everybody is doing some kind of review. I&#8217;ll chip in by reviewing some of the books I read during the last year:</p>
<p><strong><a href="http://www.amazon.de/gp/product/0321668790?ie=UTF8&amp;tag=schauderhafte-21&amp;linkCode=as2&amp;camp=1638&amp;creative=19454&amp;creativeASIN=0321668790">Presentation Zen Design: Simple Design Principles and Techniques to Enhance Your Presentations (Voices That Matter)</a></strong> is the follow up on <a href="http://www.amazon.de/gp/product/0321525655?ie=UTF8&amp;tag=schauderhafte-21&amp;linkCode=as2&amp;camp=1638&amp;creative=19454&amp;creativeASIN=0321525655">Presentation Zen: Simple Ideas on Presentation Design and Delivery (Voices That Matter)</a> which I loved and which changed the way I do presentations. While Presentation Zen is one extremely important book for me, Presentation Zen Design was a little weak. A lot of stuff I already knew, plus to much on the design side which I can&#8217;t apply. Not a bad book but not really for me.</p>
<p><strong><a href="http://www.amazon.de/gp/product/0316005304?ie=UTF8&amp;tag=schauderhafte-21&amp;linkCode=as2&amp;camp=1638&amp;creative=19454&amp;creativeASIN=0316005304">How Would You Move Mount Fuji?: Microsoft&#8217;s Cult of the Puzzle &#8212; How the World&#8217;s Smartest Companies Select the Most Creative Thinkers</a></strong> is a fun read about the interview questions they supposedly ask at microsoft and other places. As a preparation for such interview it is probably pretty useless, but it is fun to read, especially when you like logic puzzles.</p>
<p><strong><a href="http://www.amazon.de/gp/product/0321712943?ie=UTF8&amp;tag=schauderhafte-21&amp;linkCode=as2&amp;camp=1638&amp;creative=19454&amp;creativeASIN=0321712943">Domain Specific Languages (Addison-Wesley Signature)</a></strong> by Martin Fowler. As often with books by Fowler there is not much an experienced developer doesn&#8217;t know yet or can&#8217;t find in other books. BUT he once again assembles a complete set of patterns, describes them and gives names to them. While this doesn&#8217;t sound like much it helps a lot in evalutating your options when considering a DSL. I also learned a lot about parsing, lexing and so on. Good book. Must Read.</p>
<p><strong><a href="http://www.amazon.de/gp/product/0321146530?ie=UTF8&#038;tag=schauderhafte-21&#038;linkCode=as2&#038;camp=1638&#038;creative=19454&#038;creativeASIN=0321146530">Test Driven Development. By Example (Addison-Wesley Signature)</a></strong> is a great introduction into TDD. If you are not practicing TDD yet, you should read this. But if you already read another book about that topic, you might skip this one.</p>
<p><strong><a href="http://www.amazon.de/gp/product/1847677681?ie=UTF8&#038;tag=schauderhafte-21&#038;linkCode=as2&#038;camp=1638&#038;creative=19454&#038;creativeASIN=1847677681">Drive: The Surprising Truth About What Motivates Us</a></strong> is simply a great book. It showed me a lot of things that motivate me, which is great because now I can at least to some extend use that knowledge to improve my life. I also recommend this book for everyone who is or wants to be the boss of someone. If you really can&#8217;t read the book, here is my personal essence from it: Bonuses don&#8217;t work. Read the book if you want to know why.</p>
<p><strong><a href="http://www.amazon.de/gp/product/0321150783?ie=UTF8&#038;tag=schauderhafte-21&#038;linkCode=as2&#038;camp=1638&#038;creative=19454&#038;creativeASIN=0321150783">Lean Software Development: An Agile Toolkit for Software Development Managers</a></strong> is one of the many books I read about lean and agile and stuff. Its good. Its written by the Popendieks which shows. I especially liked the chapter about the effect of contract design on the relationship between supplier and customer.</p>
<p><strong><a href="http://www.amazon.de/gp/product/0321344758?ie=UTF8&#038;tag=schauderhafte-21&#038;linkCode=as2&#038;camp=1638&#038;creative=19454&#038;creativeASIN=0321344758">Don&#8217;t Make Me Think!: A Common Sense Approach to Web Usability</a></strong> a guide to pragmatic user interface design. It&#8217;s simple. It&#8217;s easy to read and it even shows how to do actual usability testing when you are one a tight budget.</p>
<p><strong><a href="http://www.amazon.de/gp/product/0321278658?ie=UTF8&#038;tag=schauderhafte-21&#038;linkCode=as2&#038;camp=1638&#038;creative=19454&#038;creativeASIN=0321278658">Extreme Programming Explained: Embrace Change</a></strong> adds what is missing in many books about agile software development: practices of solid, high quality software development (as opposed to practices revolving around the organization of work). When you want to learn about agile, this is one of the two books you need to read as a developer.</p>
<p><strong><a href="http://www.amazon.de/gp/product/0132074893?ie=UTF8&#038;tag=schauderhafte-21&#038;linkCode=as2&#038;camp=1638&#038;creative=19454&#038;creativeASIN=0132074893">Agile Software Development with Scrum</a></strong> is the other book you must read when you are interested in agile. While it is focused on Scrum, it does a great job in explaining why scrum works the way it is. This is helpful no matter what method you use.</p>
<p><strong><a href="http://www.amazon.de/gp/product/0142000280?ie=UTF8&#038;tag=schauderhafte-21&#038;linkCode=as2&#038;camp=1638&#038;creative=19454&#038;creativeASIN=0142000280">Getting Things Done. The Art of Stress-Free Productivity</a></strong> shows simple little process that will lead you to higher productivity. At least it did that to me. While my productivity isn&#8217;t nearly where I would like it to be, I at least know the things to tweak in order to get better. Must read when you are constantly feel like you day needs at least three extra hours.</p>
<p><strong><a href="http://www.amazon.de/gp/product/0981531601?ie=UTF8&#038;tag=schauderhafte-21&#038;linkCode=as2&#038;camp=1638&#038;creative=19454&#038;creativeASIN=0981531601">Programming in Scala</a></strong> &#8230; well the readers of my blog noticed, that I&#8217;m fooling around with scala a lot lately. This is one reason and the foundation of my fooling. It&#8217;s a good book, although I have to admit I don&#8217;t know other Scala books yet, so I can&#8217;t make a comparison.</p>
<p><strong><a href="http://www.amazon.de/gp/product/0262510871?ie=UTF8&#038;tag=schauderhafte-21&#038;linkCode=as2&#038;camp=1638&#038;creative=19454&#038;creativeASIN=0262510871">Structure and Interpretation of Computer Programs (Mit Electrical Engineering and Computer Science Series)</a></strong> is possibly the most interesting read during the last year and I&#8217;m actually not finished yet. This book gets either great or awful revisions at amazon. The reason is simple: It&#8217;s not an easy read. It is not easily applicable. The chances of direct application of your new skills in the job are extremely slim. BUT no matter how much programming and software development you did, if you read this book you will learn a lot. For example you will learn how much you can do in a language without using assignement. And you will only notice this on page 200 something when assignment is introduced. So I am absolutely on the 5 star side of this book. Must read for everybody who really wants to push his understanding of programming and programming languages.</p>
<p>So that is my (not complete) list of the somewhat IT related books I read during the last 12 months. There where lots of helpful books in the list. I hope it will be the same during the next 12 months. Ok I&#8217;ll head over to amazon and order another book. Enjoy the new year.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.schauderhaft.de/2011/01/02/books-i-read-2010/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Great Books for Becoming a Better Developer</title>
		<link>http://blog.schauderhaft.de/2010/06/12/great-books-for-becoming-a-better-developer/</link>
		<comments>http://blog.schauderhaft.de/2010/06/12/great-books-for-becoming-a-better-developer/#comments</comments>
		<pubDate>Sat, 12 Jun 2010 08:11:59 +0000</pubDate>
		<dc:creator>Jens Schauder</dc:creator>
				<category><![CDATA[Softwaredevelopment]]></category>
		<category><![CDATA[books]]></category>

		<guid isPermaLink="false">http://blog.schauderhaft.de/?p=499</guid>
		<description><![CDATA[You want to become an even better developer? Then you must read these books. If you have already read them. Read them again. Design Patterns. Elements of Reusable Object-Oriented Software: This is the standard book on patterns and patterns are an extremely important piece of vocabulary for every developer. Not to impress coworkers with your [...]]]></description>
			<content:encoded><![CDATA[<p>You want to become an even better developer? Then you must read these books. If you have already read them. Read them again.</p>
<p><a href="http://www.amazon.de/gp/product/0201633612?ie=UTF8&amp;tag=schauderhafte-21&amp;linkCode=as2&amp;camp=1638&amp;creative=19454&amp;creativeASIN=0201633612">Design Patterns. Elements of Reusable Object-Oriented Software:</a> This is the standard book on patterns and patterns are an extremely important piece of vocabulary for every developer. Not to impress coworkers with your knowledge, but to be able to think about bigger concepts than loops and conditionals. It describes each pattern with its purpose, it&#8217;s applicability and an example. Make sure to read a couple of blog posts about each pattern, to make sure you avoid some of the more common mistakes when applying them.</p>
<p><a href="http://www.amazon.de/gp/product/0132350882?ie=UTF8&amp;tag=schauderhafte-21&amp;linkCode=as2&amp;camp=1638&amp;creative=19454&amp;creativeASIN=0132350882">Clean Code: A Handbook of Agile Software Craftsmanship</a>: You want to be proud of your code? You want to be able to go back to your code in a year without swearing? This is the book for you. The author Robert C. Martin (also known as Uncle Bob) is extremely aggressive on what he is accepting as clean. This book really changed the way I look at code, and of course the way I write code. Make sure to really understand the lengthy examples. It is tedious, but it pays.</p>
<p><a href="http://www.amazon.de/gp/product/020161622X?ie=UTF8&amp;tag=schauderhafte-21&amp;linkCode=as2&amp;camp=1638&amp;creative=19454&amp;creativeASIN=020161622X">The Pragmatic Programmer. From Journeyman to Master</a>: In Software Development the professionals often follow practices which the professionals them selfs aren&#8217;t aware of. This book lists and explains many of these practices as well as some obvious once. While this sounds trivial the resulting book is a great source of small and big practices to acquire as a habit.</p>
<p>For the German readers of my blog: Read the english originals. German translations of computer books are horrible on average.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.schauderhaft.de/2010/06/12/great-books-for-becoming-a-better-developer/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>3 Books You Should Read When You Want to Go Agile</title>
		<link>http://blog.schauderhaft.de/2010/05/30/3-books-agile/</link>
		<comments>http://blog.schauderhaft.de/2010/05/30/3-books-agile/#comments</comments>
		<pubDate>Sun, 30 May 2010 08:21:09 +0000</pubDate>
		<dc:creator>Jens Schauder</dc:creator>
				<category><![CDATA[Softwaredevelopment]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[books]]></category>

		<guid isPermaLink="false">http://blog.schauderhaft.de/?p=509</guid>
		<description><![CDATA[If you haven&#8217;t switched to an agile approach to software development yet, you probably should. But be warned. Agile is not about daily stand ups in the morning. It also isn&#8217;t about renaming your &#8220;work break down structure&#8221; into &#8220;backlog&#8221;. Going agile requires changes deep in the internals of your team and/or in your company, [...]]]></description>
			<content:encoded><![CDATA[<p>If you haven&#8217;t switched to an agile approach to software development yet, you probably should. But be warned. Agile is not about daily stand ups in the morning. It also isn&#8217;t about renaming your &#8220;work break down structure&#8221; into &#8220;backlog&#8221;. Going agile requires changes deep in the internals of your team and/or in your company, depending on the level on which you want to go agile. In my experience there is just no reasonable way to gain the required understanding of agile approaches from on-line resources alone. I recommend the following three books instead:</p>
<p><strong><a href="http://www.amazon.de/gp/product/0132074893?ie=UTF8&amp;tag=schauderhafte-21&amp;linkCode=as2&amp;camp=1638&amp;creative=19454&amp;creativeASIN=0132074893">Agile  Software Development with Scrum by Ken Schwaber</a></strong>: Obviously this book is about Scrum, which is just one of many agile processes. But even if you don&#8217;t want to go with Scrum, this book will teach you a lot about why Scrum is designed the way it is, and this will be very helpful, no matter what approach you choose. Be warned: the book is small, has crappy graphics and is rather expensive. But it is worth it&#8217;s money.</p>
<p><strong><a href="http://www.amazon.com/gp/product/0321150783?ie=UTF8&amp;tag=schauderhaft-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0321150783">Lean Software Development: An Agile Toolkit by Mary and Tom Poppendieck</a></strong>: This book isn&#8217;t tied to any specific process or approach, instead it describes the underlying concepts, which are common to all agile approaches. And these are the ones that really count. Since the Poppendieck have a lot of experience in non software projects they provide lots of examples an cross references which might help convince a stubborn manager, who doesn&#8217;t realizes that doing waterfall software development might be 10years behind standards in software development, but is about 50 years behind when compared with other branches of industry.</p>
<p><strong><a href="http://www.mikecohnsignatureseries.com/books/management-3-0">Management 3.0: Leading Agile Developers, Developing Agile Leaders by Jurgen Appelo</a></strong>: Unfortunately you can&#8217;t buy the book yet. But I had the honor to review an early version of the book and provide Jurgen with my nit-picky comments. This book is very different from the other two, because it focuses completely on the management side of things. Agile doesn&#8217;t mean managers will go away, they don&#8217;t even become useless. Quite the different, they might actually put themselves to good use, and this books will tell you (or your boss) how. Even if you don&#8217;t go fully agile, this book will offer lots of advice and ideas, on how to improve you work as a manager.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.schauderhaft.de/2010/05/30/3-books-agile/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Reading</title>
		<link>http://blog.schauderhaft.de/2009/07/03/reading/</link>
		<comments>http://blog.schauderhaft.de/2009/07/03/reading/#comments</comments>
		<pubDate>Fri, 03 Jul 2009 11:21:58 +0000</pubDate>
		<dc:creator>Jens Schauder</dc:creator>
				<category><![CDATA[The Rest]]></category>
		<category><![CDATA[books]]></category>
		<category><![CDATA[reading]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://blog.schauderhaft.de/?p=164</guid>
		<description><![CDATA[Jurgen Appelo wrote a great Article about his new strategy to read books in a parallel and non-sequential way. He uses sticky notes to mark the chapters he read in a book, thereby allowing him to read the most important unread chapter whenever he wants to read. I like the concept, but it does not [...]]]></description>
			<content:encoded><![CDATA[<p>Jurgen Appelo wrote a great Article about his new strategy to read books in a <a href="http://www.noop.nl/2009/07/reading-books-in-a-parallel-and-nonsequential-way.html">parallel and non-sequential way</a>. He uses sticky notes to mark the chapters he read in a book, thereby allowing him to read the most important unread chapter whenever he wants to read.</p>
<p>I like the concept, but it does not work for me. I read in a lot of different places and I read about 2-5 books or magazines in parallel most of the time. I do not want to carry those around all the time. In fact I read so many things in parallel because I don&#8217;t want to carry the books around. Instead I try to have a book at every place where I might want to read. One in the bed room, one in the bath, one in the living room, one at the office at <a href="http://www.lineas.de">LINEAS</a> and one at the desk at the customer for the lunch breaks. And last night I had to buy a new one because I was traveling by train and hadn&#8217;t a book yet for that place.</p>
<p>No matter if you are more like jurgen or more like me, or if you are one of these weird people that read one book at a time: Use Tools for Reading. At least when you are reading in order to learn something, you should use the following tools:</p>
<ol>
<li>a transparent ruler. Hold it under the current line. It will prevent you from loosing the line, and thereby enables faster reading. If a ruler is not available, a pen or a sheet of paper might work as well.</li>
<li>a pen. Put down notes. Put them on the margin of the book if you like or on post its, or on a seperate sheet of paper. Whatever, in my experience taking down notes, writing a short summary on after every chapter is the single most effective thing to prevent information to fall out of your ears, while you take it in through the eyes.</li>
</ol>
<p>Reading is such an important thing, there really should be more discussion about how we do it. So what are your reading tips?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.schauderhaft.de/2009/07/03/reading/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wie plant das Agile Projektmanagement?</title>
		<link>http://blog.schauderhaft.de/2008/09/22/wie-plant-das-agile-projektmanagement/</link>
		<comments>http://blog.schauderhaft.de/2008/09/22/wie-plant-das-agile-projektmanagement/#comments</comments>
		<pubDate>Mon, 22 Sep 2008 21:12:45 +0000</pubDate>
		<dc:creator>Jens Schauder</dc:creator>
				<category><![CDATA[Management]]></category>
		<category><![CDATA[books]]></category>
		<category><![CDATA[project management]]></category>
		<category><![CDATA[reading]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://blog.schauderhaft.de/2008/09/22/wie-plant-das-agile-projektmanagement/</guid>
		<description><![CDATA[Spätestens seit dem Agilen Manifest gehört es in der Softwareentwicklung zum guten Ton agil zu sein. Die Argumente sind charmant: Nur das tun, was wirklich notwendig ist, nur dann wenn es wirklich notwendig ist. Nicht mehr Dokumente als unbedingt nötig. Andererseits hat die klassische Netzplantechink durchaus etwas für sich. Der Argumentation: Wenn A von B [...]]]></description>
			<content:encoded><![CDATA[<p>Spätestens seit dem <a href="http://agilemanifesto.org/">Agilen Manifest</a> gehört es in der Softwareentwicklung zum guten Ton agil zu sein. Die Argumente sind charmant: Nur das tun, was wirklich notwendig ist, nur dann wenn es wirklich notwendig ist. Nicht mehr Dokumente als unbedingt nötig.</p>
<p>Andererseits hat die klassische Netzplantechink durchaus etwas für sich. Der Argumentation: Wenn A von B abhängt, kann ich erst mit A beginnen, wenn B abgeschlossen ist, leuchtet ein. Und so mancher Vertreter der Agilen Methoden verwechselt wohl agil mit chaotisch.</p>
<p>Leute die Worte wie Agil, Iterativ und Inkrementell nutzen, aber nicht erklären können machen die Sache auch nicht besser.</p>
<p style="float: left; margin-left: 10px"><a href="http://www.amazon.de/gp/product/0131479415?ie=UTF8&amp;tag=schauderhafte-21&amp;linkCode=as2&amp;camp=1638&amp;creative=6742&amp;creativeASIN=0131479415"><img src="/wp-content/uploads/2008/09/51pprabtj2l_sl160_.jpg" border="0" alt="" /></a><img style="border: medium none  ! important; margin: 0px ! important" src="http://www.assoc-amazon.de/e/ir?t=schauderhafte-21&amp;l=as2&amp;o=3&amp;a=0131479415" border="0" alt="" width="1" height="1" /></p>
<p>Ich habe jemanden gefunden, der nicht nur diese Unterscheidungen kennt, der weiß wie man in agil geführten Projekten plant und schätzt, sondern der darüber sogar Bücher geschrieben hat. Mike Cohen. Na gut, ich habe ihn nicht persönlich kennengelernt, aber ich habe zwei seiner Bücher gelesen: &#8220;Agile Estimating and Planning&#8221; und &#8220;User Stories Applied&#8221;.</p>
<p style="float: right; margin-left: 10px"><a href="http://www.amazon.de/gp/product/0321205685?ie=UTF8&amp;tag=schauderhafte-21&amp;linkCode=as2&amp;camp=1638&amp;creative=6742&amp;creativeASIN=0321205685"><img src="/wp-content/uploads/2008/09/519ubibqql_sl160_.jpg" border="0" alt="" /></a><img style="border: medium none  ! important; margin: 0px ! important" src="http://www.assoc-amazon.de/e/ir?t=schauderhafte-21&amp;l=as2&amp;o=3&amp;a=0321205685" border="0" alt="" width="1" height="1" /></p>
<p>Beide Bücher kann ich empfehlen, obwohl ich nicht empfehlen würde beide Bücher hintereinander zu lesen, wie ich es getan habe. Dafür ist die Schnittmenge des Inhalts zu groß.</p>
<p>Genug der Werbung: Wie plant nun das agile Projektmanagement? In letzter Instanz nicht so viel anders, als das klassische Projektmanagement, wenn es richtig gemacht wird. Es wird das geplant was planbar ist, und was für eine erfolgreiche Weiterarbeit notwendig ist. Bei der klassischen Netzplantechnik ist es naheliegend alle Aktivitäten gleich detailliert zu planen, obwohl dies weder realistisch noch förderlich ist.</p>
<p>Mike Cohen empfiehlt getrennte Planungen für unterschiedlichen Planungshorizonte: Projekt, Release, Iteration, Tag. Dadurch wird auch gleich ein weiterer typischer Fehler von klassischem Projektmanagement vermieden: Bei Projektbeginn wird der Projektplan erstellt und dann allenfalls mit dem Projektfortschritt aktualisiert. Klar, dass der bald nichts mehr mit der Realität zu tun hat. Aber wenn der detaillierte Plan nur bis zum Feierabend reicht, dann kommt man nicht drum rum am nächsten Morgen einen neuen Plan zu machen. Das gleiche gilt für die Pläne auf Iteration und Release Ebene.</p>
<p>Damit wird das Möglich, was für mich ein ganz wichtiger Aspekt der agile Projektarbeit ausmacht: Embracing Change (Änderungen umarmen?) d.h. Änderungen der Ziele und Vorgaben werden nicht als Störung des Projektes betrachtet, sondern als integraler, willkommener Bestandteil des Projektgeschäftes.</p>
<p>Aber was passiert mit den heiß geliebten Gantt-Charts und der Netzplantechnik? Diese sind tatsächlich hinfällig. Als Ersatz für die Abhängigkeiten im Netzplan werden die Anforderungen (Stichwort: User Stories) so gewählt, dass sie möglichst unabhängig voneinander sind. An dieser Stelle wird die Sache meiner Meinung nach wirklich spannend. Warum meint die Softwarebranche ohne diese Abhängigkeiten zurecht zu kommen, obwohl andere Branchen seit Jahrzehnten darauf schwören? Weil bei (gut geschriebener) Software jeder Teil geändert werden kann, ohne dass dies nennenswerte Auswirkungen auf andere Teile hat, während dies bei klassischen produzierenden Gewerbe unmöglich ist.</p>
<p>Man stelle sich mal vor, bei einem fertigen Gebäude soll das Fundament ausgetauscht werden &#8230; unmöglich, unbezahlbar. Bei einem Programm die Persistenzschicht austauschen? Kein wirkliches Problem, natürlich müssen beide Varianten der Persistenzschicht entwickelt und letztendlich bezahlt werden, aber bei dem Rest des Programm sollte sich recht wenig ändern. Während das klassische Gebäude wohl komplett ab und wieder neu gebaut werden müsste. Dadurch ist es möglich die Bestandteile in beinahe beliebiger Reihenfolge zu erstellen. Im Umkehrschluss bedeutet dies aber auch, Projektanteile die nicht so flexible disponiert werden können, müssen entsprechend langfristig geplant werden. Know How in diesem Bereich ist also nicht verloren.</p>
<p>In allen anderen Bereichen geht es meist um eine verschobene Gewichtung: Wenn Plan und Realität auseinander gehen, wird dies eher über Anpassung der Ziele, d.h. des Projektumfangs aufgefangen, als durch Veränderung des Arbeitsvolumens. Dabei trifft der Kunde die Entscheidung was genau gestrichen oder angepasst werden sollte, anstatt wie ich es oft erlebt habe Grabenkämpfe um die Übernahmen der Kosten zu führen.</p>
<p>Löst das alle Probleme? Ganz sicher nicht. Letzten Endes geht es in Projekten um Geld und da wird es Konflikte geben. Aber ich bin überzeugt, fast alle Projekte könnten von einer kleinen oder größeren Prise &#8216;Agile Estimating and Planning&#8217; profitieren, nicht nur Softwareentwicklungsprojekte. Und wenn unsere Kunden das Buch lesen würden, könnten wir sie eher davon überzeugen gemeinsam ein Projekt zu machen anstatt gegeneinander.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.schauderhaft.de/2008/09/22/wie-plant-das-agile-projektmanagement/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Novelty, Magazin für Kreative?</title>
		<link>http://blog.schauderhaft.de/2008/09/09/novelty-magazin-fur-kreative/</link>
		<comments>http://blog.schauderhaft.de/2008/09/09/novelty-magazin-fur-kreative/#comments</comments>
		<pubDate>Tue, 09 Sep 2008 21:23:17 +0000</pubDate>
		<dc:creator>Jens Schauder</dc:creator>
				<category><![CDATA[The Rest]]></category>
		<category><![CDATA[advertising]]></category>
		<category><![CDATA[books]]></category>
		<category><![CDATA[reading]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://blog.schauderhaft.de/2008/09/09/novelty-magazin-fur-kreative/</guid>
		<description><![CDATA[Vor einiger Zeit habe ich bei Xing unter &#8216;ich biete&#8217; &#8216;Ideen&#8217; angegeben. Vielleicht ist es nur ein zeitlicher Zusammenhang, aber vorgestern bekam ich ein Zeitschrift zu gesandt, die &#8216;exklusiv&#8217; für kreative Personen sei. Exklusiv klingt toll, kreativ auch. Unaufgefordert zugesandte Zeitschrift eher nicht. Exklusiv bedeutet laut der Zeitschrift beiliegendem Anschreiben: 30.000 ausgewählte Personen. Hmm &#8230; [...]]]></description>
			<content:encoded><![CDATA[<p>Vor einiger Zeit habe ich bei <a href="http://www.xing.com">Xing</a> unter &#8216;ich biete&#8217; &#8216;Ideen&#8217; angegeben. Vielleicht ist es nur ein zeitlicher Zusammenhang, aber vorgestern bekam ich ein Zeitschrift zu gesandt, die &#8216;exklusiv&#8217; für kreative Personen sei. Exklusiv klingt toll, kreativ auch. Unaufgefordert zugesandte Zeitschrift eher nicht. Exklusiv bedeutet laut der Zeitschrift beiliegendem Anschreiben: 30.000 ausgewählte Personen. Hmm &#8230; ausgewählt ist nicht wirklich überraschend. Wer schon mal eine Abizeitung oder eine Hochzeitszeitung gemacht hat weiss, dass das auch nicht umsonst geht. Und 30.000 klingt nicht so wenig für eine erste Ausgabe einer Zeitschrift. Kurzer Vergleich mit Spektrum der Wissenschaft auf Wikipedia.de: Gut 90.000. Also wohl doch eher ein teures Massenmailing, mit der Option sie in Zukunft für 5 Euro 80 selbst zu kaufen.</p>
<p>Na gut, aber nur weil man nichts besonderes ist, kann man ja trotzdem mal reinschauen. Leider war kein Inhalt drin. Versteht mich nicht falsch: Seiten waren schon drin. Es standen auch Buchstaben und Bilder drauf, aber Inhalt war nicht dabei. Etwa ein Drittel der Seiten sind großformatige Werbung. Ganzseitig oder doppelseitig. Und wenn der Rest im Fernsehen liefe würde ständig &#8216;Dauerwerbesendung&#8217; eingeblendet werden.</p>
<p>Keine Spur von Kreativität, bis auf das Geschäftsmodel. Wenn man nämlich nach dem Verlag googelt landet man bei einer <a href="http://www.sb-konzept.de/index.php">Werbeagentur</a>. Anstatt also wie üblich zu Inhalt passende Werbung zu suchen, oder für Werbung passenden Inhalt, haben die einfachWerbung mit Werbung kombiniert und verkaufen das ganze jetzt.</p>
<p>Falls euch die Zeitschrift interessiert &#8230; ich habe mein Exemplar schon weggeschmissen, aber das <a href="http://www.oracle.com/oramag/index.html">Oracle Magazin</a> verfolgt ein ähnliches Konzept. Leider ist es kostenlos und durch die schlampige Redaktion schleichen sich eigentlich immer 3-4 Seiten Inhalt rein.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.schauderhaft.de/2008/09/09/novelty-magazin-fur-kreative/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Database Refactoring</title>
		<link>http://blog.schauderhaft.de/2008/08/22/database-refactoring/</link>
		<comments>http://blog.schauderhaft.de/2008/08/22/database-refactoring/#comments</comments>
		<pubDate>Fri, 22 Aug 2008 19:46:25 +0000</pubDate>
		<dc:creator>Jens Schauder</dc:creator>
				<category><![CDATA[Softwaredevelopment]]></category>
		<category><![CDATA[books]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[reading]]></category>
		<category><![CDATA[refactoring]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://blog.schauderhaft.de/2008/08/22/database-refactoring/</guid>
		<description><![CDATA[Es gibt wohl kaum einen Java (oder C# oder was auch immer) Entwickler der was auf sich hält, und der nicht weiß was &#8216;refactorn&#8217; bedeutet. Es sei denn &#8216;was auch immer&#8217; steht für SQL, PL/SQL oder dergleichen. Denn Datenbanken und darin enthaltene Artefakte der Softwareentwicklung werden, aus welchen Gründen auch immer, anders behandelt, als &#8216;normaler&#8217; [...]]]></description>
			<content:encoded><![CDATA[<p>Es gibt wohl kaum einen Java (oder C# oder was auch immer) Entwickler der was auf sich hält, und der nicht weiß was &#8216;refactorn&#8217; bedeutet. Es sei denn &#8216;was auch immer&#8217; steht für SQL, PL/SQL oder dergleichen. Denn Datenbanken und darin enthaltene Artefakte der Softwareentwicklung werden, aus welchen Gründen auch immer, anders behandelt, als &#8216;normaler&#8217; Code. Selbst die Verwendung eines <a href="http://www.codinghorror.com/blog/archives/000743.html">Versionskontrollsystems</a> ist <a href="http://www.codinghorror.com/blog/archives/001050.html">für viele Neuland</a>. Und die Idee Code quasi im Vorbeigehen zu verbessern, zu verfeinern und aufzuräumen erscheint vielen DBAs und Datenbankentwicklern völlig abwegig.</p>
<p style="float: left; margin-right: 10px"><a href="http://www.amazon.de/gp/product/0201485672?ie=UTF8&amp;tag=schauderhafte-21&amp;linkCode=as2&amp;camp=1638&amp;creative=6742&amp;creativeASIN=0201485672"><img src="/wp-content/uploads/2008/08/519xt0der6l_sl160_.jpg" border="0" alt="" /></a><img style="border: medium none  ! important; margin: 0px ! important" src="http://www.assoc-amazon.de/e/ir?t=schauderhafte-21&amp;l=as2&amp;o=3&amp;a=0201485672" border="0" alt="" width="1" height="1" /></p>
<p>Man muss den DBAs und Datenbankentwicklern zu Gute halten, das selbst Martin Fowler refaktorn von Datenbanken für besonders schwierig hält und es daher dieses Thema in seinem Buch &#8220;Refactoring&#8221; mehr oder weniger vollständig ausgeschlossen hat. Dieses Thema haben mittlerweile andere bearbeitet und seit einigen Jahren ist eine gesondertes Buch zum Thema Refactoring von Datenbanken verfügbar. Ich halte dieses Buch für sehr wichtig und lesenswert und es sei allen, die mit Datenbanken zu tun haben dringenst an Herz gelegt.</p>
<p style="float: right; margin-left: 10px"><a href="http://www.amazon.de/gp/product/0321293533?ie=UTF8&amp;tag=schauderhafte-21&amp;linkCode=as2&amp;camp=1638&amp;creative=6742&amp;creativeASIN=0321293533"><img src="/wp-content/uploads/2008/08/217h82tkq3l_sl160_.jpg" border="0" alt="" /></a><img style="border: medium none  ! important; margin: 0px ! important" src="http://www.assoc-amazon.de/e/ir?t=schauderhafte-21&amp;l=as2&amp;o=3&amp;a=0321293533" border="0" alt="" width="1" height="1" /></p>
<p>Allerdings muss ich den potentiellen Leser warnen. Die Autoren Scott Ambler und Pramodkumar Sadalage haben keinen Trick auf Lager, wie sie Änderungen von Datenbanken zwischen den verschiedenen Instanzen synchronisieren. Bei Änderungen an Datenbanken müssen sehr oft auch Daten aktualisiert werden und dies geht nur mit dem Wissen um diese Daten, dies kann nicht automatisiert werden. Es wird hier also korrekter Weise auf die manuelle Pflege von Skripten verwiesen. Leider hat sich die Hoffnung der Autoren bisher nicht erfüllt, dass leistungsfähige Tools für die Unterstützung dieser Aufgaben entstehen. Es gibt zwar mittlerweile einige, die Skripte verwalten, feststellen welche noch eingespielt werden und diese einspielen oder zu einen SQL Script zusammenführen. Aber diese Tools fühlen sich an wie ein Faustkeil, wenn man Werkzeuge wie IDEA oder Eclipse gewohnt ist.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.schauderhaft.de/2008/08/22/database-refactoring/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JAX 08: Sprachen,  Concurrency, Security, Architektur</title>
		<link>http://blog.schauderhaft.de/2008/05/19/jax-08-sprachen-concurrency-security-architektur/</link>
		<comments>http://blog.schauderhaft.de/2008/05/19/jax-08-sprachen-concurrency-security-architektur/#comments</comments>
		<pubDate>Mon, 19 May 2008 18:40:08 +0000</pubDate>
		<dc:creator>Jens Schauder</dc:creator>
				<category><![CDATA[Softwaredevelopment]]></category>
		<category><![CDATA[aop]]></category>
		<category><![CDATA[books]]></category>
		<category><![CDATA[Concurrency]]></category>
		<category><![CDATA[dsl]]></category>
		<category><![CDATA[jax08]]></category>
		<category><![CDATA[quality]]></category>
		<category><![CDATA[reading]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://blog.schauderhaft.de/2008/05/19/jax-08-sprachen-concurrency-security-architektur/</guid>
		<description><![CDATA[Wie schon erwähnt war ich vor ein paar Wochen auf der JAX 08, und ich bin immer noch mit den Nachwirkungen beschäftigt. Hier meine persönliche Zusammenfassung der wesentlichen Erkenntnisse. Sprachen Das aktuelle Thema überhaupt ist sicherlich Sprachen. Durch die Allgegenwart von zwei wesentlichen Laufzeitumgebungen (JVM von Java/Sun und der CLR von .NET/Microsoft) ist es extrem [...]]]></description>
			<content:encoded><![CDATA[<p>Wie schon <a href="/2008/04/24/komplexitat-und-die-neuen-sprachen/">erwähnt</a> war ich vor ein paar Wochen auf der <a href="http://it-republik.de/jaxenter/blog/2008/02/12/dynamische-sprachen-ruby-jruby-groovy-co/">JAX 08</a>, und ich bin immer noch mit den Nachwirkungen beschäftigt. Hier meine persönliche Zusammenfassung der wesentlichen Erkenntnisse.</p>
<p><strong>Sprachen</strong></p>
<p>Das aktuelle Thema überhaupt ist sicherlich Sprachen. Durch die Allgegenwart von zwei wesentlichen Laufzeitumgebungen (JVM von Java/Sun und der CLR von .NET/Microsoft) ist es extrem einfach neue Sprachen mal auszuprobieren. Zu dem Thema empfehle ich den <a href="http://www.voelter.de/data/articles/trends2007.pdf">Artikel von Markus Völter</a>.</p>
<p>Meine persönlichen Erkenntnisse dazu:</p>
<ul>
<li>Fast(?) nichts von den Konzepten ist neu. Die Basis für funktionale Sprache z.B. ist das Lambda Kalkül von 1930. Insbesondere das Polyglotte Programmieren ist doch längst Standard. Ich z.B. zähle in den meisten Projekten mindestens Java, SQL, PL/SQL, HTML und CSS zu meinem Handwerkszeug. Was sich ändern könnte, ist warum wir zwei oder mehr Sprachen einsetzen: Weil bestimmte Aspekte in der einen, andere in der zweiten Sprache besser darstellbar sind. Während bisher der Grund der Mangel an Alternativen ist. (Ja ich weiß, man kann auch in Oracle mit Java arbeiten. Aber wer das einwirft hat es noch nicht ernsthaft ausprobiert).</li>
<li>Wir werden uns damit beschäftigen müssen. Heiße Kandidaten für die praktische Anwendung sind für mich: Groovy und Scala.<br />
Auch spannend finde ich Haskell. Ich habe vor vielen Jahren an der Uni <a href="http://de.wikipedia.org/wiki/Miranda_%28Programmiersprache%29">Miranda </a>gelernt und hätte nie gedacht, dass dies mal im Berufsleben relevant werden könnte.<br />
Als Physiker, der einmal intensiv mit Fortran gearbeitet hat finde ich auch <a href="http://en.wikipedia.org/wiki/Fortress_%28programming_language%29">Fortress </a>sehr beeindruckend. Dies Sprache kann zumindest für Mathematiker und ähnliche <a href="http://research.sun.com/projects/plrg/faq/NAS-CG.pdf">sehr leserlich gerendert</a> werden und ist speziell auf (massiv)parallele Ausführung ausgerichtet.</li>
</ul>
<p>Womit wir bei einem weiteren Thema sind:</p>
<p><strong>Concurrency</strong></p>
<p>Das Moore&#8217;sche Gesetz als Basis des Quaketunings (18 Monate Quake spielen, schon ist die Anwendung doppelt so schnell) ist am Ende. Als &#8216;horizontale Ausweichbewegung&#8217; werden uns von AMD und Intel Mehrkern CPUs auf den Schreibtisch gestellt. Dadurch geraten überall Leute in Panik, existierende Anwendungen würden nun wie die Fliegen von den Wänden fallen, da Threadingprobleme sich nun manifestieren.</p>
<p>Nun ja, ich weiß nicht was für Anwendungen ihr schreibt, aber ich schreibe beruflich entweder Swing oder Webanwendungen, die auf Datenbanken gehen. Nur ein sehr kleiner Teil der Arbeit steckt in komplexen Algorithmen, und ich habe noch nie etwas davon parallelisiert. Datenbanken und Webserver laufen &#8216;schon immer&#8217; auf Mehrprozessormaschinen. Es sind heute halt 512 statt 16. Die Art und Weise wie dort Parallelverarbeitung eingesetzt wird, ist extrem einfach und daher handhabbar: Jede Anfrage bekommt einen Thread, und darf ihn für sich alleine verwenden, bis die Anfrage abgearbeitet ist. Zumindest sieht es aus der Sicht des Entwicklers so aus.</p>
<p>Nur in Swing muss man typischer Weise mit mehreren Threads arbeiten, da lang laufende Aktionen sonst die Darstellung der Anwendung blockieren. Dies wird man aber wenn irgend möglich minimieren,  da jeder der <a href="http://www.amazon.de/gp/redirect.html?ie=UTF8&amp;location=http%3A%2F%2Fwww.amazon.de%2FConcurrent-Programming-Java-Principles-Addison-Wesley%2Fdp%2F0321256174%3Fie%3DUTF8%26s%3Dbooks-intl-de%26qid%3D1211220705%26sr%3D1-5&amp;site-redirect=de&amp;tag=schauderhafte-21&amp;linkCode=ur2&amp;camp=1638&amp;creative=6742">Doug Leas Buch</a><img src="http://www.assoc-amazon.de/e/ir?t=schauderhafte-21&amp;l=ur2&amp;o=3" style="border: medium none  ! important; margin: 0px ! important" border="0" height="1" width="1" /> gelesen hat, weiß wie schwierig Concurrency ist.</p>
<p>Viele der neuen Sprachen haben aber Konstrukte, die die Verteilte Ausführung unterstützen und es ist ja nicht so, dass wir die nicht zu nutzen wüssten. Unabhängig von der Anzahl der Prozessoren gibt es nämlich einen Bereich, in dem Concurrency eine Rolle spielen sollte: bei dem Zugriff auf verteilte Ressourcen. Egal ob es die Datenbank oder der entfernte Web Service ist, wenn wir eine Anfrage abschicken und warten, bis die Antwort kommt, bevor wir die nächste Anfrage lostreten verschwenden wir mindestens Zeit, und meist auch wertvolle Ressourcen (mindestens den wartenden Thread). Je nachdem wie knapp die Ressourcen sind, wird man früher oder später genötigt sein, die Anfragen parallel anzustoßen und anschließend die Ergebnisse zusammenzuführen. Schön wenn die Sprache mit der man dies tut, ein solches Vorgehen angemessen unterstützt.</p>
<p><strong>Security</strong></p>
<p>Es gibt immer wieder Stimmen, die meinen, Security würde jetzt DAS große Thema. Vertraut mir, wird es nicht. Genauso wenig wie Gasmasken oder Panzertüren DAS große Thema werden. Aber Security ist ein Dauerbrenner, den niemand ignorieren sollte. Oder schließt ihr euer Auto und eure Wohnung nicht ab?  Daher gab es auch auf der JAX Vorträge zu diesem Thema.</p>
<p>Für mich die wichtigsten Punkt waren dabei:</p>
<ul>
<li> * Der <a href="http://de.wikipedia.org/wiki/Demingkreis">Deming Zyklus</a> gilt auch hier. D.h.
<ul>
<li> Plant was eure Sicherheitsziele sind und was ihr dafür tun müsst. Wollt ihr euch gegen Skriptkiddies schützen? Oder haltet ihr die NSA für euren Feind? In letzterem Fall könnte aber auch ein Psychater helfen <img src='http://blog.schauderhaft.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </li>
<li> Führt die Maßnahmen durch.</li>
<li> Prüft, ob die Maßnahmen wirksam sind.</li>
<li> Wenn die Prüfung negativ ausfällt, reagiert darauf.</li>
</ul>
</li>
<li> Schwierig an dem Security Thema ist, dass selbst gigantische Sicherheitsprobleme nicht von allen erkannt werden. Wenn ich in mein Haus eine Tür aus Pappe einbaue, brauche ich keinen Experten um zu erkennen, dass das eine schlechte Idee ist. Bei Software ist das ganze deutlich weniger offensichtlich. Ich habe die privaten Schlüssel für Zertifikate schon gemailt bekommen. Daher gibt es eine ganz wichtige Aufgabe, wenn eine Anwendung &#8216;sicher&#8217; werden muss: Awareness schaffen. Alle Beteiligten (Entwickler, Designer, Tester, Administratoren, Anwender, &#8230;) müssen in Sachen Security geschult werden. Denn was nützt die schöne Sicherheitsarchitektur, wenn der Benutzer seines Sohnes Namen als Passwort verwendet und das auch noch per E-Mail verschickt und auf den Monitorrahmen schreibt?</li>
<li> Security heißt nicht einfach Benutzer Authentifizierung und Authorisierung sondern durchdringt den gesamten Entwicklungsprozess.
<ul>
<li> Bei der Analyse müssen die Anforderungen aufgenommen werden.</li>
<li> Diese müssen bei der Architektur und dem Design berücksichtigt werden.</li>
<li> Es muss natürlich implementiert werden,</li>
<li> aber auch getestet,</li>
<li> deployed</li>
<li> und genutzt</li>
</ul>
<p>Und wie ich oben skizziert habe, gibt es auch in den Bereichen Herausforderungen, wo man sie normalerweise vielleicht nicht erwartet.</li>
</ul>
<p><strong>Architektur</strong></p>
<p>Ist ein weiterer Dauerbrenner, und ähnlich wie bei Security lautet hier mein Hinweis <a href="http://de.wikipedia.org/wiki/Demingkreis">Deming Circle</a>! Eine Architektur hat eine Aufgabe zu erfüllen. Die Aufgabe sollte vorher klar sein und nachher muss geprüft werden, dass die Aufgabe gelöst wurde. Ansonsten ist Architektur ein Unfall oder Selbstbefriedigung des Architekten.</p>
<p>Durch das Thema Nr.1 &#8216;Sprachen&#8217; gewinnen wir gerade im Bereich Architektur gerade gewaltig an Möglichkeiten:</p>
<ul>
<li>Unterschiedliche Sprachen für unterschiedliche Bereiche.</li>
<li>DSLs für Spezialfälle</li>
<li>AOP oder spezielle Sprachstrukturen für die Umsetzung von Architekturentscheidungen</li>
</ul>
<p><strong>SOA und BPM</strong></p>
<p><a href="/2008/04/23/konferenzen-und-big-player-sessions/">Viel Hype und (fast) nichts dahinter</a>.</p>
<p><strong>Das 5. Element (Quintessenz)</strong></p>
<p>Die Probleme bleiben die alten. Die Lösungen sind auch nicht neu. Die Zeiten bleiben interessant.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.schauderhaft.de/2008/05/19/jax-08-sprachen-concurrency-security-architektur/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

