I mean, you're not hired to "code", you're hired to do software engineering. That usually means working with other people. Reviewing code is a win win situation because both get a second pair of eyes on their code and prevent each other from committing dumb shit that you might have to fix later.
I feel like these memes of hating everything other than lone coding is because you keep working for toxic companies. Ffs you're programmers, it's probably super easy to get another job. It doesn't have to be like this.
I think QA engineering needs to become more widespread. The "extra pair of eyes" can't compare to a department of people dedicated to code review and testing.
I feel like these memes of hating everything other than lone coding is because you keep working for toxic companies.
No, it's because we are working with humans and their deeply flawed organizations. As much as people hate corporations and love startups, both are always a mess. Every organization I've seen from the inside is barely functioning. Cruft, interpersonal conflicts, incompetence, or simply very bad market situations.
Software engineering kind of has to get involved with almost all of that. If you need to get approval from department A and Stacy just keeps changing what she wants, you'll have to carry that chaos into the development and it will usually percolate through half the engineering department, because hardly any interface is actually a stable attack surface. That means meetings, calls, meetings, reviews, meetings, and fucking Stephen again wants to pitch this weird framework he's so in love with, meetings, budget calls, because there's no way, simply changing the field length can take that much work, meetings, .....
It's not about corps vs startups. It's about having processes, good communication, dialogue, empathy. And it's also your manager's job to protect the team from externals that keep interrupting and making adhoc requests. If you don't feel safe in ignoring calls and replying with "I'm busy now, schedule smth today please", I consider that a highly toxic workplace.
Problems caught early are much easier to fix than problems caught later. This applies to any project (I'm not a programmer, but an engineer in the traditional sense).
Just "doing it" without coordination and review is a great way to waste a bunch of effort down the line with re-work.
While i agree with the principal statement, this also requires two things to work:
First: The scope should be defined properly, so people can contextualize what they are actually doing and reviewing.
Second: If the scope is subject to change, or parts of it are unclear, there needs to be room to consider, develop and try different variants
This is were good management is crucial, which includes giving breathing room at the start. What we tend to experience is the expectation of already good detailed results, that can be finalized but still work if things change significantly.
Also, tests ARE THE code, and equally important too! However so many people make the mistake of writing tests after the function, when the benefit is less immediate. They also have the illusion that they are done and have to do extra work. And since they didn’t write the test first, they most likely wasted a ton of time and energy on extra work of testing changes manually
I disagree unless the tests are reasonably high level.
Half the time the thing you're testing is so poorly defined that the only way to tighten that definition is to iterate.
In this sense, you're wasting time writing tests until you've iterated enough to have something worth testing.
At that point, a couple of regression tests offer the biggest bang for buck so you can sanity check things are still working when you move on to another function and forget all about this one
How do you know what's it supposed to do, if no one actually wrote that down, other than
As a person.
I would like it to work
So i can do the things.
To be fair, at least that's something...
Or maybe for testing the documentation is the code. The code does this, write a test that accepts it does this.
I like the concept of describing things in scenarios and having data objects embedded in the scenarios. I think gherkin if a bit too restrictive, the same way user stories are, but a more natural verbose scenario that was parameterised with variables tied to actual data makes it explicit what is supposed to happen and what data the system will consume, create or manipulate.
E: there is of course other types of documentation available
Periodic office hours are tremendously helpful as well.
Block an hour, once or twice a week, for people to come by an ask you (and your team) about literally anything they want. And open it to everyone at your organization. Have your team stop answering one-off questions and tell people to bring it to office hours.
Team leads and tpms should help with logistics, messaging and hand-slapping.
I’m slightly embarrassed to admit that I’m 25 years into my career and I’ve only just started to put this into practice. (I say “slightly” because, hey, I’ve been doing this without any advice or mentorship, and, maybe, one can be forgiven for not finding this stuff self-obvious…)
Took a new position and got tired of people scheduling my lunch four out of five days a week. In addition to the meetings before and after, it often meant most of my day in meetings without a break.
So, I threw a tentative meeting for that time slot and the number of lunchtime meetings cratered. Somehow, folks were able to figure out another time or solve it without a meeting. Only twice in four months have I been asked if that “meeting” could be moved.
Needless to say, I’m a convert and would wholeheartedly recommend the practice—of scheduling a self-meeting, for any purpose, be it lunch or even just productive time—to folks well before they hit 25 years.
I made a daily meeting invite, and told my team to never show up to it. Lets them show up to work an hour later since I put it in the calendar for 930-10.
Depends on the team. My team do daily standup and it helps. A lot. "What are you working on today and do you need any help to get it done" is a super powerful question to make sure we're all focusing on the same priorities and sharing the knowledge we have, especially in a team of mixed disciplines.
I hear you, but I disagree. My people are great at slacking me or each other when they need stuff. We have a great collaborative atmosphere. They set up meetings with each other and with me as needed, and I’ve heard over and over that they really like that. I have weekly 1:1 meetings with each of them, and usually we hang up after 15 minutes because they know what they’re doing and can get back to it.
Docs and testing have no bravado, but they're important. If they're dragging you down, use your problem-solving brain and find a way to make them work for you.
I worked freelance for like a decade. Then I joined a “real” studio. Literally 80% meetings, team meetings, morning stand ups, presentations, documentation, and senior reviews, then 20% actual work. My old boss was great with time management but he left and the new leads would lock you into a 3h meeting, most of it to discuss other people’s work, then expect you to make 3 days worth of edits in 3h.
The idea that coding is the only part of your job is "actual work" is where you're going wrong. The goal is to create robust, well-functioning software that's documented and fulfills what it needs to do, not write an arbitrary amount of code. Your job is more than just doing the part you like.
You sound like a middle manager that brings a net loss to your workplace and justifies their job as crucial because without you, the coders would all be running around the office slamming into each other like 2 year olds.
Coding is the only job. Period. The rest is housekeeping. Much like digging a ditch. It’s not going to get dug if you sit around talking about logistics and reviewing all the other ditches or wasting my time telling me again and again how the ditch needs to be dug. Nor needing hourly updates on how the ditch is coming along, so you can arbitrarily make changes.
If you think I “just don’t get it”, then that totally explains your irrelevance in the work place. Because companies have long lost their way and have prioritized the structure well beyond what they are actually meant to do: get shit done. But then you sound like the type that believes companies are crucial to our success because they funnel money back into the economy and keep society afloat (narrator: they don’t), so I’ll say good day to you sir.
Not necessarily. Also depends on competency of whoever is looking at using your software/investigating and the legacy of the things you described. A whole different scenario if it's because you forgot to write something in a ticket and someone coming to call for help with docker when you have a docker setup guide they never look at.
Ever received a Slack or a teams message that’s just your name but no context as to what’s actually needed? Like they need to confirm you’re there but don’t want to reveal why they’re asking.
“John.”
Problem is whether or not I’m present has a lot to do with the question.