NCrafts 2015

ncrafts-logoThis week I had the chance to attend the second edition of the NCrafts conference. This conference takes place in Paris and had a lot of awesome speakers from all over Europe.

If you don’t how what this conference is about, have a look at the manifesto below, it will give you an idea.

It’s about programming but also about experience and feedback

It’s not only about technologies but also about practices

It’s not only about software craftsmanship but also about learning and exchanges for everyone

It’s not only about business and applications but mainly about people

In other words, it’s a software conference for developers by developers. We love crafting software with art, passion and technology and share it with everyone.

This manifesto reflects my philosophy and what I try to show in my blog posts. And this exactly what happened during the conference, the speakers and the attendees where very open-minded and we were able to discover new practices.

The Workshops

The day before the conference some workshops were organized by several speakers and I chose to go to the “Event Storming” workshop hosted by Alberto Brandolini and Mathias Verraes.

I will not get into the details of this workshop since I intend to write a full blog post about this experience.

To summarize, the “Event Storming” is an interactive practice that aims to bring the domain experts and the developers closer to each others. You need space on a wall, a lot of space, sticky notes and markers to use this practice.

The goal of this workout is to model the process based on domain events. At the end the developers should have a good idea of how the system should behave and what are the business rules to implement.

DDD, TDD & Functional programming

The conference lasted two days with two talks tracks for each day, there was a lot of awesome content in each talks, a lot of food for thoughts.

Domain Driven Design (DDD) was part of this conference and it makes sense since I believe that, as professional developers, we cannot produce valuable software for our clients without knowing their domain.

Functional programming had also an important place in the conference, it was almost possible to attend only functional programming talks. Most of these talks were made using the FSharp (F#) language.

I made a small introduction to this language a few months ago and being able to see F# developers from the community sharing their tips, tricks and technic was really enjoyable.

I think that functional programming will help us solve some problems we encounter in our everyday job faster than object-oriented programming. It is not better or worse, yet some paradigms of the functional approach are really attractive.

Testing had also a place in the conference for both functional programming and object-oriented programming. If you read my blog you should now know that I write quite a lot about tests, it is a topic I really care about.

During the conference I discovered new approaches for Test Driven Development (TDD) and explanation on the difficulty to practice it. The Type Driven Development (TDD again) practice for F# was really interesting in order to design software.

Waiting for NCrafts 2016

I did not attend last year edition of NCrafts but I will definitely try to go again next year. It was 3 amazing days with a lot of great and open-minded speakers. The NCrafts team did a really great job to make the experience as smooth as possible and as enjoyable as possible.

It gave me a lot of ideas to share with my team in order to improve our technical skills, practices and processes. I can only highly recommend you to watch the talks online when they will be available.

See you next time!

FSharp : Welcome into the Functional Programming

FSharp logo
FSharp logo

I am a CSharp (C#) developer for several years now and before working with this programming language I made a few projects in C++ : I am an Object Oriented Programmer (OOP). But OOP is not the only way to develop software and sometimes it is not the easiest way to create a specific functionality.

As a software journeyman I want to sharpen my skills and learn new ones. Given that I am familiar with the OOP paradigm it could be interesting to learn a new programming paradigm. So I decided to look toward Functional Programming with FSharp (F#).

Why FSharp ?

Short answer : pressure from my peers !

Joke aside, I was hesitating between Python and FSharp to learn functional programming. Some of my colleagues advise me to pick FSharp and I also had the chance to participate to a BBL (Brown Bag Lunch) on FSharp (summary of this event here). But this is not the only reason I chose this language.

FSharp is not only a functional language, it is also possible to do OOP with it : it is a multi-paradigm language. FSharp has been designed by Microsoft Research thus it can be used with the .NET framework which is perfect for a C# developer like me. And of course it can be used inside Visual Studio.

What does it look like ?

Enough with the talking ! Let’s see some code !

For this first FSharp example, I resolved a simple problem of the Project Euler in C# and F#. This problem is called : “Multiples of 3 and 5”.

If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23. Find the sum of all the multiples of 3 or 5 below 1000.

Solution in C# (one of many) :

using System;
 
namespace CSharp.Euler
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("The result is : {0}", Multiple());
        }
 
        static int Multiple()
        {
            var result = 0;
            for (int i = 0; i <= 999; i++)
            {
                if (i % 3 == 0 || i % 5 == 0)
                    result += i;
            }
            return result;
        }
    }
}

Solution in F# (one of many) :

let multiple =
    [0..999]
    |> List.filter (fun x -> x % 3 = 0 || x % 5 = 0)
    |> List.sum

printfn "The result is : %d" multiple

The purpose of this example is not to compare these two languages, it is to show a bit of the FSharp syntax.

If you want to learn more or even try FSharp, I highly recommend visiting www.tryfsharp.org to check their well-crafted and interactive tutorials.

I’m just starting learning FSharp and for now I really like it and I wanted to share this enjoyment with a quick presentation of this multi-paradigm functional focused programming language. I think that FSharp will come back in future articles shortly.

See you next time !