I'm a self-taught software developer with about a year's experience coding in C#. The experience is not from a job in the field, but from building up small simple projects and going through tutorial demos. My first job in the field, ironically, is an F# job. Here's how this happened and how I found the process of adapting to a totally new programming language and a totally new environment.
A job in F#?
I had heard about F# but for a long time used to ignore it when I saw its name on the .NET project templates and documentation. I didn’t have a clue about it! I had just finished a portfolio of ASP.NET MVC applications and was looking for my first job; an agent I had been talking to at the time returned with the question, “Would you consider an F# job if they were to offer you learning opportunities?” I replied “sure”, and although I was not totally convinced, I wanted to keep the dialogue going until I found out a bit more about the language.
I watched some videos and went through some introductory tutorials to get a feel of what it would be like to code in this programming language. The terse syntax both intimidated and excited me, as I’m sure it does for most beginners. I had the idea that it would be hard to get used to, or that the code would be altogether too hard to read when it reached a certain level of complexity, which I soon found out to be false. After experimenting with the language for a couple of hours, I found the experience of writing F# code much more productive than what I had been doing so far. The opportunity to learn F# seemed like it wasn’t just viable, but also compelling - and maybe even preferable to a C# job! I kept on learning about the language and experimenting with it. Hour after hour I was getting more and more excited about it and I went to sleep that night troubled with the thought that I would have to go back to writing lengthy and verbose C# code after having a peek at this sleek and cool language.
There really weren’t so many things to learn in order to get to the level that I was at in C#. The main sources of information when I had just started learning it was the language documentation and some YouTube tutorials. Lectures complimented my self-learning experience but were not as practical as they were technical and abstract. What made a big change and multiplied the speed of my learning process, though, was having mentors around me at Compositional IT. When I started here, the topics that required minutes of research (if not hours) and solutions to frustrating problems were freely available to me at the end of a question in the minds of my colleagues.
Web Development with F#
I was eventually introduced to SAFE Stack. For those who aren’t familiar with SAFE, it’s a set of technologies that makes it possible, and in fact easy, to build web applications entirely in F#. I initially was discouraged, thinking that each of the components of SAFE (as it is typically made up of four), would be a whole another totally different technology to learn, and my worries continued for the initial couple of days. After I saw it in action however, in a small internal project that we were working on at the time, it was a relief. All I had to ever write was F#, first of all, and everything came together beautifully and seamlessly. The stack felt like a mature web framework rather than a combination of random technologies.
The freedom that F# gives you is paradoxical. Initially I felt like the language was constrainted in terms of how you go about solving problems. True though that may be, this has its benefit as there is a consistent and repeatable process to modelling and problem solving. Adhering to these limitations mean that you have way more composable structures and behaviors at hand, which in my opinion, sets the ground for you to get creative with the code you write and think things through. I found the whole experience as exhilarating as it was challenging. After all, this wasn't just my first experience with F#, but my first experiences writing a full-fledged web application, SAFE Stack, Azure, and working with an experience team - this all happened all inside a couple of months. Looking back, I couldn’t come up with a better environment to go through this journey with than the dev team here in CIT.
Within just a couple of months since joining I've become a productive member of the team, writing F# full time and solving challenges for our customers and contributing to the team!
For someone learning their very first programming language, it can be tough finding the right resources, so I will drop some links at the bottom that I found to be especially helpful for those with no programming experience. And of course, if you need professional support in F# or SAFE Stack whether that be workshops, coaching, training or consulting, don’t hesitate to contact us!
Getting started resources
Here are some resources that I've been using to aid in my journey to learn F# - maybe you'll find them useful as well!
- Get Programming with F# (Book)
- F# Koans (Dojo)
- F# for C#/Java/Python Developers (Website)
- F# Tutorial (Video)
- F# for C# Developers (Lecture)