HN user

cygned

1,461 karma

top: #aba4de

¯\_(ツ)_/¯

Posts3
Comments435
View on HN

We don’t post salary ranges right now. We are a small firm and cannot keep up with the salaries from enterprises in our area. We are looking for (and finding) candidates that are willing to sacrifice parts of their salary for 100% remote, flexible work time, PTO and others.

We decided to screen applicants in an informal phone call and discuss salary options at the end, after they had a first impression of how we are as a firm.

what I am arguing is that SCRUM as most enforced things "micromanage and/or ignore human psychology".

I think you are arguing Scrum can lead to these situations - which you cover in your other thoughts. And I agree, I have seen that often, however, I’d still don’t say it’s inherent to Scrum itself.

how SCRUM is not micromanagement when every day, a guy (which in my decade long experience has always been either a manager-role or someone wanting to be a manager) comes and gets the report on the tasks that you work to the granularity of one hour (sometimes even 30 minutes for properly crazy SCRUM masters) and intervenes afterwards if he considers it needed.

Yeah that’s awful micro management. I know it’s easy to dismiss that way, but what you are describing is not Scrum, that’s just saying Scrum and making people miserable.

In the end, I do not want to argue for Scrum as the solution for everything. It’s really hard to do it right. On one of the teams I am consulting right now, we went away from Scrum because it didn’t work - fascinatingly due to different reasons as you mention, different mindset in terms of what management does and how control is exercised.

Aren’t these interactions put in place to create transparency across the team regarding progress and purpose as well as empirical validation? I am not sure how that necessarily clashes with social structures inside the Scrum Team or micro manages its members.

Every single tiny aspect of work is dictated by somebody else, commitee or some kind of process.

That is not the way Scrum is meant to be implemented. The goal is to have a cross-functional, empowered team with the ability to make their own decision. The Product Owner - as part of that team - makes ultimate decisions as to what the product will be.

It creates unnecessary hard social situations

Yes, social conflicts in team can be tough. Following the values of Scrum, respect and openness in particular, helps teams sort these things out. I know that in practice, it involves a lot of skill to guide a team through those phases.

the components of motivations in pretty much any other fields are autonomy, mastery, accountability

You are absolutely right. If you read through the Scrum guide, you will find all those aspects in there. I think what you are describing, though, is how Scrum is "lived" in many organizations, which have difficulties empowering teams and provide the environment necessary to do Scrum.

In these situations, the answer is often that Scrum simply don't work, it's clashing with your culture and structure. Many teams opt to implement parts of Scrum - which is fine and might work exceptionally well, but it's not Scrum.

Whenever I come across teams with situations outlined as in this article and I talk to the people involved, it becomes apparent that Scrum was implemented for the sake of implementing Scrum without understanding. The values and the concept of empiricism are important to grasp in order to effectively leverage Scrum - that is why you have a Scrum Master, not as a manager of any kind, but as a coach and facilitator.

The main challenge I see people having is that Scrum was designed in a way that it screams in your face when you screw up and many organizations fight that instead of inspecting and adapting their way of working.

The lower entry barrier for a lot of things.

It allows the community to grow, learn and become more diverse.

On the other hand, I regularly read blog articles about complex topics from people that should rather not write about it. I know "senior software engineers" where I ask myself how they are capable of tying their shoes each morning. I see people get praised for achieving the bare minimum, like putting five pictures on LinkedIn about a topic they hardly understand at all.

Others will talk about the benefits, so let me give you a few gotchas from us:

1. It does not replace type checks at runtime (in integration layers)

2. Compilation and startup (in backend land) is slow

3. Some tooling seemingly caches (webpack? ts-node?), we regularly run into situations where rebuilding locally works but then building for prod fails with type errors

The thing is, though, that Typescript is not solving runtime type checks. Typescript is declarative, it does not check at runtime and if you have any code interacting with third-party data sources and you do not check there, things will explode down the line.

I'm not sure what "spreading" even refers to

We have code like (stupid example)

    something.map( {a, b, ...rest} => ({ ...rest, ...a, ...[b, c, d]}))
I know what it does and how it works, but I argue that's hard to understand if you haven't written it and know the context.

My Python experience is limited to only a handful of projects, but I looked into meta classes at the beginning of learning Python and that was some crazy stuff.

What I am referring to with factories in particular is that I can have a bean injected in Spring automagically using an annotation, have an interface and an implementation behind it.

Now, I can go ahead and make the concrete implementation dependent on configuration, e.g. by providing multiple implementations annotating them with a condition that is evaluated using the application configuration. I can also switch to a factory method that creates and sets up the concrete implementation for the interface, I have not to change any place in the application that is using that piece, though.

The same should be possible in Go with reflect and an IoC container, but I am not sure if there's a solid implementation for that out there.

I am leading a transition from TypeScript to Java + Spring Boot and comparing those side-by-side, Java is significantly easier to follow. In TypeScript, we have a (from my point of view) too complex type system and features like destructuring and spreading, that sound smart but actually make it difficult to understand if you are not the author of the piece in question.

What do you find magical in terms of Python in particular?

The aspects mentioned (Spring, DI containers, ...) are tool on top, though. If we just look at the language, I'd argue Java is boring - which is a good thing for certain types of applications. In languages like JavaScript, you have a number of ways to do things with all kinds of different syntaxes. In Java, there are fewer, but well understood options, that sometimes require more and sometimes require less actual code to achieve the same thing. This is highly subjective, if course.

We would use them as data transfer objects between different layers of the system - however, they cannot extend another class and thus are not suitable in our specific case.

MSSQL

T-SQL is just so a weirdly ugly language and the feature set of SQL Server is super weird.

If we can, we go with Postgres or MySQL.

I try to find an agile project management tool that works for us. We run on what many would call Scrum (it’s not actually Scrum).

We are on JIRA now, and it’s … JIRA. We tried basically any other tool, including Excel (yes, that is somewhat possible).

My problem generally is that tools are slow, planning is cumbersome, visibility is limited and reporting for clients is often even more limited.

Heck, I’d even write my own tool if I knew it would help others, but I am concerned it’s too close to what we already have for anyone to actually migrate.

You could help me by sharing your thoughts!

I do mise-en-place (preparation) and use TeuxDeux as my todo list. It’s so super simple but such an effective tool, so limiting it’s not getting in my way.

I tried everything else, every tool, every technique - nothing works for me. I can’t even use JIRA at work, I put things in TeuxDeux or on a paper list, otherwise I will forget what I need to do.

I always wondered if other people had similar challenges. Maybe I am too simple for tech productivity tools.