Dysfunctional Programming account #1. Senior SWE at Bloomberg. I write C++ for money. ex-Haskell, ex-OCaml. All opinions are my own.

London, UK
Joined October 2013
Day in the Life of a Senior SWE at Bloomberg
C++ lost this year to C But at least Fortran is no longer in the top 10 most popular languages. I'll take it.
Did you know Assembly language has overtaken Rust in popularity?
25
5
5
184
When I was studying at a university, I lived on a 200$/month budget. My entire family helped me, so I could get a proper education. It wasn’t a lot, but I managed. A couple times, I ate spoiled food because I hadn’t learned to manage my financials properly. I simply didn’t have any money left to buy food. This period of my life taught me a lot.
11
5
171
I write my best code just 15 minutes before 3 hours of meetings, When I really want to finish the task today.
8
2
1
70
This is what a Senior SWE at Bloomberg's GitHub profile looks like
This is what a nix commiter's GitHub profile looks like.
96
111
24
2,207
Fun DSA challenge. Create a data structure with the following operations: init(n): Create, O(n) set(i, b): Set the value at index ‘i’ to a Boolean value ‘b’, i < n, O(1) get(i): Get the Boolean value at index ‘i’, i < n, O(1) clear(): Set all values to ‘false’, O(1)
When I was writing Haskell professionally, I was very confused why somebody might hate this language. It’s obviously superior. Everyone must drop everything they do and jump into the first Haskell opportunity they see immediately. Then I grew up.
28
3
1
119
I uploaded a 200-page pdf spec to ChatGPT and asked questions about it. Ended up reading more AI output than the actual spec size.
21
4
3
132
10 years of Functional Programming finally paid off. I can build an expression evaluator in C++ using ✅ Algebraic Data Types (ADTs) ✅ Pattern matching ✅ std::variant ✅ std::visit ✅ std::unique_ptr I can't be stopped.
Anti-LeetCode people be like, “You don’t need to memorise algorithms and data structures. You only need to understand their use cases, edge cases, time and memory complexity, expected behaviour and high-level concepts to be able to reimplement and modify them if needed.”
73
37
4
1,186
I have a brother who’s 7 years younger than me. He works as an SWE too. Today I learned he earns more than I did 3 years ago. And I thought I’m the smartest one in the family.
38
3
1
412
The moral of the story, some things can’t be really simplified. Essentially complexity is real. To be clear, I didn’t just change the code to do exactly the same. The new implementation handles more edge cases. It’s just still significantly more complex than I originally anticipated.
12
3
117
I was frustrated at work by an overengineered algorithm implemented in C++ So I decided to fully rewrite it. My rewrite is now more complex than the original.
87
14
8
1,152
Supper satisfying Vim motions dd J o O ce vep
39
1
1
127
Every evening, I just want to scroll on X for 15 more minutes before sleep. Every evening, I fight this urge. This is how we win. Today, instead, I implemented an algorithm in C++ to build a perfectly balanced tree from a sorted collection using a recursive lambda.
18
6
1
172
I love using new cool modern programming languages! Such as 1. OCaml (1996) 2. Haskell (1990) 3. Erlang (1986) 4. Lisp (1960)
Programming operators when named by Haskellers (:[]) → monkey (:|[]) → robot monkey <*> → cyclops/starship >=> → fish >=**> → bleeding fish >>> → arrow
Mathematical operations when named by mathematicians : a x b → 'multiplication' a : b → 'division' a + b → 'addition' and by physicists ... <a|O|b > → 'sandwich'
The problem with Software Engineering is that almost every approach makes sense under the umbrella of “it depends”. I don’t like mocks. We know a dozen of ways they can go wrong. We know a dozen of ways to test the system robustly without mocks. Yet, if you depend on poorly designed code you can’t change within your time and intellectual budget, you use mocks and move on. In my book, if something doesn’t work 99% of the time and requires expert knowledge, it’s bad. And it’s also fine to avoid something bad. You won’t miss a lot. But people will jump on you with pitchforks if they experienced that 1% statistical outlier edge case. You can take a safe position of never telling why something is good or bad. But you quickly become boring and spineless. It’s okay to have opinions!
27
5
3
129
UPD: Policy change for my account. I’m going to ruthlessly block anyone for tiniest things without remorse. Not blocking people before was a mistake. I realised it way too late.
I don’t block accounts first here, I just mute them if they’re continuously obnoxious. But if I accidentally see someone blocked me, I block them back. Both can play this game. If you’ve been blocked, that’s the only reason it could happen. If you see injustice, let me know, and I’ll correct my errors.
18
53
Just to clarify so people don’t misinterpret me again. Rust is a great language. It supports FP and I love FP. Rust authors managed to make a lot of this right. But creating a new great language is an easy problem. Not in a sense that it’s trivial. But in a sense that new languages are not encumbered with legacy decisions. They don’t have to make hard choices (yet) to maintain backwards compatibility. They can reap the benefits of other’s mistakes and just don’t introduce them from the start. It’s much harder to actually improve an existing language in a meaningful way and make lives of millions of devs easier without breaking things. It’s a slow and arduous process. I know it. But assuming you can easily rewrite existing software to a new shiny language is naive beyond delusional. In 10 years, Rust will suffer the exact same problem as C++ They won’t be able to add new exciting features without breaking stuff. So they’ll have to make compromises. And devs will start complaining that Rust has a dozen ways to do the same thing. You know what else will happen in the next 40 years? A dozen of new programming languages. It’s very naive to think we achieved a global optimum of programming languages today and Rust is the best we can ever create. Programming Language Theory advances every year, and in 10-20 years we can easily see a new exciting language with groundbreaking innovations. What we’ll have is an ever growing zoo of languages. Software Engineers will be expected to know even more languages and switch between them even quicker. The cycle continues.
The hill I'm willing to die on is that every person who holds similar beliefs has never worked in a big company like Bloomberg, Meta, or Google