Did you miss day 1? Then take a look at this article
tl;dr; Great second and last day at the conference with more interesting talks on BDD, specification by examples, Conway’s Law, Polyglot programming and persistence, event sourcing, graph databases, document databases, Entrepreneurship, Lambdas, UX magic, EPiServer and Game Development backed on Azure.
Same problem today with snow…
but I made it in time for Robert Folkesson’s session on…
Specification By Example And Testing Using SpecFlow
I love testing related stuff and my first test ever was an SpecFlow test. Yes, I started my testing career doing BDD and it wasn’t pretty, you shouldn’t start building a death star from the chimney… So it was very nice to be brought back to BDD, Specification By Example and SpecFlow by the hand of Robert Folkesson who is a great speaker and super clear and articulate.
In practice, it takes the form of human readable specifications written using the ubiquitous language of the business domain at hand in plain text that are then used to generated test hooks that can later be run against your production code. This creates a testing nirvana in which the end user (and the developers) can see how human readable specs are brought to live and represent a living and breathing documentation of what your system or application can do and does at a specific point in time.
An additional refinement came to BDD in the form of Specification by Example in which requirements are not only specific by text but also by specific examples. Gojko Adzic who coined the term also wrote a book about it.
SpecFlow is an implementation of BDD and Specification by example that integrates with Visual Studio and any of the most popular testing frameworks. It can be used to run tests at any level, I have seen it used for unit tests, integration tests and even end-to-end tests which exercised selenium.
And here is an old-ish video from Rob Conery that illustrates the use and usefulness of SpecFlow:
The Organization Structure And Architecture Mirroring Conumdrum
So there is a theory/adage/law called Conway’s Law of which I had no idea about that states the following:
organizations which design systems … are constrained to produce designs which are copies of the communication structures of these organizations
Wait a sec. Think. Reflect. A company that builds an app… is constrained to build an app… with a design that copies the structure of the organization… hmm so that’s why enterprise companies tend to build monolithic products whilst open source communities and projects tend to build loosely coupled systems. Does your organization need a refactoring?
There was ton more of interesting thoughts that I am going to regurgitate in no particular order and you’ll have to reflect and make sense of them yourself:
- it is not only an organization structure that affects the software but it also happens vice versa. F.i. if you have a person that is the sole holder of knowledge of a particular system, the software is going to put a contraint in your organization structure so that person is locked into that product.
- Spotify is organized in separate, independent, automonous teams and as a result each part of their music player and backend infrastructure is a small component that provides services to other components and consumes services from other components.
- Amazon only builds services
- Systems that you build today are going to affect your ability to evolve your organization in the future
- don’t just sit together, communicate together
- cultivate a growth mindset, if we are less proud as a community and as individuals, we will be more effective
You can even look at this video if you missed his talk:
We Leave in a Monoglot World, Let’s Go to the Polyglot Heaven
This was a great talk by Tomas Jansson with a ton of interesting content but which main theme was the fact that you can and should choose the best tool to perform the job at hand and combine all these best of breed tools to build your application. Not everything is a nail:
Cool stuff in this talk:
- CQS and CQRS
- Immutability, Commanding, event sourcing (recreate your domain objects by replaying changes on them represented as events) and Event Store
- Model relationships with Graph Databases (like Neo4j which graphical interface is freaking sweet)
- Using F# capabilities to write less code when testing
Lunch Break On Entrepreneurship
During lunch there was an entertaining panel on entrepreneurship: how it feels to start and run your own company, things that you should be aware of, tips… There was a couple of seconds I feared it would become a sales pitch but it got back on track and it was pretty good as a whole.
Do you want to be an entrepreneur? Just do it dude, you’ve got nothing to lose (and don’t forget! Outsource your accounting!) :)
To Shoot Yourself On The Head With a ()=> and Die
Ok now I am starting to get tired of writing :) there is a high chance the next sessions will get a two-liner description.
Torbjörn Gyllebring on the offense again with another talk this time on the dangers awaiting behind an innocent lambda expression, behind LINQ and misunderstanding how to use sequences, querys and collections, and behind the not-knowing of whether operations are being performed in-memory or in the database. There were also unicorns.
He made a masterful use of LINQpad to illustrate these dangers through examples. You know the saying, an example is worth a thousand words.
An Introduction to MongoDB on the .NET Platform
Magnus Gudmusson did a good introduction to MongoDB and showcased the great support existing today in Visual Studio and .NET to build applications against this database. Following the same theme carried by the polyglot heaven talk it preached the use of NoSQL solutions when and where they fit the problem to solve better than relational databases.
UX is Not Magic
Ola Karlsson made a great case for User Experience: User Experience is not an art, it is a science, it is problem solving and as such can be addressed and must be a part of your software development processes. He then discussed the development of the UX field from its inception in the hands of Don Norman with User Center Design, into Agile UX and Lean UX.
The takeaways from this talk: UX is not graphic design, choose function over form or even better form must be in the service of function, strive to understand your users and purposefully THINK about what you are doing.
EPiServer On The Cloud
Henrik Fransas talked about how to bring EpiServer to the cloud through Azure Websites. I couldn’t see his presentation for which I will always be saddened.
Game On with Microsoft Azure Storage
Last but not least came Alan Smith with a great talk on how to use the diverse Microsoft Azure Services to support modern games and specifically the different options of Azure storage.
There was a ton of intersting things in this talk:
- Traffic patterns in different services and how Microsoft Azure can be use to scale up and down on demand
- Halo and Xbox using Microsoft Azure Service
- Formula 1 and homebrew raspberry pi hack to gather telemetry information from a car and storing it in Azure
- Using telemetry data to learn how to drive or highlighting/pinpointing dangerous areas within roads
- Things to do and not to do when using table and blob storage
- The Global Azure Bootcamp that will be held on April 25th anywhere near you and how cheap Azure services are
Again there was a lot of sessions that I couldn’t attend to because of that problem of lack of omnipotency and omnipresence but please take a peek at swetugg’s website and see if you find something that you like.
Thank you very much to the organizers, sponsors and participants! Great job!
Bye! Until the next one! :)