[-] yournameplease@programming.dev 6 points 5 months ago

If your school has Hackathons, try to do those, ideally with friends. The atmosphere is honestly a bit horrible in my opinion and you may get instant imposter syndrome, but it gives you a project to talk about.

[-] yournameplease@programming.dev 5 points 6 months ago

Leadership may be idiots, but devs are mostly just burnt out and recognized that quality isn't a very high priority and know not to take too much pride in the product. I think it's my own problem that I have a hard time separating my pride from my work.

Thanks for the response. It's good to know that my experience here isn't super common.

[-] yournameplease@programming.dev 3 points 6 months ago

Game dev seems like a place where testing is a bit less common due to need for fast iterations and prototyping, not to say it isn't valuable.

I've seen a good talk (I think GDC?) on how the Talos Principle devs developed a tool to replay inputs for acceptance testing. I can't seem to find the talk, but here is a demo of the tool.

The Factorio devs also have some testing discussions in their blog somewhere.

[-] yournameplease@programming.dev 3 points 6 months ago

We've definitely written lots of tests that felt like net negative, and I think that's part of what burned some devs out on testing. When I joined, the few tests we had were "read a huge JSON file, run it through everything, and assert seemingly random numbers match." Not random, but the logic was so complex that the only sane way to update the tests when code changed was to rerun and copy the new output. (I suppose this is pretty similar to approval testing, which I do find useful for code areas that shouldn't change frequently.)

Similar issue with integration tests mocking huge network requests. Either you assert the request body matches an expected one, and need to update that whenever the signature changes (fairly common). Or you ignore the body, but that feels much less useful of a test.

I agree unit tests are hard to mess up, which is why I mostly gravitate to them. And TDD is fun when I actually do it properly.

[-] yournameplease@programming.dev 6 points 6 months ago

Ehh to be fair, none of the code with coverage is in use by anyone. It's a constantly delayed project that I kind of doubt will last more than a few months in production if it ever gets there. The primary app has no tests, and the structure probably would require dedicated effort to make testable. Most logic goes through this sort of "god object" that couples huge models very tightly with the database. It's probably something that can be worked around in a week or so, but I never spend much time on that project.

I'm not sure if I want to be that guy though, slowing everyone down when scrum master and managers are already constantly complaining about everything going over estimates. (Even if poor testing is part of the problem...) I could maybe get a couple devs to buy in on requiring tests on new code, definitely not QA or my EM though. Last time tried to grandstand over testing, I got "XYZ needs this ready now, I'll create a story for next sprint to write tests." ... 4+ sprints ago, and still sitting there. I just don't really know how to advocate for this without looking like an annoying asshole, after trying for so long.

[-] yournameplease@programming.dev 3 points 6 months ago

This is more or less the thoughts I typically hear online, and all makes sense. What I tend to notice interviewing people from big(ger) companies than mine (mostly banks), it sounds like testing for them is mostly about hitting some minimum coverage number on the CI/CD. Probably still has big benefits but it doesn't seem super thoughtful? Or is testing just so important that even testing on autopilot has decent value?

I get that same feeling with frontend testing. Unit testing makes sense to me. Integration testing makes sense but I find it hard to do in the time I have. But frontend testing is very daunting. Now I will only test our data models we keep in the frontend, if I test anything frontend.

[-] yournameplease@programming.dev 3 points 6 months ago

Was there any event that prompted more investment into testing? I feel like something catastrophic would need to happen before anyone would consider serious testing investment. In the past (before I joined) there were apparently people who tried to get Selenium suites but nothing ever stuck.

I think nobody sees value in improving something that is more or less "good enough" for so long. In our legacy software, most major development is copy+paste and change things, which I guess reduces the chance of regressions (at the cost of making big changes much, much slower). I think we have close to 100 4k line java files copied from the same original, plus another 20-30 scripts and configs for each...

We are doing a "microservices rewrite" that interfaces with the legacy app (which feels like a death march project by now), and I think it inherited much of the testing difficulties of the old system, in part due to my inexperience when we started. Less code duplication, but now lots of enormous JSONs being thrown all over the network.

I agree that manual testing is not enough, but I can't seem to get much agreement. I think I do get value when I write unit tests, but I feel like I can't point to concrete value because there's not an obvious metric I'm gaining. I like that when I test code, I know that nobody will revert or break that area (unless they remove the tests, I suppose), but our coverage is low enough that I don't trust them to mean the system actually works.

[-] yournameplease@programming.dev 10 points 6 months ago

We do have CI (Azure DevOps), we aren't that insane. Though to be fair, it's relatively recent. The legacy app has a build pipeline but no tests. We got automated deployments to lower environments set up about a year back.

My main project has build pipelines as well, Spring Boot "microservices" (probably a red flag given our size and infrastructure) with code coverage around 40-60% mostly unit tests. But I'm the only dev that really writes tests these days. No deployment pipelines there though as the SysAdmin is against it (and only really let us do the legacy app reluctantly).

62

Referring more to smaller places like my own - few hundred employees with ~20 person IT team (~10 developers).

I read enough about testing that it seems industry standard. But whenever I talk to coworkers and my EM, it's generally, "That would be nice, but it's not practical for our size and the business would allow us to slow down for that." We have ~5 manual testers, so things aren't considered "untested", but issues still frequently slip through. It's insurance software so at least bugs aren't killing people, but our quality still freaks me out a bit.

I try to write automated tests for my own code, since it seems valuable, but I avoid it whenever it's not straightforward. I've read books on testing, but they generally feel like either toy examples or far more effort than my company would be willing to spend. Over time I'm wondering if I'm just overly idealistic, and automated testing is more of a FAANG / bigger company thing.

[-] yournameplease@programming.dev 9 points 7 months ago

You can start by using plain, semantic HTML and grabbing a classless CSS with a license you like. (Check out this list.)

It's good enough for a simple app or site, and it's honestly impressive how good something can look with just this. It's the "plain t-shirt and jeans" of web design.

[-] yournameplease@programming.dev 3 points 8 months ago

Great advice, you two. Have a bunch of kids and teach them APL, Actionscript, and Autohotkey. On it!

:)

48

I have about 2 YoE, and I'm sure this changes with more experience.

I often hear this idea online that programmers should follow "just-in-time" learning, meaning you should prefer to learn things you don't know while on the job. ( The way some people talk about it, though, it sounds like you shouldn't dare spend a single minute learning anything new outside of your 9-5. )

This seems generally reasonable advice, especially for simpler things that take a few hours like learning a specific language feature, library, or similar. But when I lean too much on this JIT learning, it feels possibly detrimental.

Many times I do something big and new to me, say, deciding how to approach auth, microservice architecture design, automated testing, containerization, etc., I end up making a big decision after a few hours or days of cursory reading on documentation and blogs, only to come to regret it some months later. At that point, maybe I'll slow down, find a book on the subject, read it, and think, "Oh, darn, I wish I knew that N months ago." It certainly feels like spending more time learning upfront could have avoided mistakes due to lack of knowledge. Though there's no way to go back in time and know for sure.

I'm not asking about any area listed in particular. I feel like, for all of those, I've learned more in the time since, and would probably avoid some of my prior mistakes if I did it again. The question is more: How much do you subscribe to this idea of just-in-time learning? And if you do, how do you know when you've learned enough to be confident, or when you need to slow down and learn in more depth?

[-] yournameplease@programming.dev 3 points 8 months ago

I admit it's possible the project "succeeds" and gets out the door. My prediction in that case is that we limp along and eventually give up after maintaining it for a while.

I only work my ~40 hours a week. When I did much more than that, I think my output went negative.

I think I learn a lot, at least. The project has a more "modern" stack than the company's other main product. And management/leadership being hands-off means I make a lot of big decisions myself. Many bad decisions, but at least I learn what not to do next time.

[-] yournameplease@programming.dev 5 points 8 months ago

High on all fronts on that test, which does not surprise me. Though what you describe sounds worse than what I have. I'm just generally tired and pissed off, despite thinking myself a normally happy guy.

I'll take this as my nudge to put my casual job search into overdrive.

42

Scene: Surprise meeting with the project owner 0-3 days before the go-live date

"Hey team, the business and I have decided to postpone the project release by n=1-3 months because [they aren't ready for it / it isn't finished /regulatory reasons]. And since we have some extra time now, we can tie up all the loose ends on this project (i.e., 'we've added n+1 months worth of backlog items to the MVP')."

I'm still a greenish dev, so maybe this is normal, but I've had the same story going on for over a year now, and it's really starting to burn me out. In the beginning, I was optimistic. Now I just hope for the project to fail, or me to get off somehow, but this thing just won't die.

Anyone with experience on similar projects able to share words of advice? Do they ever end up working out? Seems there's a death spiral, since we are always rushing to a deadline, forgoing tests and quality but never cleaning up our mess because we're already behind. Yet I somehow feel like I'm the crazy one for thinking this 6-month "quick" side project turned 2+ year half-rewrite will have trouble meeting it's Nth deadline.

view more: next ›

yournameplease

joined 8 months ago