If you could measure development performance vs product performance, witch would win?

So I went today on an interview for a golang position, and it turned from a technical interview to a cult joining, where he would portray golang as the messiah of the languages to develop APIs and I kid you not it was quite awkward to listen to all of that. The only words that would resonate with the interviewer would be benchmarks and performance and he was telling me that this is the only way to do innovation and they wouldn’t use any frameworks or abstraction libraries. As a reference for all of this their product doesn’t have any hard performance requirements to work optimally.

What do you think about this?
Where the balance between performance and development speed/cost gets shifted from one side to the other?
Are these perhaps just endearment of some senior developers who got bored at work?

2 Likes

Piffle, everyone knows that REAL HARDCORE PROGRAMMERS only use machine code entered one bit at a time with a Morse code key, entered into a CPU that they made themselves with some sand and an Easy-Bake Oven!

15 Likes

Or use a butterflies-based technique instead of the so-called morse-based technique.

9 Likes

You laugh, but I start to question my sanity. I mean I knew that developers with 15+ years of experience are crazy, but I didn’t expect for it to be so bad :joy: .

1 Like

Yea sorry, it’s a tricky question in fact and in another way, it’s easy to make a joke on this kind of speech. Moreover, I do not have 15+ years of experience, so they know a lot more than me obviously.

However it ticks me because at my last job, the next guideline was to use Go for new back-end developments, even if only few back-end developers had experience with the language. I didn’t see it as a game changer for us in despite of the internal speech.

Firstly, Go seems to be a good language. I don’t like it for the few I read and tried, but who cares? It can produced statically type checked executable with a build-in garbage collector (e.g. some techs see it as a good fit for AWS Lambda). It’s seems to be in my sense in-the-middle between Rust and Elixir: not safe as Rust but easier to master with similar efficiency (let’s say less than 2 times slower), and without the resilience (and the accidental pseudo infinite scalability) of Elixir but way faster per process and built-in concurrency patterns. But if you are looking for a the “chosen one language” because messing with many tools is a pain, it’s a choice to consider.

Secondly, I understand the “cult” you can have on a tool or tool set. I feel the same with Elixir, even if I do not consider myself advanced on this topic. I’m remembering right now moments where people look at me before I talk saying as a joke: “Elixir of course?”. In fact, I try to not answer this myself because I feel a lot of “I really want to use Elixir so I suppose I can’t be impartial to choose the right tool for the right job”.

It’s sometimes hard but we have to, as “software engineer”, to do our best to be pragmatic. A tech lead have to consider multiple parameters: the domain, the tech communities, the tool sets associated with languages, the internal team knowledge… Development speed and production costs can be estimated from this points. But we can add to the list your team wishes/believes is to take into account because it’s not false to say it’s a way to innovate and have fun at work (but not the only way of course). To put on the top the last one as main argument is a mistake.

A recommendation could be to come back to challenge them about their speech, e.g. what is your current and next hosting strategy, which languages did you consider before making this choice, and so why Go, what kind of problem does it solved for you, why a no framework strategy (I really do not understand the last one BTW) :nerd_face:

2 Likes

They already answered this, their hosting strategy is k8 and their services hold about 1k connections.

As far as he told me, they all come from java world, because my country is filled with java and c# developers.

They said that benchmarks showed them that this is the fastest language for request-response time. We had a lot of discussions on this forum about these benchmarks performance and my conclusion is that the lower level the library, the faster it performs, for example a library written in C used in python might outperform golang.

No idea either, I think this is related to the developer sickness you mentioned, because at the end of our conversation he started telling me that they follow solid principles and clean code principles and some other, witch was obviously that they are the kind of developers that care a lot about academical architecture and patterns, but once again if they are all seniors with a lot of experience, they might be efficient at a such approach.

When I see SOLID on a job description, I usually stop from applying. My assumption is that the group has completely ignored FP and is enamored with OO when see SOLID noted.

3 Likes

Let’s not be black and white about this, solid has it’s place and doesn’t apply to only classic OOP languages, even though every developer who has developed for at least 3 years is already using all these principles without even remembering them.

As for FP, I think the steep relearning of concepts keeps a lot of people away from those languages. Not to mention this talk that was started long ago that immutability is bad because it is inefficient and all the performance optimizations done it is just black magic that don’t work in 90% of cases.

As a funny story a few years ago when I was searching for an elixir job, I applied to a japanese company that stated: we don’t care about your resume, everybody has to complete a list of questions before the initial interview. One of the questions was about solid principles in elixir :joy:, the other one was about === in javascript, I trolled them a little with the responses and they declined me.

I think you should run away screaming.

On topic, I’ve made the mistake of prioritizing speed and “elegance” over features a few times in the last years, which tells me that I should probably gradually exit programming as a profession because I have no patience for the people who are all “features features features every day!” anymore. But more seriously, that also depends on the people and the team; sometimes people just don’t click.

As for your example, it seems these people are so relieved that they left Java that they now evangelize Golang. Sadly us the people are prone to being hyped up (another example is divorced people suddenly finding 50% of everyone they see attractive :smiley:).

You can’t call yourself “senior programmer” if you are prone to hype. I’ve made that mistake before and I am extremely ashamed to this day because even back then I thought of myself as a “senior” but then understood that I was only wishing I was. Took me some more years afterwards to start looking at things in better perspective. And nowadays I hesitate to call myself “senior programmer” at all. Maybe I am just senior (as in, aging). :smiley:

Golang is quite a good language and has an excellent ecosystem. I’ll immediately agree with @pierrelegall that it’s the perfect middle ground between Elixir and Rust. But that being said, there is no shortage of problems it’s just a terrible fit for; like anything that requires sum types for example and no, their awful way of imitating them only creates more problems (topic for another time).

To me Golang is a much better Python. That’s it. Shouldn’t be a religion but for some reason people turn everything into a religion.

10 Likes

Thanks for the detailed response!

I was lucky to begin my career at a small company (Lightcyphers) in my city, the owner is a professional coming from telecom industry with 20+ years of experience, having worked at big name companies like Nokia. He had zero tolerance for the BS coming from the IT industry. It taught me a lot of valuable lessons about what really is important and how perspective changes when you have limited resources to work with, and how throwing more money/people at something doesn’t solve the problem.

The sad thing about this is that you never know who you are going to work with until you actually start, maybe with time you make connections, however we are talking about tens of years (or maybe I’m antisocial).

These ranks were always a mystery for me, I mean I’ve seen people with twice my experience (10+ years) that worked all their life in only one technology and field, not having any soft skills and they would call themselves seniors, idk.

I can’t say about the ecosystem, maybe I didn’t have luck with what I was working or too spoiled by elixir ecosystem but I had to implement a lot of basic functionality from scratch at some point. As for abstraction level I totally agree.

Python excels at what it was designed at the beginning, to be a very accessible, batteries included language for beginners. At some point in time (most probably with the adoption of machine learning tools) it started to rise in popularity and extended out of it’s scopes, much like javascript.

1 Like

There’s a segment of Golang aficionados who ardently say “the standard library’s net/http package can already handle everything you need it to do”, and of the prominent frameworks, there are those that use standard-library-compatible request handler interfaces & those that don’t. The purist crowd seems to feel the former frameworks are unnecessary and the latter frameworks are an even bigger affront to their sensibilities. (Not an expert opinion, and mostly based on what I’ve seen stated in golang subreddit threads.)

2 Likes

For me, this negates the entire purpose of compromising from using haskell/ocaml/clojure/elixir. The whole reason I would be using golang is to be in an ecosystem with more libraries than more elegant, but smaller language ecosystems.

2 Likes

:point_up_2:

Maybe I’m misunderstanding this… but I think it’s good to investigate the hype and see what something is all about. I like the idea of pushing technology forward. I argue with friends all the time about “well Ruby can do everything so why should I switch?” vs “but other things can do them better.”

I think I’m susceptible to hype. It’s why I want to get better at Rust! :grimacing:

In the context of this thread though, I think there are strong arguments against using Go (or Rust) for everything. And I definitely lean towards the side of “development performance”. For me, Elixir is a great balance between RAD (especially for web) and performance. The idea of “full stack web development” in Rust doesn’t sound appealing to me.

3 Likes

You kind of are. Liking Rust after seeing what it can do is not hype at all. Going around claiming “ChatGPT is gonna revolutionize society” – while knowing exactly zero about the so-called “AI” – is being prone to hype.

Same here. Mostly. I like to go the extra mile to make the code better for the next guy/girl (even if that’s me) and that has made me lock horns with management and CTOs in the past. These days I think that maybe I should work something else, or with very different people and/or in different areas.

4 Likes

Ha, ok, I’m with ya. It’s like making decisions based on hype alone vs “whoa, there is a lot of hype about this thing… let me check it out!”

Yeah, very normal herd mentality from humans. But I expect better from scientists and engineers.

2 Likes

I suppose you already had a look to Rustler?

1 Like

My dream is rust backend + elm front end, but I plan on focusing on company’s product and ideation process and early stage startups, next time I look for work. If the place happens to use rust and elm, great, but I doubt that will happen.

1 Like

Yes! I haven’t used it myself, but things like GitHub - benhaney/Jsonrs: Rust powered JSON library for Elixir use it, which we use in prod and are very happy with! I also follow all the Discord blogs about how they use Rust to do the things they do (I’m not sure, but I think they use Rustler too?). Plus how Rust is the only other official language besides C that’s accepted into the Linux kernel. It’s hard not to get caught up in the hype! :joy:

2 Likes

This is quite funny because I arrived to the same conclusion but from the other side, where developers would have too much free time and start losing their minds implementing some crazy patterns they’ve read in some books and refactor the same product every half year, it seems that both these symptoms might be rooted in the same social cause.

I was listening to some old psychologist mentioning this issue in the science domain, where scientist would formulate some theories, stick by them for years to come and diminish everyone who would try to contradict them, it does seem like the same problem we are facing now in development

.I always tend to take things like these with a grain of salt, because programming languages nowadays have became a business in itself. As for rust being used in kernel, I think that for long term it is a good thing, it opens doors for younger contributors that didn’t spend half of their life writing C code, however the way it was pushed and forced is a little bit questionable.