Join devRant
Do all the things like
++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatar
Sign Up
Pipeless API

From the creators of devRant, Pipeless lets you power real-time personalized recommendations and activity feeds using a simple API
Learn More
Search - "group dynamics"
-
dev, ~boring
This is either a shower thought or a sober weed thought, not really sure which, but I've given some serious consideration to "team composition" and "working condition" as a facet of employment, particularly in regard to how they translate into hiring decisions and team composition.
I've put together a number of teams over the years, and in almost every case I've had to abide by an assemblage of pre-defined contexts that dictated the terms of the team working arrangement:
1. a team structure dictated to me
2. a working temporality scheme dictated to me
3. a geographic region in which I was allowed to hire
4. a headcount, position tuple I was required to abide by
I've come to regard these structures as weaknesses. It's a bit like the project management triangle in which you choose 1-2 from a list of inadequate options. Sometimes this is grounded in business reality, but more often than not it's because the people surrounding the decisions thrive on risk mitigation frameworks that become trickle down failure as they impose themselves on all aspects of the business regardless of compatibility.
At the moment, I'm in another startup that I have significantly more control over and again have found my partners discussing the imposition of structure and framework around how, where, why, who and what work people do before contact with any action. My mind is screaming at me to pull the cord, as much as I hate the expression. This stems from a single thought:
"Hierarchy and structure should arise from an understanding of a problem domain"
As engineers we develop processes based on logic; it's our job, it's what we do. Logic operates on data derived from from experiments, so in the absence of the real we perform thought experiments that attempt to reveal some fundamental fact we can use to make a determination.
In this instance we can ask ourselves the question, "what works?" The question can have a number contexts: people, effort required, time, pay, need, skills, regulation, schedule. These things in isolation all have a relative importance ( a weight ), and they can relatively expose limits of mutual exclusivity (pay > budget, skills < need, schedule < (people * time/effort)). The pre-imposed frameworks in that light are just generic attempts to abstract away those concerns based on pre-existing knowledge. There's a chance they're fine, and just generally misunderstood or misapplied; there's also a chance they're insufficient in the face of change.
Fictional entities like the "A Team," comprise a group of humans whose skills are mutually compatible, and achieve synergy by random chance. Since real life doesn't work on movie/comic book logic, it's easy to dismiss the seed of possibility there, that an organic structure can naturally evolve to function beyond its basic parts due to a natural compatibility that wasn't necessarily statistically quantifiable (par-entropic).
I'm definitely not proposing that, nor do I subscribe to the 10x ninja founders are ideal theory. Moreso, this line of reasoning leads me to the thought that team composition can be grown organically based on an acceptance of a few observed truths about shipping products:
1. demand is constant
2. skills can either be bought or developed
3. the requirement for skills grows linearly
4. hierarchy limits the potential for flexibility
5. a team's technically proficiency over time should lead to a non-linear relationship relationship between headcount and growth
Given that, I can devise a heuristic, organic framework for growing a team:
- Don't impose reporting structure before it has value (you don't have to flatten a hierarchy that doesn't exist)
- crush silos before they arise
- Identify needed skills based on objectives
- base salary projections on need, not available capital
- Hire to fill skills gap, be open to training since you have to pay for it either way
- Timelines should always account for skills gap and training efforts
- Assume churn will happen based on team dynamics
- Where someone is doesn't matter so long as it's legal. Time zones are only a problem if you make them one.
- Understand that the needs of a team are relative to a given project, so cookie cutter team composition and project management won't work in software
- Accept that failure is always a risk
- operate with the assumption that teams that are skilled, empowered and motivated are more likely to succeed.
- Culture fit is a per team thing, if the team hates each other they won't work well no matter how much time and money you throw at it
Last thing isn't derived from the train of thought, just things I feel are true:
- Training and headcount is an investment that grows linearly over time, but can have exponential value. Retain people, not services.
- "you build it, you run it" will result in happier customers, faster pivoting. Don't adopt an application maintenance strategy
/rant2 -
Becoming member of a political party.
I met a lot of smart people, had many great debates about different issues, yet most of all: I learned how dangerous group dynamics can be. (It's insane how fast Us-vs-Them-group-thinking can manifest itself.) I learned to reflect myself (the hard way) and that if I want to convince someone, rational arguments is not enough if you are a dick about it and that sometimes the how you say things is so much more powerful than the what.
Basically, I learned a valuable lesson on how (not) to communicate. I still profit from that on a daily basis in my work as a developer.
(On the other hand, the whole experience made me rather cynical about the state of the world at large.) -
So this is kinda shocking but expected and deep and with layers:
layer 1 :
I just realised that : AI +Junior dev + 10% senior dev = 1 Senior Dev. This doesn't quite sit well technically, but for certain managers, this logic works and I got to see it working.
So I got cancer and took a sabbatical of 2 months. I am a dev with 6+ yrs of experience, and before I had gone , I was making PRs that consisted of adding features which required 3-4 screens , numerous logics, multiple APIs and which sould add significant impact. Basically a 3-4 days worth of task, all done solely by me to perfection, which comes with years of experience with nitty gritties of android.
And just a month ago, our team was joined by a fresh college passout, who did basic course of flutter, had 0 knowledge of Native Android and was making terrible screens using xml and viewbinding as a part of his initial training.
Now when I come back, I see a weird dynamics in group: he is always sitting around another SE1 , and is working on a task of similar intensity as I would do. He asked for an estimate of 5 days(!) and was able to create all the screens apis logics etc in those days.
1. during this time, he was near our seats every 10 mins, showing what he has made, asking next steps, and then going back to his seat.
2 on his seat, he would open chat gpt, put all his code there, get some response, put it back in AS gemini, then put it in AS, fix red lines again using gemini, run and come back to us to show if its correct.
3. and somehow his code did ended up working.
4. I reviewed his pr and apart from some basic fixes, all seemed fine. His code didn't considered various edge cases but I said fuck it, its responsibility of dev and qa to identify those cases (my PRs are essentially reviewed like this only, that's how i learnt to write quality code which won't burst on input of "abc" instead of "123")
5. but then his code got merged in temp branch from where we were to give the qa build and it crashed 3 seperate screens unrelated to his feature but related to the shitshow he had done on the data layer.
6. he and his SE1 senior then again fixed that shit and the that feature got merged, reviewed by QAs , got fixed for more bugs and finally got merged in our code.
7. however all this (stuff before qa review) happened in those 5 days and thus the managers thought that the task was done by this junior trainee in 5 days only .
thus trainee + AI + 10-30 mind per hour per day of SE1 (~3hrs) = 1 feature.
now my salary = 2x of trainee..
if i am layed off and 10% increment is given to that SE1, the total cost saved by company is around 40% of my salary.
And this blows my mind coz ever since I came, I am getting menial tasks while freshers are being given large scale tasks.
layer 2 : is it good for company?
I might sound biased but company would soon need to realise if they could afford cutting on reliability of experienced devs with this weird "hack the system with AI" style of development.
Even we seasoned devs use AI but review it on our own and think of cases before putting it in front of stakeholders as "yes sir, done!"
Additionally I don't think putting confidential code from codebase onto grmini and chat gpt would always be considered okay. Its like no one is caring for data now, but if those companies tried to come up with competition or something , we are digging our own grave.
layer 3 : is it impacting users(i e the devs?)
Well, I am scared that they might think of me as a burden and fire me for a junior trainee, so yeah its highly impacting me.
But that SE1 that is helping this trainee guy, is this part of his job role now?is it part of every Senior dev's role to train trainees via AI bots?
And what about that trainee himself? Is this really beneficial for him to learn Android Development like that?
---------
I personally have always valued folks who could write efficient code . I don't care about their ds algo knowledge, or if they deeply understand the working of apis and core code underneath. Just writing efficient, easy to understand and reliable quality code was enough for me to hire u and vice versa.
But AI is changing things for the bad and I think we will be seeing an even more increase in ds algo questions and other shitty ways by which faang like companies seperate cream devs from the rest. And this would be coming from every startup/mnc/small scale company , not just the FAANG4 -
Question: is it common for a boss to make you stay late because your teammates are working on something big (that you're not involved in) and they're staying late? Because he touts that it's team unity, but I feel like it's false imprisonment.8
-
What do you think of devRants culture? Anyone interested in group dynamics and behaviour that has thought of devRants culture through that lense? I see clear (but nice) signs of certain behaviour uncommon to other forums that could definitely be categorized as stage 1 and 2 (forming and norming) behaviour! Such as heightening I the importance of the group, often a against a clear other part (nondevs/bosses). As well as strong (for the internet) focus on inclusion of new members. What are your thoughts on this? ❤️devRant