This post is my answer to this question that was raised in the F# repository. The idea is basically to share how I started my first F# project and my strategies to convince people to give it a try.
Given
I started reading about functional programming and F# some years before I actually used it professionally. I can’t remember exactly which was my first contact but one that I remember was the book 7 languages in 7 weeks, after some tests and exercises as was able to write some functional code, although this code was actually more imperative than functional it still counts in the beginning. Three years ago, my friend and colleague(by that time) that is a F# expert, proposed our team to give it a try and read about F# and apply it in some small tasks like build scripts and very simple/small projects. After a few weeks and some small projects, we were able to give the first step towards the FP in real code.
When
Once the team was convinced that F# could be a great tool we started converting tests from our production(wannabe) code to F# and soon we realized that code in F# or C# would take around the same amount of time, so it was time to convince Managers about our decision.
It can be far more complex to have an OK from the company that in fact convince your colleagues about FP.
In our case we were lucky, there were around five languages been used by that time and the company culture of small team being responsible for all the stages of their products definitely allowed me to have fun building production F# code
Then
F# became a first-class citizen programming language in our team and it opened new possibilities to other people to learn and apply it. Months later I moved to another team, so I took the same strategy and started spreading F# through test projects until the moment that my colleagues were eager to give it a try, so did we.
I left this company around 8 months ago but as far as know developers who were part of this team are still building services with F# and evolving their understanding of some of the many FP techniques that have been added to most of the popular languages.
Today
I am currently a software engineer at Travix international, There are some other Devs here who also like FP and so we are applying it in small projects and leading initiatives like talks, coding dojo, and discussion.
It is still a really small initiative but It how things started, at least when it concerns to spread a whole new development style.
Hints to help you convince your colleagues
- Some of the most popular languages are copying/implementing FP features.
- Most of time that developers spend to put software in production is not coding and I guess that every professional who put software in production in the last few years have this feeling
- Share your FP knowledge in sessions and discussions.
- Start with a small project and give it some time patiently to learn core concepts, even if a few tries your team decide that FP is not worth it is easy to rewrite this code.
This post shows my personal experience and how I manage to learn, experiment and spread FP love, all time invested learning its concepts are really helpful even when I’m coding in C# and JavaScript.