We've been using Scrum at work for several years now -- and we've had a lot of success with it. But recently, the team I'm on has started to notice thWe've been using Scrum at work for several years now -- and we've had a lot of success with it. But recently, the team I'm on has started to notice that (for various and unnecessary reasons), our workload is not as amenable to Scrum as it used to be. So we're starting to talk about looking for something else and Kanban is the most obvious starting point.
Skimming Wikipedia had given me a rough idea of what Kanban was, but this book filled in the details in a breezy, entertaining, and enjoyable-to-read fashion. It uses comic illustrations and interactions between a fictional team who's trying out Kanban to highlight the sort of situations that come up when using Kanban and how to deal with them.
In particular, this book heavily emphasizes the idea that Kanban isn't a system or process so much as it is a set of principles and rough guidelines. Because it's not itself a process, you can implement Kanban on top of whatever process you're currently using -- something I've not managed to glean before.
My one criticism of this book as that all of the examples are far too neat. In the real world, I'd expect you to run into far more gray areas that aren't handled quite as easily the ones the book's imaginary team faces. In particular, I'd have liked to see some examples for adding Kanban to an existing Scrum workflow -- the authors point out that this is possible several times, but never really get into what that means. Too often, they just shrug their shoulders and say "It depends".
I guess that's what consultants are for. But if you'd rather do some reading instead of (or before) paying those consultants, this book is probably not bad place to start!...more
In my office, we spend a lot of time in the database. As such, we tend to become fairly adept at analyzing data with SQL: join some tables on interestIn my office, we spend a lot of time in the database. As such, we tend to become fairly adept at analyzing data with SQL: join some tables on interesting columns, group by other interesting columns, sprinkle in some aggregates, and pretty soon you have yourself a table of answers.
The relatively new windowing functions added in SQL Server 2012 let you do even fancier analysis (at the risk needing to understand some new syntax).
Yet, sometimes, a raw table of SQL results just isn't enough. You might want to have access to some interesting statistical functions like the standard deviation or variance. You might want to correlate your data with other data available via a web service or just create a nice looking chart.
In these cases, SQL may not be the best choice. In recent years, Python has become an extremely popular language for doing data analysis. With libraries like pandas, numpy, and matplotlib, Python has rapidly become an extremely credible challenger to established special-purpose envrionments like R and SAS. Combined with these libraries, the dynamic ease-of-use of Python becomes perfect for the sort of data analysis tasks we find sometimes find ourselves trying to approach.
This book is an excellent introduction to the subject. It's written by the creator and lead developer on the pandas project, which provides the table-like data structures that make this sort of thing so comfortable for us SQL developers.
By focusing on data analysis, McKinney assumes no real knowledge of Python programming and even provides a "Python Language Essentials" at the back of the book. Assuming that you're already a competent programmer in Java, C#, VB.Net, or some other procedural language, you can easily pick up the basics of Python just by working through the examples in the book.
And that's highly recommended because the examples are a lot of fun! It's fun to grab stock data from Yahoo, run it through some computations, and then graph the result. McKinney strongly encourages the use of the IPyton shell and I echo that (especially the use of the notebook). It adds a strong sense of interaction to the standard Python REPL -- indeed, it feels a lot like tweaking queries and hitting F5 in SQL Server Management Studio. IPython notebooks are now easily my favorite way to experiment with new programming methods.
Working through this book is a great way to spend a weekend. And when you're done, you'll be able to dazzle your designers and product owners when they ask for data about something. Instead of making them squint at a grid of SQL results, you can hand them charts and graphs that will make it look like you spent hours in Excel. ...more
During the course of my work day, I spend the bulk of my programming time working with SQL Server: writing queries to retrieve data from our expansiveDuring the course of my work day, I spend the bulk of my programming time working with SQL Server: writing queries to retrieve data from our expansive scheme, creating or updating records, or designing new table structures to support exciting features. Recently, I've added "making slow SQL go faster" to the list of things I expect to be able to do well.
Towards that end, I'm attempting to immerse myself in the technicalities of how SQL Server does what it does and how my choices as a developer can affect that. In addition to taking classes and reading books specifically about query tuning and optimization, I thought an internals book would provide some much-needed context about what really happens behind the scenes.
It's still too soon to tell if that will pan out but if it doesn't, it would be no fault of this book. This book is an excellent deep dive into how SQL Server manages all of that precious data we shove into it every day.
While being highly technical and detailed, it's also approachable. The style is easy to read and it's filled with diagrams and pictures that help a brain figure out what's going on. I can now have intelligent conversations about how inserts into clustered indexes are managed (down to the page level) and how the query optimizer will choose between competing plans to handle a lot of joins. I know what's going on when I type "select *" in ways that I never did before [Ed: I'd never type "select *"...].
That said, the most beneficial part of this book is how it describes the functions available in SQL Server for me to see how my own data is organized. It explains the various methods available for me to see how pages are allocated across indexes, what's currently in my plan cache, what physical operations the database has been performing lately, and more. I've been keeping a file of useful queries to run and I expect I'll be using this file for the next several years.
If this book has any faults, it's largely that it skips some of the newer features that we use a lot. As an example, I could really use more information about XML parsing in general (and XML indexes in particular) and how the database feeds data to the CLR when running CLR code. Still, these are small complaints since the majority of my workload uses the bread and butter stuff that this book describes.
I think (and hope?) that reading this book will play a part in moving me from being an adequate or advanced SQL Server developer to an expert one.