FAQ when Hiring Technical Coaches
5:12
Пікірлер
@ddanielsandberg
@ddanielsandberg 2 күн бұрын
- "How the heck did this code become this messy and long?" - "One if-statement at a time."
@EmilyBache-tech-coach
@EmilyBache-tech-coach 2 күн бұрын
Absolutely!
@chinesischesser
@chinesischesser 3 күн бұрын
Great video, I learned something again. Just a technical remark, I found it quite distracting that you micis in the frame with your face, would look much better it it was hidden
@EmilyBache-tech-coach
@EmilyBache-tech-coach 3 күн бұрын
Thanks for the feedback!
@georgwagner5577
@georgwagner5577 3 күн бұрын
Legacy Code.... brrrrr.... :D
@EmilyBache-tech-coach
@EmilyBache-tech-coach 3 күн бұрын
Oh I enjoy the challenge of some good legacy code!
@SamOween
@SamOween 3 күн бұрын
@@EmilyBache-tech-coach I wish I could gain this mindset
@dannym817
@dannym817 4 күн бұрын
agree, pull request are not a right way to review code. But sitting with a whole team infront of a big screen once a month for a few hours and then go deeply into the code. Not to review juniors code especialy. But giving tips can never be wrong. But more about explaining design decisions and start discussions
@EmilyBache-tech-coach
@EmilyBache-tech-coach 4 күн бұрын
Good suggestions, thanks
@clumsyjester459
@clumsyjester459 6 күн бұрын
We do code reviews for everything. Haven't had a bad experience so far. Seems like a company culture problem. We usually work in very small teams, often enough just 2 people. So it's pretty standard that even a junior reviews the CTO. Haven't encountered any ego problems, yet. If your company has toxic people, maybe start working on that or look for a different job.
@EmilyBache-tech-coach
@EmilyBache-tech-coach 6 күн бұрын
I'm happy you have good experiences of code reviews.
@riccardo-964
@riccardo-964 7 күн бұрын
Lest not forget that we're dealing here with enlarged egos and programmer divas most of the time, rendering all these "techniques" and "suggestions" useless.
@EmilyBache-tech-coach
@EmilyBache-tech-coach 7 күн бұрын
Part of my job as a technical coach is helping good software developers realize they can be even better and get even more done if they work well in a team.
@CsyroxXx
@CsyroxXx 9 күн бұрын
Thats good !!! I will think how to implement this in our team.
@EmilyBache-tech-coach
@EmilyBache-tech-coach 8 күн бұрын
Happy to hear that!
@Huey-ec1
@Huey-ec1 9 күн бұрын
I like them just fine on teams when no one is bringing their ego to the table.
@EmilyBache-tech-coach
@EmilyBache-tech-coach 8 күн бұрын
There are definitely better and worse ways to do code review
@jwolpert
@jwolpert 10 күн бұрын
Code reviews…not awesome. But very short regular code walks with the entire team (yes, including non-coders) focused specifically on what a developer thinks are the one or two most salient *functional* elements being worked can really help. As they say, “Every line of code can turn out to be a business decision, and every business decision that doesn’t understand the code is risking being a bad one.” I’ve seen marketing people come up with non-trivial innovations and catch what would have been a time consuming blunder, just by walking the code with a developer and applying common sense and their knowledge of the larger context. (By the way, “strong style” is great.)
@EmilyBache-tech-coach
@EmilyBache-tech-coach 8 күн бұрын
That style of walkthrough with a team sounds great, glad you've had some success with it.
@dadlord689
@dadlord689 12 күн бұрын
At this stage we do have really cool software but like 90% of it is sucks. And it sucks grandiosely. To the point where I am struggle typing simple comments on KZfaq due to stupidity of the virtual keyboard on my tablet. And years doesn't change it.
@EmilyBache-tech-coach
@EmilyBache-tech-coach 11 күн бұрын
Yeah, software is hard
@dadlord689
@dadlord689 12 күн бұрын
I had once this "code review" approach in a team I was working. It was the most miserable team I ever worked with. I see it so that your feature should just work, has and entry point and the scope of it's effects was easily determine and debugable. Well, I guess the closer you are to ECS and further from OOP - the easier your life. But what do I know
@EmilyBache-tech-coach
@EmilyBache-tech-coach 11 күн бұрын
I'm all for avoiding miserable team experiences.
@aslkdjfzxcv9779
@aslkdjfzxcv9779 14 күн бұрын
but how am i gonna nitpick trivial stuff? 😆
@EmilyBache-tech-coach
@EmilyBache-tech-coach 11 күн бұрын
If you only find trivial issues in code reviews that speaks well of your colleagues I guess.
@nymann9242
@nymann9242 14 күн бұрын
Great video, would've liked to have heard a mention about mutation testing (as you did in the older "Introducing the Gilded Rose Kata and writing test cases using Approval Tests") as it was a concept that I really think compliments approval testing as we want to make sure we don't change behavior only the strcuture.
@EmilyBache-tech-coach
@EmilyBache-tech-coach 11 күн бұрын
Yes, mutation testing is a useful approach. Couldn't quite fit it into this video tho
@countbrapcula-espana
@countbrapcula-espana 15 күн бұрын
Code reviews among "equal" peers is toxic and annoying. The solution to avoid the toxicity is owning your own company and do it your own way.
@EmilyBache-tech-coach
@EmilyBache-tech-coach 11 күн бұрын
I'm all for avoiding toxic relationships with peers. I don't share your view on this solution though.
@robertgeifman
@robertgeifman 16 күн бұрын
I am ashamed of say so, but I was so bullied by colleagues "offering help" by rejecting my changes so often, that I landed in a massive burnout, and am still not over the PTSD related to the code reviews, which went mostly about spaces vs. tabs and code formatting. I'd love to try pair programming, though I'm not sure it'll work for me taking into account that I'm on the autistic spectrum, and I get my best work done alone and in silence. Also I want to add that too much communication and collaboration is overrated, or at least not for everyone. Seeing for example the extensive threads on Swift forum, for example, I can't help but wonder when people have time to think, code and live in addition to writing all these messages. Seeing your great video I'd love to get your feedback on the above, to hear your perspective.
@EmilyBache-tech-coach
@EmilyBache-tech-coach 15 күн бұрын
I'm sorry to hear about your burnout and I'm glad you'd be willing to try pair programming despite your reservations. I don't know a lot about autism but I have heard reports that collaborative programming works well for some people with that condition - see for example this experience report by Sal Freudenberg: cucumber.io/blog/bdd/inclusive-benefits-of-mob-programming/
@clumsyjester459
@clumsyjester459 6 күн бұрын
"tabs vs. spaces" and "code formatting" has no place in code reviews. There are automatic tools for that called "linters". A developer can run them locally to automatically fix 95% of the problems (with a single shell command) and then do the remaining 5% manually. A CI pipeline can check, that all problems have been fixed. Using code reviews for this is absurd.
@juanjosefarina
@juanjosefarina 16 күн бұрын
Code reviews are awesome. It just depends on leadership, and I guess some times leadership is awful. I'm lucky to have a great lead, and learning a lot with each CR.
@EmilyBache-tech-coach
@EmilyBache-tech-coach 16 күн бұрын
I'm happy to hear you're learning a lot from your code reviews! Mentorship is really important in a team.
@dawnrazor
@dawnrazor 16 күн бұрын
Why aren’t people more concerned with design skills rather than coding skills. Good design will always help with coding. There should be such a thing as design reviews rather than coding reviews. If you get the design right then the coding is dramatically simplified and you’re less likely to make bad decisions. But in the advent of agile which most companies are abusing and getting it wrong, the idea of upfront design has become anathema.
@EmilyBache-tech-coach
@EmilyBache-tech-coach 16 күн бұрын
Agile design is done a little differently, it's true. I'm all for better design skills.
@temper8281
@temper8281 16 күн бұрын
Why should you have shared code ownership?
@LDiCesare
@LDiCesare 16 күн бұрын
Because when the only guy who knows a critical piece of code gets hit by a car, you don't want to shut down the firm or lose months understanding their complex hardly readable code?
@EmilyBache-tech-coach
@EmilyBache-tech-coach 16 күн бұрын
Or if someone wins the lottery, to put a more positive spin on it, you want to be able to continue to work with their code after they go off on their yacht.
@temper8281
@temper8281 15 күн бұрын
@@EmilyBache-tech-coach But that's not the same thing. Owning code does not mean someone else doesn't understand or isn't aware of how it works and what it does. For instance renting a house doesn't mean I own the house, but I do live in it. When someone says "shared-ownership" that translates to me as "shared responsibility". Shared responsibility is not obvious advice? Shared responsibility is not always good, so why is shared ownership of code recommended? Genuine question.
@EmilyBache-tech-coach
@EmilyBache-tech-coach 15 күн бұрын
Shared ownership is recommended because it's been found to work better than the alternatives. That is certainly my experience.
@joergw
@joergw 16 күн бұрын
right, but also wrong. We rely deeply on PRs and code reviews, but if this is the answer for staffing or training you have asked the wrong question. There are additional techniques you can use, but all/most of them dont make code reviews unecessary
@EmilyBache-tech-coach
@EmilyBache-tech-coach 16 күн бұрын
I'm not against code reviews - I'm trying to point out if it's the only mentoring or training activity going on in a team then you're missing out.
@SolidWorksMastery-hr4sg
@SolidWorksMastery-hr4sg 16 күн бұрын
i'm working on a startup as a solo developer , it's my first experience and i wish if some senior could review my code , i think it's a matter if someone is open for critics and want to improve and don't take other opinions personally
@EmilyBache-tech-coach
@EmilyBache-tech-coach 16 күн бұрын
Working solo in a startup sounds really challenging! I hope you find a mentor who can help you.
@sergeynosov8180
@sergeynosov8180 17 күн бұрын
Code Reviews are also extra sets of eyes on the code; and precious due to that. Developers are people and make mistakes. We catch small mistakes or omissions in code reviews all the time. Also, during code reviews someone may point out a corner case the original developer has not considered.
@EmilyBache-tech-coach
@EmilyBache-tech-coach 16 күн бұрын
You're right, code reviews are valuable for those things. It's not a replacement for mentorship and teambuilding though.
@ken-kd5vr
@ken-kd5vr 17 күн бұрын
LGTM: Let's gamble, try merging 👍
@EmilyBache-tech-coach
@EmilyBache-tech-coach 16 күн бұрын
I think most developers benefit from feedback from their peers before their code hits production. Feedback from actual users can have much worse consequences.
@manishm9478
@manishm9478 17 күн бұрын
Great topic. I was thinking recently about how the team i'm in lacks cohesion and technical leadership. Every dev writes code in his own way. I try to follow what the senior most dev does, but he changes his mind from project to project and doesn't share his thinking easily 😄
@EmilyBache-tech-coach
@EmilyBache-tech-coach 17 күн бұрын
Mentoring and technical leadership are so important!
@edgeeffect
@edgeeffect 17 күн бұрын
Outside of work, I like to do projects in new languages or using different libraries... you know the sort of thing. And the one thing I really wish I had that I do have at work is a nice code review. When you're deep in the sea of "what the hell am I doing?" there's nothing like a team mate saying either "yeah, you're on the right path" or even "what the hell is this guk?!" it's all better than trying to draw my own map as I go.
@EmilyBache-tech-coach
@EmilyBache-tech-coach 17 күн бұрын
To build something substantial it means collaborating with others - that can be rewarding too.
@i-am-the-slime
@i-am-the-slime 11 күн бұрын
@@EmilyBache-tech-coachI disagree. The video game Animal Well was coded by one person. So we'mre quite a few others.
@kzelmer
@kzelmer 17 күн бұрын
Pair programming is great but many devs dont like to share the process with a colleague.
@EmilyBache-tech-coach
@EmilyBache-tech-coach 17 күн бұрын
I see pair programming as a skill you can learn. It's not so much about preferences as skill.
@kzelmer
@kzelmer 17 күн бұрын
@@EmilyBache-tech-coach it probably is, but more of a soft skill than a hard skill
@georgwagner5577
@georgwagner5577 15 күн бұрын
it's more like they are afraid of showing "bad Code" while missing the opportunity to learn :/
@raulcalvomartin2979
@raulcalvomartin2979 17 күн бұрын
Honestly. CR are great tool to communicate. If it doesn't work is because the people misusing it. in my experience when CR goes wrong is because of ego. Some people very often can argument about the feature but instead decide to make it personal because of antipathy towards the other or because they want to establish some authority. Let's face it. Is not about CR it is about a toxic culture enable by management.
@EmilyBache-tech-coach
@EmilyBache-tech-coach 17 күн бұрын
Let's focus on practices that enable good communication and collaboration and get the right incentives in place so that's what happens.
@ericmedlock
@ericmedlock 17 күн бұрын
I mean you can but it requires dedication and talent to do it right
@EmilyBache-tech-coach
@EmilyBache-tech-coach 17 күн бұрын
Most things that are worth learning need some dedication to learn them.
@skipodap1
@skipodap1 17 күн бұрын
I hate code review. So few opportunities for alignment and check ins. I prefer pairing.
@EmilyBache-tech-coach
@EmilyBache-tech-coach 17 күн бұрын
I also prefer pairing! Ensemble is even better.
@SlowAside5
@SlowAside5 17 күн бұрын
Couldn’t a team push back on ensemble programming by saying that they won’t get as much work done because everyone will be working on the same thing, meanwhile all of the other tasks that need to be done will be sitting there idle? How would you respond to this?
@raulcalvomartin2979
@raulcalvomartin2979 17 күн бұрын
That's a good point. I even see more conflicts arising if everyone would work on the same thing. How long can a pair programming be maintain until it becomes a passive aggressive shit-show?
@EmilyBache-tech-coach
@EmilyBache-tech-coach 17 күн бұрын
It's hard to measure programmer productivity. What I'm hoping to highlight is that when working as an ensemble a team can better align on technical practices and more easily share knowledge. Modern software engineering is usually more about learning about the problem to solve and managing complexity than simply completing the most tasks.
@renedekat3519
@renedekat3519 2 күн бұрын
@@raulcalvomartin2979 Hi, have you tried pair programming yourself? We did this as children before the Internet and before everyone had a computer at home. It was fun and we learned a lot from each other. Later in life I started doing it in my professional capacity, and it's still great. Not only do you learn a lot, it also reduces stress, because you feel supported by others about the changes that are made.
@akauppi2
@akauppi2 17 күн бұрын
Code review is good for situations when there’s outside contributions coming in. Open source projects or PR’s from outside of the team. It’s not great for team-internal collab. They should know each other better than that.
@EmilyBache-tech-coach
@EmilyBache-tech-coach 17 күн бұрын
Absolutely! Teammates need to collaborate closely
@janinefelten553
@janinefelten553 22 күн бұрын
Do you have a link to the study you mentioned at minute 3? :)
@EmilyBache-tech-coach
@EmilyBache-tech-coach 21 күн бұрын
It's a paper published by the ACM - you can find more about it by searching on google scholar. The title is "When, How and Why Developers (Do Not) Test in their IDEs" and Beller is the lead author.
@davide1837
@davide1837 25 күн бұрын
Wow, I found those refactoring tips pretty unique, and the way everything falls naturally into place near the end was so satisfying. I also had some fun trying to replicate this in Java although initially in a kind of not-Java way that would look as similar as possible to what you showed. You did a great job as always, I can't wait for the next part and eventually any new kata you manage to find.
@EmilyBache-tech-coach
@EmilyBache-tech-coach 25 күн бұрын
Glad you found it helpful! I'm working on a Java version of this kata, it's going to be published later in the year, so watch out for that!
@davide1837
@davide1837 17 күн бұрын
Thanks, that's great news. I'll be looking forward to it and I'm eager to see how the refactorings can be improved even further with the power of object-orientation and classes.
@java_Marcelo-xx5nw
@java_Marcelo-xx5nw 26 күн бұрын
Thank you for share!
@bernhardkrickl5197
@bernhardkrickl5197 28 күн бұрын
I still don't get it. I get that with characterisation testing you just accept whatever the code does and nail it down by writing a test for it. Then I understand that with approval testing you think of what the code should do and write a test and then make the code do it. But what is the difference between that and regular TDD/BDD? Also, you didn't even precisely do that. You had a PNG of the result but the executed test didn't check against the PNG, instead you changed the implementation first to produce a red test and then adjusted the text files from your printer to make the test green, comparing it with your own eyes to the PNG. So, what in all this is the crucial part that makes it Approval Testing and sets it apart from other things?
@EmilyBache-tech-coach
@EmilyBache-tech-coach 27 күн бұрын
It's similar to both characterization testing and TDD. I think you've done a good job actually of explaining the differences.
@skipodap1
@skipodap1 28 күн бұрын
I think you bring more unique and clear content than just about anyone out there. This is great
@EmilyBache-tech-coach
@EmilyBache-tech-coach 25 күн бұрын
Thankyou!
@EmilyBache-tech-coach
@EmilyBache-tech-coach 25 күн бұрын
Thanks!
@georgwagner5577
@georgwagner5577 Ай бұрын
Too bad, I had to pause this vid. Will return later. But what I've seen so far was awesome. :) You're awesome, Emily!
@EmilyBache-tech-coach
@EmilyBache-tech-coach Ай бұрын
Glad you liked it! Hope you enjoy the rest too.
@ricardoguzmanvelasco
@ricardoguzmanvelasco Ай бұрын
Good session. Gonna use that with a team I'm coaching. From the content, we here in my dev group (The Guild from Spain) do like how maaany names in early stages of its naming process end up vanished, like inlined or the whatnot. That's why we came up with the most satisfying and writing-pleasant alternative to appleasauce: jitanjaphores!
@EmilyBache-tech-coach
@EmilyBache-tech-coach Ай бұрын
It's a cool name, jitanjaphores! So long as everyone recognizes obvious nonsense then do whatever your team prefers.
@RoamingAdhocrat
@RoamingAdhocrat Ай бұрын
ever find yourself moving words out of the function name and into a parameter with a default value you'd never change e.g. `fn SendTpsReport_WithCoverSheet(TpsData)` becomes `fn SendTpsReport(TpsData, CoverSheet = true)` (or could be into a parameters object with a default value)
@EmilyBache-tech-coach
@EmilyBache-tech-coach Ай бұрын
Interesting! I'm a little skeptical of boolean arguments but I think the point you're making would still stand with a more complex type too. The idea of the final steps of naming as a process is to make domain objects with encapsulation of their data, so probably something more like TpsReport.GenerateFrom(data).SendWithCoverSheet() ?
@RoamingAdhocrat
@RoamingAdhocrat Ай бұрын
I kinda feel this video should've been sponsored by NamedTuple. (Congrats on the sponsorship!)
@EmilyBache-tech-coach
@EmilyBache-tech-coach Ай бұрын
LOL! Thanks
Ай бұрын
Really useful video thanks Emily !
@EmilyBache-tech-coach
@EmilyBache-tech-coach Ай бұрын
Glad it was helpful!
@JhanaratoBhikkhu
@JhanaratoBhikkhu Ай бұрын
As an exercise, I used an approval test with the Leaderboard Kata in Python. I pretty much did what you did in this video, in my case implementing __str__ on the Leaderboard class. The main issue I had was the lack of integration with PyCharm. I had to manually approve files. Not a deal breaker though.
@EmilyBache-tech-coach
@EmilyBache-tech-coach Ай бұрын
That sounds like a good approach! I agree better tool support would help.
@JhanaratoBhikkhu
@JhanaratoBhikkhu Ай бұрын
Thank you for bringing Fowler's book to life. Bravo!
@EmilyBache-tech-coach
@EmilyBache-tech-coach Ай бұрын
Thanks!
@codeRight
@codeRight Ай бұрын
Hi Emily, can you provide a link to the commit message notation you're using? Specifically, I want to know what the difference between "R" and "r" is when you're doing a refactoring commiit. I vaguely remember reading an article about this but can't remember enough to search for it. TIA
@EmilyBache-tech-coach
@EmilyBache-tech-coach Ай бұрын
It's Arlo's commit notation github.com/RefactoringCombos/ArlosCommitNotation. R indicates more risk than r.
@ddanielsandberg
@ddanielsandberg Ай бұрын
Hi Emily. In jetbrains products you can use ctrl+shift+arrows to move a function up and down without "jank-and-paste". Pretty sure Fleet and most other editors have similar features.
@EmilyBache-tech-coach
@EmilyBache-tech-coach Ай бұрын
Thanks - you're right I could have used that. I didn't like the way it moved it one line at a time through the middle of the rest of the code though - it was difficult to see when I'd moved it to the place I wanted it.
@codeRight
@codeRight 16 күн бұрын
@@EmilyBache-tech-coach I've started using this notation and I must say, it's very helpful when I'm sifting through my commit logs and trying to find something. One thing I'm finding a little hard to stick with is the tense of the commit message. I'm used to using past tense (?), e.g. "Added/Changed/Refactored" instead of "Add/Change/Refactor". It's not a biggie but I end up with some niggling inconsistency in the commit messages -- I know, it's bordering on compulsiveness. Thanks again for the learning.
@JhanaratoBhikkhu
@JhanaratoBhikkhu Ай бұрын
Well that was a lot of fun. I finished all five katas, not including the paged HTML excercise. The two that tripped me up were the ISP and LSP. I really liked the way the katas lead you to the solution.
@EmilyBache-tech-coach
@EmilyBache-tech-coach Ай бұрын
Very happy to hear you enjoyed doing these code katas!
@dbaltor
@dbaltor Ай бұрын
I'm so glad to learn that you've got your first sponsor. Will definitely have a look at their product. Huge congratulations! Your videos offer real value whilst being inspiring as well. Please keep going!
@EmilyBache-tech-coach
@EmilyBache-tech-coach Ай бұрын
Happy to hear that! Hope you find Tuple's product interesting too.
@osman3404
@osman3404 Ай бұрын
I use LLMs to analyze a large class or very large function and tell me what refactoring could be used and how the end result may look like. Then I use a real refactor tool to do the actual work
@EmilyBache-tech-coach
@EmilyBache-tech-coach Ай бұрын
That sounds like a good approach
@vakeelkhan2968
@vakeelkhan2968 Ай бұрын
0:38 😊
@EmilyBache-tech-coach
@EmilyBache-tech-coach Ай бұрын
Yeah it's good news isn't it!
@JhanaratoBhikkhu
@JhanaratoBhikkhu Ай бұрын
Great video. I'm only a hobbyist these days and generally use Python. I'm already thinking about how to speed up my tests, especially faking interaction with Elasticsearch. I also just got a copy of "Working Effectively with Legacy Code" and note that you were included in the acknowledgements!
@EmilyBache-tech-coach
@EmilyBache-tech-coach Ай бұрын
Using a test double instead of interacting with the real elastic search sounds like a good strategy, glad you found the video helpful. Yes I was a reviewer for Michael Feathers book back in the day. It's still a classic.
@JhanaratoBhikkhu
@JhanaratoBhikkhu Ай бұрын
@@EmilyBache-tech-coach The book is indeed a classic. A second edition would be great!
@marcobaccaro
@marcobaccaro Ай бұрын
Well done, Emily. Good old classic content.
@EmilyBache-tech-coach
@EmilyBache-tech-coach Ай бұрын
These classic techniques are new for a surprising proportion of the developer community :-)