It's crazy that we go out of our way to design processes (code review, design review) to avoid actually just... working together?
And then we design organizations that optimize for those processes instead of optimizing for collaboration.
I’m a senior dev currently interviewing for a team lead position at a startup. While I consider myself highly technical, the things that frustrate me the most day-to-day are teamwork related. Lack of trust. Teammates who don’t want to talk to each other. Other seniors getting away with subpar work. Lack of clear team purpose and product vision. Lack of buy in on common engineering practices.
As a people manager these issues I care so much about would be within my sphere of influence and responsibility. For better or worse.
I felt this - a lot of the problems I've experienced with teams before could have been solved by the management.
In practise now I find that I am a Team Lead and yet I have far less ability to influence things than I thought. There are a host of people including my boss who want to run everything and expect me to be a rubber stamp.
In fact I get into shit more because I have to speak up for people in the team who are (unfortunately) rightly afraid to. Like "for a story to be ready we need the API defined" - how can QA work in parallel on automated tests when they don't know what to test? Scrum masters, POs, my manager, architects......they just talk whichever shit suits them today as if it was all self evident truth and tomorrow they're moaning about why the tests are late.
Basically you get into the politics of who is to blame for the state of affairs and the people who chose those directions and strategies are well connected and good at shifting blame.
I don’t fully agree with all points but there are many words of caution to be spoken about the expectation that by moving to a manager role you get more agency on the things that frustrate you as a sw eng. “The managers path” is a good resource to expand on that. https://www.amazon.com/Managers-Path-Leaders-Navigating-Grow...
> I need to run tests, use goto definition and other editor navigation features, apply local changes to check if some things could have been written differently, look at the wider context to notice things that should have been changed, and in general notice anything that might be not quite right with the codebase
It sounds like the author really wants pair programming
There are certainly situations where, as a reviewer, 5 minutes of goto-definition on a PR branch, or a well-placed debug breakpoint while running a test, is all you need to write a more prescriptive comment than “I don’t understand how this data flows” - and thus avoid both a follow up meeting and the need to pair program in the first place.
Pairing absolutely has its place, but it’s not always the most optimal use of time.
I made a pomodoro timer display using a WiFi-connected ESP32 board with a small OLED display. I put it outside the guest bedroom/home office door during lockdown so my family members could see how long until I could be disturbed.
It talked to my laptop using MQTT and of course it was triggered from emacs using org-pomodoro.
At my job, we're breaking down a monolith into services with a hand-me-down database schema. DB changes are manual, every dev runs against a shared test DB, and everybody dreads doing schema changes. I've been looking for a way to transition into version controlled migrations and it looks like sqitch might be a solid option, as the language-specific frameworks are too opinionated. Thanks for recommending!
FWIW there are other general migration frameworks worth considering; the two most popular seem to be Flyway and Liquibase. I've heard good things about both, and don't have a particularly strong defense for my sqitch preference. I like that it's simple, has great docs, and has verification as a natural step in the workflow.
My first paid programming job was making a client for a remote monitoring solution for the water industry. I must have been 14 or 15. One of my father's acquaintances knew I had been messing around with programming, and he needed a shiny Windows 95 application for his customers.
It would dial the plant via modem, and I remember being given a list of "escape codes" that determined how the stream of bytes should be rendered on the screen. My program parsed (some of) these codes and displayed the text accordingly, I specifically remember implementing the "move cursor" and "reverse mode" codes...
Not until years after did I realise I had basically built a shitty terminal emulator using Visual Basic text fields.