So over the last two weeks at work I took on the task of creating an API and making some changes to our application’s back-end. This involved writing a bunch of F#, which in a lot of ways is the polar opposite of writing HTML/CSS/JS.

In the four years before I joined Quicken Loans I was predominantly a C# developer, only picking up enough HTML/JavaScript to do little things here and there. Since I joined QL in March 2015 I’ve transitioned to seeing myself as a ‘front-end’ developer since everything did was in the browser, powered by Polymer. That itself was a jarring(and a hell of a lot of fun) transition for me. But times change and so did our team’s needs, so I took on the challenge to again write server-side F#.

It was again a completely jarring and fun experience. In F#, you have real types, and a real compiler, that will stop you in your tracks if it thinks you wrote something that didn’t make sense. The way you write code is different, and the way you think about your code is different. You’re writing code that will run on a server instead of in a user’s browser. Your main I/O points are a Web API and a database, instead of a Web API and user’s eyeballs. The strong typing system protects you, but compile times can slow you down.

When you write HTML/CSS/JS, you have two different people that you’re writing the code for. First is the user that is going to see what you’ve produced, and the second is the next programmer that’s going to go in and modify your code some time in the future. But when you write server-side code, you’re not writing code for any user, just other developers that will modify/use your code going forward. That’s kind of nice to not have to worry about so many eyeballs on your design.

So, both sides of the world have their own unique and fun challenges. Next week I’m going to [An Event Apart] in Seattle, to learn more about design and the front-end side of the world of web development. It’ll be fun!