Live data from Hacker News

Software engineering topics I changed my mind on

chriskiehl.com

541–550 of 704 posts

Re: Software engineering topics I changed my mind on

#541
post #13

> Designing scalable systems when you don't need to makes you a bad engineer. > In general, RDBMS > NoSql These two bullet points resonate with me so much right now. I'm a consultant and a lot of my client absolutely insist on using DynamoDB for everything . I'm building an internal facing app that will have users numbering in the hundreds, maybe. The hoops we are jumping through to break this app up into "microservi…

As an engineer-turned-manager, I spend a lot of time asking engineers how we can simplify their ambitious plans. Often it’s as simple as asking “What would we give up by using a monolith here instead of microservices?” Forcing people to justify, out loud, why they want to use a specific technology or trendy design pattern is usually sufficient to scuttle complex plans. Frankly, many engineers want to use the latest t…

The question one should ask is: what $hot_tech can we adopt without the product becoming significantly worse than with $old_tech? That is, which things do we adopt only or mostly to make the project or company attractive to work with or invest in?

Saying “why would you ever do that rather than building the solution the cheapest and with the lowest risk” doesn’t fully appreciate the importance of attractiveness.

I’m selling my hours of work time for a salary, fun, and resume points. My employer pays me in all 3. I’ll always push for $fun_tech or $hot_tech despite it not always being in the short term interest of anyone but myself or my fellow developers. I’ll keep justifying this by “if we do this in $old_tech then me and half the team will leave, and that’s a higher risk than using $new_tech”.

(By tech I here mean things like languages and frameworks not buzzwords like microservices or blockchain, ai... )

Re: Software engineering topics I changed my mind on

#542

Earlier quoted context omitted.

This was probably the one bit that I really disagreed with. I've never been a Java developer, but I've had to touch it a few times in my career, and have quite happily left very well paying jobs for lower paying jobs just to avoid having to write more Java. I can't rightly think of any language I would plausibly have to use in industry that I find more unpleasant than the Java and the entire JVM ecosystem (disclaimer…

> deeply unpleasant to use, such a profoundly nightmarish vampire of morality, so utterly and irredeemably cruel in it's ability to strip all joy out of the art of software development... Oh my... As a Java developer, I'm curious. Can you elaborate a bit? Was this some really old version of Java, a horrible IDE, crazy frameworks, something else? Am I living in a nightmare and just haven't woken up yet? I realize that…

I’m sure a lot of it comes down to taste and personal preference, but for me everything about java is just very high friction. I find the docs and standard library deeply unintuitive and hard to navigate, the language itself feels verbose, inflexible, and the spec for the language is very large and complex. The type system is inexpressive and overly limited. The applications themselves, by virtue of the jvm, feel deeply disconnected from the underlying system. I don’t like the fact that Java seems to assume I’m going to use an ide with auto complete and refactoring.

I’ve used a lot of languages professionally in my career: C, C++, Go, Perl, python, ruby, JavaScript, typescript, Erlang, Haskell, Rust, some Kotlin and Java. There are some languages I quite like working with (Haskell, C, Go) and languages I can use just fine but I’m not that fond of (python, JavaScript) and plenty of stuff in the middle, but nothing that makes me want to just walks away from the computer in disgust like the JVM languages.

Edit: a final though.

Really, our industry is pretty new and we’ve made a lot of mistakes. All of our languages have warts and deep flaws. Happiness in your career isn’t about finding something perfect, it’s about figuring out which flaws you can live with and which ones you can’t. I could go on about technical reasons but at the end of the day the JVM is just full of flaws I can’t just live with, and for whatever reason I’ve talked to a lot of other developers who feel the same way, and many who don’t.

Re: Software engineering topics I changed my mind on

#543
post #13

> Designing scalable systems when you don't need to makes you a bad engineer. > In general, RDBMS > NoSql These two bullet points resonate with me so much right now. I'm a consultant and a lot of my client absolutely insist on using DynamoDB for everything . I'm building an internal facing app that will have users numbering in the hundreds, maybe. The hoops we are jumping through to break this app up into "microservi…

As an engineer-turned-manager, I spend a lot of time asking engineers how we can simplify their ambitious plans. Often it’s as simple as asking “What would we give up by using a monolith here instead of microservices?” Forcing people to justify, out loud, why they want to use a specific technology or trendy design pattern is usually sufficient to scuttle complex plans. Frankly, many engineers want to use the latest t…

IMO it's a no-brainer to choose complex technology, the incentives are much more attractive.

Go the simple way and it works, you get paid and off to the next project, if it doesn't work, its your fault.

But on the job experience with scaling tech is way more valued than doing some online course, you get paid to learn by doing on company time, and you don't lose anything by possibly wasting company resources. So you tick the box that often job postings have "proven track record of " which could possibly lead to a much better salary, its all incentives.

Re: Software engineering topics I changed my mind on

#544

> TDD purists are just the worst. Their frail little minds can't process the existence of different workflows I'm not one, but my money is on this one changing, at least in tone. It's deliciously ironic as currently written.

Maybe you've never experienced the anguish of having to pair program with a TDD purist. I honestly wonder how these people tie their shoes without performing a few deliberate face-plants first "just to make sure."

Re: Software engineering topics I changed my mind on

#545

Another low effort blog post that Hackernews readers have upvoted because it says obvious things that they agree with. Quality on blog posts and articles is taking a bit of a dip lately.

I disagree, this is healthy exchange. Programmers -- and their employers -- want to discuss what works and what doesn't in the crazy world of software development.

Although this might not be a moment of reflection for you, there are software projects big and small happening all over the world, every day. A large proportion of them fail.

Or don't fail completely as long as we learn something.

Re: Software engineering topics I changed my mind on

#546
post #66

11 years in and my one critique is: >Designing scalable systems when you don't need to makes you a bad engineer. You have to have a very good understanding of the 'need' ahead of time or you're effectively just playing a kind of lotto. Do the bare minimum and it meets the need, you win. Do the bare minimum and it doesn't, get ready to start over, you lose.

I disagree. Well designed systems can normally be scaled, the scaling problems are generally well understood. Scaling prematurely is silly and costs a lot of time and effort to support customers that don't exist.

I'm not clear on what part of my statement you're disagreeing with.

Re: Software engineering topics I changed my mind on

#547
post #269

Earlier quoted context omitted.

We decided early on that a daily scrum was just too frequent to be effective for our team, so went to 2x per week. When we started working from home, we added a "keep in touch" meeting for the other 3 days of the week just to stay connected.

Our standups (for a team of four) are about 15 minutes. Then we just leave the zoom on and co-work together out loud for an hour or two. It's pretty priceless the stuff that comes up during that time.

Always thought this will be useful, but never had a chance to experience it. What kind of stuffs come up?

Re: Software engineering topics I changed my mind on

#548

Earlier quoted context omitted.

Agree with this wholeheartedly. Standups are annoying but I have learned they are necessary, even as a very experienced developer. Sometimes things just cone up you wouldn’t otherwise know about and it encourages helpful, meaningful communication amongst the team. What’s not helpful is when standups are treated like status reports. That’s not the purpose - even uber green newbies are responsible enough to do their wo…

I do not understand why people have to wait to discuss the blockers? Discuss a blocker whenever you have one.

this is legit. sometimes i feel like i wait a little too long to gather notes or brainstorm possible solutions when i could probably get that going faster by involving a colleague and tag teaming it. it is a balance i am trying to work on because i feel like i “don’t want to bother anyone” a lot.

Re: Software engineering topics I changed my mind on

#550

Almost 20 years of professional experience here: I fully agree with this list. I even want to add a few things: > Clever code isn't usually good code. Clarity trumps all other concerns. My measurement is "simple and clean" code. Is it simple and clean? No? make it so! > After performing over 100 interviews: interviewing is thoroughly broken. I also have no idea how to actually make it better. If a good developer you…

I'm also at 20 years, and he has hit the nail dead on. I can add a few things: * Operational considerations dominate language choice. * Architecture too. * Politics, leverage and all that MBA crap dominate all of that. * Language zealots are net negative idiots and need taking outside and shooting. * Actually apply that to all zealots. * The root cause of the above is often insecurity; and it can be coached / culture…

I’ve been saying for a while I’m pretty sure I can hire decent developers based on a conversation and not the assault course hiring process that’s normally used.

Now I’m sure for certain roles, highly specialised stuff that isn’t true. But I tend to be hiring for teams building pretty standard stuff, line of business tools, general saas products, etc. For this you just need smart, reasonably experienced people who are easy to get along with and ask decent questions.

Post reply on HN