Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
Destroyenator
Dec 27, 2004

Don't ask me lady, I live in beer
Scrum™ has been calling them "sprint forecasts" not "sprint commitments" for years now to address the implications of a "commitment". Failing to complete all the tasks (or completing way more than expected) is a failure of estimation. At retrospective you should try to work out why the forecast was off, unexpected absences are obvious but for stories that blew out (or were overestimated) the dev team should consider what assumptions they made that led to that. From there either take steps to address that (eg. new policy of getting all copy to legal for approval before a story is ready to be brought into a sprint) or just keep it in mind for future estimation (eg. anything touching external system X takes a lot more integration testing that expected). Estimates improve over the lifetime of a project as you learn more this way.

The idea of working in sprints is that the development team know what they're expecting to work on over a set time period and locks out the product owner from chopping and changing priorities daily. If you've worked somewhere where the PO can walk in and say "just had a meeting with client X, we need feature Y now, drop everything else" as a regular thing you will appreciate that. The length of a sprint should be decided by the product owner based on how quickly they expect priorities to change, if things are fairly stable they might be happy with one month sprints, if they're expecting to make lots of changes as the project develops then one week gives them more flexibility but forces work to be broken into smaller chunks (with some overhead). (If there is a huge shift in business priorities then can be a valid choice to cancel a sprint and immediately start a new one, this shouldn't happen often and the PO has to accept that all work done in the cancelled sprint is effectively lost and that time is wasted.)

As with all things the actual planning requirements and interactions between people change for every project so try to be reasonable about things. Scrum is a framework for getting teams into agile development and away from a multi-month waterfall model, both in terms of regular delivery of features and feedback loops but also in terms of redefining the expectations and relationships between the development team and the product owner. Once a team is more mature you're able to assess which bits are working for you and what you'd like to change.

Adbot
ADBOT LOVES YOU

Destroyenator
Dec 27, 2004

Don't ask me lady, I live in beer

Xarn posted:

This is also how you can tell whether a team is doing Agile or agile. Sadly I think its much more common for this to never happen than it is for it to happen.
To be honest it can still be pretty bad even when it does happen. I've seen plenty of places that go from this:

Che Delilas posted:

In particular I'm not fond of the meetings that bookend each sprint - they're long and tiring and in my specific case our product owner is not fully participating, which is kind of a problem. There are reasons, but I know this will need to get addressed or this process won't work.
To not addressing what's actually going wrong, deciding that a particular part of scrum doesn't work for them or doesn't fit the management culture and just dropping it.

I think it's mostly an education thing, scrum has been sold as "do these things, be successful" but most of the value is understanding the issues that those processes are there to solve. Changing your process is okay as long as you know what the original point of the process was for, and you understand how the changes help your team while still achieving the original goals.

Not meaning to pick on you Che Delilas, you do sound like you've got the right idea. If you aren't getting the value you expect out of your ceremonies then that's something to discuss at retrospective, make sure everyone is aware of what you should be achieving there and work together to find a way to make that happen. Maybe you change the process, maybe you just reschedule some of your recurring meetings, maybe you do some of them more ad-hoc when the PO is available (but have a way of tracking/ensuring it happens).

Destroyenator
Dec 27, 2004

Don't ask me lady, I live in beer

Ender.uNF posted:

The non-joke answer is to gain enough experience to know how to manage upwards, build consensus among key team members, then just start doing poo poo the way it should be done and use your built-up social and technical capital to make the team follow. Then act like it's always been done this way and why are you rocking the boat now coworker peon Bob and/or manager PHB Stacy? The sheep will follow.
This may work for some people in some places but as a junior level new hire this won't be possible for you. Your best hope is that someone more senior (either technical or management) feels the same way and you can be a positive vote for them. If someone asks you what you think then "you've read about some ideas for process but haven't worked with then yourself, but you would love to hear what they think about this article/link/whatever". This is all down to your lack of professional experience, when you've got three or four years and a few projects under your belt you'll be able to make more impact.

Ender.uNF posted:

You can build a poo poo-ton of capital by looking for highly desired features that haven't been delivered yet then doing them on your own without telling anyone (thus no opportunities to gently caress it up or say no). It requires doing a poo poo-ton of homework, being able to put on your designer and product hats, and making absolutely sure you are delivering something of high value to the business. You also need to reveal it in the appropriate context (eg where the sales team or CEO sees it before middle management can claim credit for it or squash it). Watch for people who want to hitch themselves to your success-wagon and use them to legitimize the process (eg the PM who feels frustrated and knows you can get things done; your next cowboy feature then becomes an official feature "requested by product").
Don't do this. Going dark and working on your own poo poo is really bad, it shows a huge lack of respect for the rest of your team and the management processes in place. You will either succeed and piss off the people around you and the people who're currently setting your priorities, or you will fail and have wasted a bunch of time and piss off the same people. Either way you'll be seen as someone who can't work in a team or follow simple instructions.

There are so many ways this goes wrong, and the fantasy that you'll do some reveal to C-level and they'll all think you're a diamond in the rough and make you the new management is a joke.

Destroyenator
Dec 27, 2004

Don't ask me lady, I live in beer

B-Nasty posted:

I'm an Agile believer and proponent, but I've never worked in a shop where the points didn't somehow end up with an implicit conversion to hours/days.
I've had one project where we strove to do it properly, and it worked really well. We went all the way of having "reference" stories at 3, 5 and 8 points we could go back to when we felt the sizing was drifting. It was the only project I've seen velocity, capacity and estimates all really converge roughly mathematically like you'd hope they would but it did take more effort to achieve that. If that's what the project and management needs it can be done.

Currently we don't estimate much, we'll give rough 3-days/2-week guesses to the PO to help with prioritisation but she knows how accurate they are so we're cool.

Destroyenator
Dec 27, 2004

Don't ask me lady, I live in beer

Munkeymon posted:

Not necessarily. I'm a consultant employed full time by one company and working at a different company, as in I show up at the client and put in eight hour days that my company bills the client for. If I'm not billing hours I'm supposed to show up at the home office and work on something relevant to my professional education, which can be getting paid to tinker with personal projects if you want it to be. I'm pretty happy with the arrangement so far because I can change jobs often without the stupid bullshit involved in actually changing jobs in America or the resume stains and that's been great for networking so far. I'm sure all of this varies by agency but I don't have to travel and I get paid for overtime if the client is even willing to allow overtime - so far they haven't and I'm enjoying my actual 40 hour weeks. The downsides are that I feel like a temp in that I have a hard time caring a lot about stuff like culture, socializing and team building and generally am not treated quite as well as the FTEs as far as office furniture and equipment, but some places are penny wise pound foolish like that.
I used to do similar, it was pretty good but it does depend on the culture of the agency. The one I was at had a point of making sure we were "included" in the company in terms of socialising, being connected to the other consultants etc. and made an effort to not have people on long term engagements by themselves. Having that sort of connection helps if you get a poo poo client or just feel less more like a "professional consulting team" rather than temps.

Destroyenator
Dec 27, 2004

Don't ask me lady, I live in beer
The idea is more like "cover all branches" not "all inputs". If you're testing something that takes two integers you should be thinking about things like the a < b, a > b, a == b, one zero or negative, both zero or negative, both high enough to overflow if you add them. Obviously it always depends on what you're doing, but you should aim to exercise all the different paths in your code. Sometimes it's also worth putting tests in that you think are obvious if makes it easier for others to check their assumptions about your code too.

Disclaimer: You always need to consider the effort vs provided value when you're writing tests.

Destroyenator
Dec 27, 2004

Don't ask me lady, I live in beer
In defence of estimates/velocity:
Good estimates can help with feature prioritisation in time sensitive projects.
Good estimates can give you projections of estimated completion dates.
Doing estimates as a group can be useful to share knowledge and expectations (especially if everyone isn't involved in grooming).
Tracking expected/completed work in a sprint and reviewing it with the team can help reveal problems in your estimation, or to surface distractions or impediments the team had to deal with.
Sometimes falling velocity can be useful to force issues with management eg. "our tech debt is getting to painful levels", "we have to support this other team too much", "we had too many bugs need to spend more time on testing".

It is misused constantly though and what you should push when people get lovely about velocity is: Failing meet the sprint forecast is either due to incorrect estimates or misunderstanding of the team's availability that sprint.

Destroyenator
Dec 27, 2004

Don't ask me lady, I live in beer
Swearing can also be a team inclusion thing. Eg. if you don't swear when upper management or other departments are around but within your own team you do. A group can show they trust or accept you if they're willing to swear in your presence where they wouldn't otherwise.

Destroyenator
Dec 27, 2004

Don't ask me lady, I live in beer
I've seen resumes with keyword sections divided roughly as "strong in", "capable in", and "interested in". It's a good way to show you're doing more than one thing but are self aware enough to rate yourself.

edit: this is probably more suited to the Newbies/Oldies get a job threads.

Destroyenator
Dec 27, 2004

Don't ask me lady, I live in beer
I'm only involved at a technical interview stage so I don't know about HR / recruiter preferences.

Ideally you seperate the things you can go into depth in like "I work in Java every day, I can talk about the jvm, standard tooling, best practices, libraries etc." and your more incidental stuff like "I have done some work on small Python projects or scripting and am happy reading and writing it but I'm pulling up a reference a lot and can't tell you the current best web framework". It helps make your past experience clear and gives you more to talk about without opening yourself up to someone asking you c++ minutiae.

"I've read a bunch about this but haven't had a chance to try it" probably shouldn't be on a resume unless it's clearly a "I'm interested in blah" and that aligns with the job posting.

Destroyenator
Dec 27, 2004

Don't ask me lady, I live in beer

lifg posted:

So what is the value of estimating points over estimating hours?
One reason is to smooth out differences in experience levels. The team as a unit can do X points in a sprint, not every team member is expected to be able to complete each a story in set number of hours.

Also at the end of the sprint when the forecast was wrong the discussion is "why did we only complete 17 points not the 24 we expected?" not "why did you lazy fucks only work 226 of the 320 hours in the last fortnight?".

AskYourself posted:

I find myself being the scrummaster of a small team as the boss asked me to help introduce Agile to the team. I've been very relaxed about it as I've experienced this transition a few times already.

We have daily stand-up and a pseudo-planning every week. We don't demo every week, we don't have post-mortem (but I plan to have some, maybe, eventually), we did start to estimate but no one is held accountable to finish when the sprint is finished, as we understand that unforseen work will happen. It barely feel like agile... and it's great I tell ya.
This is the best way to do agile but you should be doing post-mortems/retros. Having a specific time to reflect and discuss about how the team is operating and how well the process is working for you is important, especially if you've done this before and they haven't.

Destroyenator
Dec 27, 2004

Don't ask me lady, I live in beer

lifg posted:

So if you assign story points, does that mean that you don't estimate hours?

Do story points eventually become a function of hours?
Depends where you work. If the stories are small enough there's no point estimating hours. I think Scrum (TM) says you do points on the story which is the whole deliverable and then split it into technical tasks to build it and estimate hours on those. I would always avoid estimating hours, most of the value for the team you get well enough from points and estimating hours tends to bring out more bad time tracking and blaming poo poo.

In this thread, yes, they become directly translatable to hours. The goal is for it not to work that way though, they should be a measure of expected effort. That might include things like working with other teams or coordinating with other parts of the organisation that you can't really estimate hours on.

If you want to do estimates for the team to coordinate around and to communicate relative sizes to a manager without committing to points or velocities then S/M/L/XL instead of points can work. I should say that on my current project we have a really good PO and we do no estimates.

Destroyenator
Dec 27, 2004

Don't ask me lady, I live in beer

Khisanth Magus posted:

Was wondering if I could get some advice from this thread. A month or so ago our only Sr developer was fired(which is a very long story, but the short of it was that he brought it on himself), and next week our manager is interviewing 2 candidates for the open position. The kicker is that he would like me and one other team member to also interview the people, both to ensure that they actually know their stuff and that they would be a good fit for the team. Neither of us have ever interviewed anyone before, and most of the interviews I've been on the other end of have been complete bullshit. I don't see any real value to asking someone to code some algorithm on a whiteboard. So I was wondering if anyone knew of any good resources I could read to find good interview questions for a Sr dev position.
Ask them about two similar technologies they've used and what differences were. Django vs node, ORMs vs raw SQL, anything that's comparable as long as you have some idea of what they are.

"I see you've done some angular and some react, which do you prefer?"
"If you were starting a new project, why would you pick one over another?"
"Have you run into any problems with that one?"
"Are there situations where you'd recommend the other one?"
"Anything else you have to be aware of when starting out a new project with that / introducing it to a project?"

It's a good check that they've actually used the technologies, a couple of years ago everyone did a five minute tutorial on angular then put it on their CV. You also get to see what sort of tradeoffs they consider and how well they can communicate the technical choices they would make.

Destroyenator
Dec 27, 2004

Don't ask me lady, I live in beer
State provided health care, reasonable social safety net, 37 hour work week, five weeks paid leave as standard?

Destroyenator
Dec 27, 2004

Don't ask me lady, I live in beer
Ask them to pair review it with you.

Destroyenator
Dec 27, 2004

Don't ask me lady, I live in beer
Single point of return doesn't really help though if you're declaring a local "ret_val" variable at the top and conditionally setting it in a bunch of branches. You still have to trace through the logic to see which assignment happens in each case and you don't even get the assurance that it's the final value and nothing else will mess with it.

Destroyenator
Dec 27, 2004

Don't ask me lady, I live in beer

Messyass posted:

Although they are quite rare, competent product owners do exist.

In my opinion the scrum master should lead the scrum team (that includes the PO) in continuously improving their own process. Part of that is the process of backlog refinement, so it may involve helping the PO sort out the backlog and making sure the right meetings take place.
Yeah, the scrum master should just be facilitating the process. A sufficiently mature team doesn't need a scrum master in most cases. That's why it's usually fine to have a developer take on the role or share a scrum master between teams. I think it's usually discouraged to have the PO be a scrum master though.

If you need a dedicated external person to unblock things for your team then you don't have everything you need in your team to deliver the product. That person could be providing real value and it's probably fine for them to be the SM as well but it's not a requirement of the SM role that they run around doing that stuff for you.

Destroyenator
Dec 27, 2004

Don't ask me lady, I live in beer
Specifically for C# you should get a license for Resharper which will give you lots of hints about where the newer features will cut down on code and where you don't match the standard naming conventions. Aside from some of the really out there LINQ translations you should pretty much always follow it's suggestions. For project level layout it's down to experience and exposure to different projects though.

Destroyenator
Dec 27, 2004

Don't ask me lady, I live in beer

vonnegutt posted:

honestly did you ask any questions in your interviews at all

Seriously

quote:

How big are your teams?
What roles make up a team?
How many of your teams are missing a particular role?

Where do requirements come from?
How long does a requirement or idea take before it's ready for the team to work on?
How long does it usually take for a development task to make it from "ready for the team" to "in production"?
Can you outline the steps in that process? (BA-ing/req gathering/product discovery, grooming, sprint forecast, development work, code review, QA, provisioning, other testing/review, deployment)
- Could you give me more details on X?
- How long does X take?
- Who is responsible for code being declared "production ready"?
- Who is responsible for deployments?
- For you personally what is the toughest/slowest/most frustrating part of that process? How would you change it? [Why haven't you?]
Are there any development tasks that are only handled by one person? [eg. only the DBA does SQL, only the lead does X]

If you do sprint commitments how often do you hit that goal?
Who decides what the team works on?
How are development tasks allocated?
What is your biggest bottleneck?
What tasks need approval or help from outside of the team (manager/ops/security/architects/DBAs/legal)?
What percentage of you work is firefighting, maintenance, or new features?
How much of you time is in recurring meetings? Do you have any that you don't think are worth having?

What metrics does the team have on your running system/products?
What overlap is there with Ops?
What does it take to provision and configure a new server?

What are the big goals for this team over the next year/two quarters?
Who are the customers of the team? [internal dept, other teams, paying clients, anyone who signs up]
- How often to team members speak with them
- [for internal] What's the relationship like with that department/teams?

Who would be my direct manager?
- How available is she/he? Are we in the same location/office/desks?
- How many direct reports does she/he have?
- What is her/his background? [technical/non-tech]

Destroyenator
Dec 27, 2004

Don't ask me lady, I live in beer

Portland Sucks posted:

My tech lead is finally starting to come around to the idea of not intentionally writing poo poo code (aka. it's better to copy paste than write functions because then you can see the code on the screen right away!). Anyone know of any good, concise, documents on good fundamentals of code design I can either give him or use as a training aid to dig us out of this hole?
I'd say the biggest aim is to make readable, maintainable code. If you can understand it and reason about it and make sensible changes to it without it falling apart then it's good enough. If you're in a big java enterprise place then that means following the SOLID/patterns stuff because that's what people know and expect, if you're writing one off scripts for automation then it means keeping it as simple and clean as possible. You're writing for an audience of your current team members and future maintainers so you don't need to go wild with patterns if they won't get it, but you can introduce that culture if you think it's worthwhile.

Simple starting points are code review where you question anything that isn't immediately obvious. Whether it's making longer variable names, adding comments to explain for external constraints (eg. 'this external library/hardware needs poking twice before it works'), simplifying control flow, or pulling repeated code out to functions, you goal should be the most understandable code possible. Function extraction, patterns, and objects all follow from making maintainable code in different settings but they aren't a magical goal in themselves.

Destroyenator
Dec 27, 2004

Don't ask me lady, I live in beer
If you don't need a complicated build set up (eg. output of this build feeds into these three builds) I'd aim for a simple hosted service like Travis or AppVeyor, otherwise you're looking at TeamCity or similar. And a paid GitHub account for (a), (b) and (g). It's pretty straight forward to tie those sort of build solutions into the GitHub pull request process so you can have your tests run and report coverage as part of the code review process if you set them to run in the build.

If you need a more complicated issue tracker then JIRA is the big one, I'm not sure what the options are halfway. For the perf testing I think you'll need to give us a bit more information about what you're expecting to do/automate.

If you can get away with not self-hosting I'd always recommend that. Otherwise you will run into crap like the git server running out of disk space, dealing with patching your build agents, provisioning new servers when you want to run more concurrent builds...

Destroyenator
Dec 27, 2004

Don't ask me lady, I live in beer

comedyblissoption posted:

I've personally had the displeasure of working under a milder version of this failure. If you finished working on stuff early in a sprint, you were encouraged to find a tiny (often low value) story you could squeeze into the sprint instead of getting started early on the next big thing. We'd miss deadlines working on stupid bullshit instead of high priority items because of this foolishness.

Sprints are a really stupid loving way to organize work, especially when you start getting insane management decisions hyper-focused on these X-week windows. I think it's a misguided management perception that you can get extra work out of workers with constant short-term deadlines. Work really should just be organized around taking poo poo off a priority queue.
The point of sprints is to protect dev teams from stakeholders coming in with drop-everything-and-do-this requests. The team should be able to push them off to put it in the backlog for the next sprint planning. In the perfect theoretical world you set the sprint length at the start of the project to match the expected cadence of priority shifting, the PO/stakeholders have to be happy with committing to X week blocks of not being able to interfere with dev-work/priorities. Scrum does get misused or just generally fail a lot but it was designed in response to worse patterns.

Using sprints as short term deadlines also goes against the intention. Failing to meet the sprint commitment should be seen as a failure of estimation, not of delivery. That's the one you see misinterpreted/abused the most though because it's the easiest to measure for management.

I don't do scrum anymore and I don't know why you wouldn't be allowed to get a head start on the higher priority items though :shrug:

Destroyenator
Dec 27, 2004

Don't ask me lady, I live in beer

sunaurus posted:

A happy story

Good places do exist. I'm in a similar situation where the level of product and engineering culture, tooling, and support are fantastic and there's always a focus on improving. It's to the level that our less experienced developers don't appreciate how lucky they are to have the autonomy and productivity we do.

I'm trying to work out if there's a good repeatable way to find places like this without just word of mouth. This one I found nearly four years ago by searching job listings for a specific automated deployment system because I figured if they were using that they must be fairly advanced. I'm not sure what I'd use these days, I think a lot of the management/product side of the culture matters a lot but that's much harder to read from the outside.

Destroyenator
Dec 27, 2004

Don't ask me lady, I live in beer

ultrafilter posted:

This. Everything that's written down is a paper trail that can be used to justify a firing.
I can also be used in your favour. I had a bad manager give me a glowing feedback review, then six months later tell me I wasn't measuring up in the exact same areas. Because they were both in writing I was able to show that to my HR rep and explain how he was giving me useless and contradictory feeback and effectively shield myself from any poo poo he threw.

In the happy case having informal feedback processes is good for your own development, but they're also much harder to use to argue for raises.

Destroyenator
Dec 27, 2004

Don't ask me lady, I live in beer

CPColin posted:

I remember one time they handed me a laptop to do the coding exercise on and it was a loving Mac so I knew precisely none of the keyboard shortcuts. "Uh. How do you bring up the Dev Console? This keyboard doesn't have an F12 key."
I once had the same but it was in Visual Studio on Parallels, so basic hot-keys like control-arrow for navigating text by word caused it to jump to the non-parallels desktop. Not great in a high pressure situation for a junior.

Destroyenator
Dec 27, 2004

Don't ask me lady, I live in beer

Prism Mirror Lens posted:

Using “key/value” as a shorthand for “user-facing string/internal value” is pretty common. I guess it varies which way round people choose to say key and value... but if you call the string the value and the value the key I don’t want to work with you :colbert:
Generally I'd say the opposite, the machine readable one is the key because that doesn't change and the user display text is the value because then you can swap out a localised dictionary ($100 / € 100) as you need.

Destroyenator
Dec 27, 2004

Don't ask me lady, I live in beer
The ones I’ve been part of have been two days inside company time. Not many “features” ever made it into being adopted by teams to make it to production but some cool internal dev tools came out of them. The value was always a couple of days developing with sometimes new tech with a mix of people you didn’t normally work with.

Destroyenator
Dec 27, 2004

Don't ask me lady, I live in beer

Pedestrian Xing posted:

Well doctors get paid based on how many tests they run, why should developers be any different? :pseudo:

On another note, how should I bring up concerns with the dev team getting overloaded? In the past few months, the following duties have been added (in addition to the standard development stuff):

  • QA full automation test writing
  • Production deployment monitoring
  • Production operation monitoring
  • Alert monitoring (emails + on-call rotation)
  • Prod support tickets

It's getting to be a little much.

If you've got the team on your side (or maybe only loop in the lead) can you just measure it for a week or two? Rough hours of each of those for the team then take it to whomever and say 35% of time is on these new responsibilities which means what would be a two month new work estimate will now be three months. Probably worse with context switching and prod emergency situations.

Destroyenator
Dec 27, 2004

Don't ask me lady, I live in beer
Also late to the PM chat but my experience with a few good PMs has been that they've been able to bring the team along on why something is being built.

For example "We're building this new onboarding flow because we know if customers integrate with this feature they are twice as likely to renew their contracts, and currently only 30% of new customers enable this". That will also let you use the knowledge and creativity of the team to achieve that goal rather than them just plugging away at "As a customer, when I click Get Started button I will begin the integration wizard so that I can integrate".

Step one is obviously having leadership support for your teams working at goals like that and not feature checklists from sales, step two is getting good at data and experimentation to be able to decide what the most impactful thing to build is for any given goal. @johncutlefish on twitter is good in this space.

Destroyenator
Dec 27, 2004

Don't ask me lady, I live in beer

Vulture Culture posted:

SLI/SLO are interesting, but I feel like they're of principal use to business that already have pretty robust decision-making processes. Where they really shine is when you want to transition operations away from central ops and onto product teams, and you need the right guardrails in place to ensure product teams can own their own availability while keeping reliability and feature development in tension.

Last year, I interviewed a guy for a position in my org who implemented SLOs throughout his whole division, and he was really proud of it. But when I asked him to point to a business decision that was made differently because those SLOs were in place, he couldn't name a single one. This is where overfocus on SLOs runs a high risk in organizations that aren't actually good at making decisions. The SLA is supposed to be a part of a workflow, a trigger for an if-then: if our availability is too bad and we're violating our SLA, we prioritize Thing A and we deprioritize Thing B until we're meeting our availability commitments again. A lot of orgs don't focus the right level of attention on the "then" part of the SLO if-then. Now the SLIs are just expensive vanity metrics.

The most important thing an organization can do around availability is understand the actual impacts of downtime. Disrupted activity, missed work, frustrated users, churned users, lost/incomplete/corrupted data, brand damage, frustrated engineers, frustrated executives. It's people who rely on each other and rely on the systems those other people build. Sometimes, the impact is trivially mitigated. Sometimes it naturally works out close to zero. The guts of SRE is a couple levels detached from the SLO itself: work with the business, determine the real impact, and use your knowledge of numbers and your intuition of complex system behavior to advocate for people who aren't being heard.

This is really well stated and helpful, thank you.

Destroyenator
Dec 27, 2004

Don't ask me lady, I live in beer

HappyHippo posted:

Presumably they could be donated or given away?

Places I've worked have sold them to a corporate reseller at a discount who I guess refurb them and resell them.

Destroyenator
Dec 27, 2004

Don't ask me lady, I live in beer
We’ve got a halfway solution where our team which is responsible for multiple products (within a larger organisation) has them in a single repo using turbo/yarn workspaces. In practice it allows multiple deployable projects to reference “@lib/design-system” and our other reusable pieces without having to split them out and actually package/version them.

It works well enough and we do have builds that trigger only on certain paths that means slower moving services aren’t bothered often. We are full into typescript across everything though which makes the tooling easier.

Destroyenator
Dec 27, 2004

Don't ask me lady, I live in beer
Is the pain point Rails, or it being a monolith, or the single SQL database?
What do you want to be better or easier once you've fixed this?

Destroyenator
Dec 27, 2004

Don't ask me lady, I live in beer

prom candy posted:

The pain point for me is 90% Rails. I want end to end type safety and a language with better DX. And no more inheritance nonsense and no more magic. I've been using Rails for 15 years so it's not like I don't understand it, I just don't believe it's a good solution for 2022's problems.

Maybe it would make sense to spin some things off into microservices as well, for example so I could use faster languages for our background services that run 24/7 and save some money on infra, but the biggest pain point for me is just working in a language and framework that I've come to loathe. I see people building these projects that are e2e typescript where they have type safety from the database schema all the way to their React components. My setup doesn't even have type safety from the database to the model.

Our org is also really really small so I'm not sure if some of the benefits of a microservices architecture would be lost on us. We'll probably grow a bit but not likely to the point where we'll be spinning out teams that would just own one or two pieces of the whole.

In that case I would start finding pieces you can cut off and make into another service, but keep the same data store for now.

When you have a new big feature or rework of an area, see if you can draw a line around that part of the data model and business logic and try to build it out as a separate service. Maybe it's the user profile functionality, let the rest of the code still join for presenting search results if you need, but get an agreement that this new service "owns" the tables involved and is the only place you can write to them or do migrations. (You can always create a new db user for the new service and set up table permissions if that helps with discipline.) Then you build your typed datamodels for the users and profiles and whatever in the service that owns those tables, and present the new version of those API to your apps.

That should give you an idea of how nice or not it is having a separate service. You'll have to address having two sets of logs, monitoring and alarms, deployments and all those fun things so don't underestimate the overhead setting up the first one of these. Tying it to ongoing feature work will make it easier to say something is "done" for now.

Further down the road you can think about splitting the data up, once the data models and ownership are more defined it will be easier to think about what needs to be colocated or has interesting data access patterns. You also might find it's fine just migrating slowly to another monolith.

Destroyenator
Dec 27, 2004

Don't ask me lady, I live in beer

Falcon2001 posted:

I wish someone could explain to me what the benefit of scrum is supposed to be (over a simple Kanban priority system), as I've never worked in an environment where we weren't randomized enough the idea of 'commit to what you're doing for the next two weeks' is just ridiculous. Maybe it's just a different team setup thing?

Scrum came out as a reaction to dev teams being pulled in many directions at once, like situations where VPs, sales, various project managers etc would all walk up to your desk and demand status updates or expect work done immediately.

The point of the PM role was to centralise decision making on that to take those fights away from the dev team.

Locked sprint length with capacity planning etc was meant to give teams certainty of priority for a set time. Ideally it was to force stakeholders to commit to priorities, not hold the team accountable. You can see this a bit in the literature that the sprint length should be decided at the start of the project around how often the stakeholders would like an escape hatch if they need to change direction.

If your team and organisation are mature enough to deal with kanban there’s no on paper reason scrum would necessarily be better. It was intended to improve places that were even worse.

Destroyenator
Dec 27, 2004

Don't ask me lady, I live in beer

prom candy posted:

For PRs how do you handle a scenario where you have a bunch of tickets that are pretty closely related? Like for example today I have to add a screen which is a list of things and then there are a few extra tickets for simple things that you can do with each list item. My preference would be to batch these all into a single PR because otherwise I'm going to wind up waiting around for approval between each one, because one step is dependent on another. Would you just stack like 3-4 tickets into a single PR if the changes are simple enough? The reason they're 3-4 tickets is because when we get into it QA and Design Review it's annoying to have one larger ticket getting kicked back and forth and keeping track of the requested changes.

If you go back to the point of PRs being a risk reduction (of bugs, misunderstandings, miscommunication, and siloed knowledge) then it’s really about what is easiest to review/understand.

If you can do it in one hit go for it? Or if you’re making peoples jobs easier with a few that match your tickets do that.

Adbot
ADBOT LOVES YOU

Destroyenator
Dec 27, 2004

Don't ask me lady, I live in beer

SurgicalOntologist posted:

For context, we're a small startup (30-40 total), already generating revenue but not enough yet to fully support the business, funded by industry partners not VC, all the engineers are 100% remote though most are in commuting distance to the office, several are abroad. Comp target for now is basically 50th percentile in the market, which is enough to assemble a good team but doesn't make it easy. I guess for the COL question, the easiest would be to get market data from the candidate's market, but so far we only found a way to get data from our home market.

I work for a similar sized company in EU with people also in the US. Most of the team is fully remote and they don’t have any COL adjustments, and have consistent salary points for each level (so no bands, every 3.2 engineer is paid the same).

We’ve since moved for my partners work (she’s in academia) and I can’t accept my work suddenly being worth less to the company because I’m remote from a different place in the same timezone.

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply