• 1 Post
  • 9 Comments
Joined 1Y ago
cake
Cake day: Jun 24, 2023

help-circle
rss

At least they are not a tee pot


How to find truth in Agile?
Hello my fellow, lemons? I have this problem in my current project I’m out of clue how to approach it. Maybe someone had similar experience and can give an advice. Our requirements captured in JIRA. Throughout years we accumulated thousands of user stories. Say suppose following naive requirements *team* knows about: - Day 1: create home page - Day 20: create profile page - Day 50: add green footer to all pages - Day 100: create admin page Day 150: change footer color to blue Now I’m doing refactoring (yes, I know, this is the actual problem) on day 400 and noticed that footer on profile page having green footer. Because requirements are just set of individual statements not consolidated with all history of system no one on the team knows why is that, is it bug or requirement did change on day 300 but we cant find it now. When I worked in Waterfall we had BRD and FRD stating current actual desired state of system which was “reduced” from individual requirements which were coming in throughout project life. When in doubt devs can check FRD and not only know how system expected to behave but also which are other parts of the system that will be affected. How is it in Agile? To my understanding FRD is not a thing in Agile. Do I need to scan through hundreds of tickets and hope I didn’t miss anything every time i’m doing any non-trivial change to system?
fedilink

Please, can you give an example of such code snippets? I’m wondering what people consider reusable in different projects.


To me, generated code should not be committed at all. Again, I know nothing about this stack but code generators can have different behavior on different machines due to versions, flags and even OS. To deliver consistent results they should run in consistent env. It’s build time concern which CI/CD should take care of.


I didn’t get do you do integrations besides of your DB.

To me architecture sounds good anyway. I’m not GO dev but it looks like stack is your main problem not architecture itself. Multiple models is great long term approach which makes sure you are not leaking implementation details of your persistence/3rd party services to your client. You have layer of mappers where you can enrich model in optimal way and at the same time you can accommodate whatever client request/payload quirks you may need. Yes it’s sometimes annoying to add one field and pass it across all layers but it’s the price and software development is all about balance and compromises. I worked in projects that didn’t follow this architecture and any kind of change in DB/3rd party were cascading through entire application so end up changing hundreds of files instead of couple of models and few mappers

You may have issues with this architecture if you invoke services directly one from another for complex use cases. This can couple things together. If that’s what’s happening think if can apply Facade. Try using/reusing more trivial and focused services in Facade to make sure that for example Order service does not depend on Client service. Leave it to ClientOrderFacade.


I like (no) how everyone knows this is about everybody’s mental health but you can only push things these days if iT iS aBoUt cHilDrEn or other touchy topic. Apparently adults can’t have mental health issues I guess, otherwise how will they do their jobs for cents



First of all, what you are doing is integration via DB. Unless that was conscious, I would avoid using this approach. System is much easier to manage when DB/schema used at most by one app. You have two ways to achieve it, move towards micro-services or monolith. Yes monolith is still great for some use cases.

If we talking about your current system state every app should do changes in most backward compatible way. It worst cases it will lead to duplications. Let’s say if you want to change table X because there is such need for app A and at the same time app B uses this table. Instead of modifying X you create table Y that satisfies needs of A and make sure that data written into Y as well as into X to maintain B.


I love waterfall as an developer, I’m using agile now and we have incomplete, conflicting designs every sprint, or spills which affect our metrics, where in waterfall you can workout all the details and have full vision of product and better design with less reworks.

Not to mock you. My point is that methodology is not import when team consists from responsible professionals


“But I’ve told to users that we will deploy this feature tomorrow”