List

Ooops! You named it wrong. What now?

Ooops! You named it wrong. What now?

by Ian Norris and Melissa Hunt Glickman

In the presentation titled "Oops! You named it wrong. What now?" at RailsConf 2022, Ian Norris and Melissa Hunt Glickman explore the complexities and challenges developers face when the names in their code become misaligned with the evolving business context. They emphasize the importance of naming conventions and how poorly chosen names can lead to confusion, wasted time, and miscommunication within a development team.

Key points discussed include:

  • The Significance of Naming: Good names provide clarity, while bad names can lead to misunderstandings and inefficiencies. Developers often struggle with naming due to contextual changes over time.
  • Contextual Examples: Throughout the talk, Ian and Melissa provide examples from their experiences, including a scenario involving the renaming of "suggestions" to "outreach prompts" in a healthcare application, which ended up causing data integration issues due to misaligned expectations in the database.
  • The Process of Renaming: They discuss strategies for safely renaming components in a codebase, highlighting the importance of avoiding breaking changes, and the use of parallel approaches like dual writing during transitions to newer naming conventions.
  • The 'Rename Dance': Melissa introduces her concept of the "rename dance"—a careful method to handle renaming without incurring downtime or breaking existing functionality. The process involves stepping through changes in a structured way and monitoring them in production before fully committing.
  • Learning from Mistakes: Anecdotes shared illustrate both successful and unsuccessful renaming efforts, highlighting the lessons learned from potential pitfalls.
  • Balancing Perfectionism and Practicality: The speakers emphasize that perfectionism can hinder progress, and it's better to aim for a "good enough" name rather than strive for a perfect one, while focusing on the objective of delivering value through shipping code.

Overall, the session underlines the necessity of approaching naming with caution and thoughtfulness, as names can heavily influence development processes and team interactions. By recognizing when and how to implement changes to code names, developers can significantly improve their work environments and overall efficiency in the software development lifecycle.

You hear everybody talk about the newest feature to Widgets but you can’t find a single model reference to that in the code. What happened? Sometimes the business changes aren’t reflected in the code. Sometimes, you're missing information or the code grows into something different. What do you do? ‘Cuz you still gotta ship.

Buckle up for a fast paced ride through the opportunities and pitfalls faced when you find yourself in this position. Through success and failure stories, learn how to leave space for names to breathe, make changes safely, and walking that fine line of changing just in time.

RailsConf 2022

00:00:00.900 foreign
00:00:14.280 let's get that energy out that's right you picked the right talk to come two people all right
00:00:19.980 cool uh yeah so welcome to our talk which is oops name we know you named it wrong no no it was you you I'm so
00:00:27.359 positive you named it wrong hi I am Melissa I'm an engineer at applied VR
00:00:32.579 where we're solving pain through immersive Therapeutics I've been in the naming game long enough to know that
00:00:38.579 sometimes I've done it well and with Wicked clever names and other times well
00:00:43.980 I've tripped up and left some pretty smelly names behind I met Ian at one of these gigs yeah
00:00:50.520 um I I'm Ian and I currently am a manager at a backer kit doing crowdfunding work but uh we worked with
00:00:57.960 uh Melissa at this at some doing pair programming and you know making
00:01:04.320 questionable decisions but sometimes you know that's what you got to do and sometimes being like hey I'm gonna make
00:01:09.659 it late let that change and I'm gonna go have fun um so yeah and uh shout out to Winnie my
00:01:16.380 cat uh she's great and my manager so very important um
00:01:22.080 yeah and so before we were like going into it um something really important is like why is a bad name versus a good
00:01:28.619 name important and like do we just make bad names do we just like wake up in the morning and like I'm just gonna throw something out there because I'm just
00:01:34.799 doing being a developer okay maybe I do but
00:01:39.900 but I don't think that's how most people think right most people are trying to be rational and I think a great a great
00:01:45.060 example of this actually has to do with um so you at backer kit right you it's a
00:01:50.520 crowdfunding platform you raise money for a very set period of time and so you might like so the project goes live for
00:01:56.700 a very specific amount of time they might think oh okay cool this is just some kind of before action that like
00:02:02.100 makes sure that the project is live before you can do anything uh does it but the important thing is uh
00:02:09.060 there's other contexts so it turns out that in addition to a project being live on Kickstart or backer it can also be
00:02:15.180 live on kicks but I just mixed up because there's there's two different places it could be live so what does being live mean and you can
00:02:22.440 see developers struggle with that my favorite scope right there live and open on pledge manager somebody's trying to
00:02:28.080 be very specific because there's a very complicated topic hiding there but it's kind of not really
00:02:34.319 telling you the ambush of like well oh it turns out you can have a project be live but then it can also be closed so
00:02:40.080 is it alive or dead I don't know um so you're double live there and because you're live live where and open
00:02:47.940 on pledge manager yeah so I I think it's important to understand to have that
00:02:53.099 developer empathy that like the what makes names tricky is that they evolve over time and they're they're localized
00:02:59.220 to a specific context I think you've got another similar example don't you Melissa yeah has
00:03:04.620 anyone joining joining a new company does you spend a little time you're splunking around under the
00:03:12.840 what is what is this somebody really like genomes I love enums right I mean
00:03:19.860 I thought I knew what an enum was is I'll use that map to integers in the
00:03:26.340 database that can be queried by name right I'm just so confused by this name and
00:03:33.780 that's exactly the pitfall of naming gone wrong context what do messy names
00:03:39.360 do it makes you have bad assumptions right it causes wasted time trying to
00:03:45.420 understand a clever name that someone left behind and I swear I'm sure someone thought they were super clever when they
00:03:51.780 created this controller for me that spit out daily tips under the name of enum so
00:03:59.159 don't create a Walled Garden between those who know and those who don't
00:04:05.519 and I and I think uh that's really it's really important I I would love what did somebody think uh project being legit is
00:04:19.440 did somebody there like MC Hammer maybe with Kickstarter you know maybe it's
00:04:24.720 like the project is legal so you know we have a legal team review and it's like legit no still no and actually in fun context
00:04:34.440 what that actually means is when the the first developer on the team I won't name names when they uh when when they were
00:04:41.220 able to successfully take that project from Kickstarter and put it onto our platform it was legit because you know
00:04:46.860 it worked as for me I found this lovely lovely
00:04:52.680 variable waiting for me in the in a controller and it told me what kind of
00:04:57.840 record type it was yeah it's a joint record done hooray thank you how about
00:05:03.780 what I'm gonna do with it wouldn't it have made a little more sense to maybe just gonna throw this out here said you
00:05:10.620 know existing order device or something a little descriptive something that's going to leave a
00:05:17.580 breadcrumb for the future because what this left for me was oh snap am I missing some context is
00:05:23.520 there some reason that it was really important that they named it this and left it in the code what am I missing
00:05:30.300 maybe they're you know following the old you know that old syntax like underscore I underscore drawing I'm just I'm gonna
00:05:36.180 name everything I X and P and and so we want to kind of set the
00:05:43.259 stage whereby um so yeah we both worked at it as mentioned before we both worked at a Medical Healthcare company and we
00:05:48.600 we tried to you know be a little bit better like try and take some of those things that are growing over time and see what we could do to like make it
00:05:54.720 better and so we're going to walk you through some examples and like Ian said uh we felt it was important that you
00:06:01.080 have this background because it really does set the stage uh we spent an inordinate amount of time writing tests
00:06:06.960 filled with caddy test data and debugging with puts meow um but then you know sometimes check
00:06:13.680 them yeah sometimes not always I promise we had linters we fixed them when we got those through uh the company was
00:06:20.820 originally treating people for a single medical condition pre-diabetes eventually as the as with any good
00:06:26.580 business right it grew it changed and we ultimately increased the number of treatable conditions the increase in
00:06:32.520 scope and complexity of treatments meant the app changed like a lot it still
00:06:39.360 maintained it still maintains to this day and monolith at its core but now there are several smaller applications
00:06:44.880 micro services and custom channels yes he does to support the business model as
00:06:50.100 well as several integration with third parties understanding where one amp began and another ended was complex and
00:06:57.360 handling large-scale renames was delicate work both Ian and I led or
00:07:02.759 supported many rename and refactor efforts learning some really painful lessons along the way where we were
00:07:09.120 heard muttering oh well if that was the nicest thing we said and oops
00:07:14.220 we named that one wrong so yeah so I've got I've got a fun little story uh and it has it has some
00:07:21.599 good and bad endings to it um so we're going to start with uh so something you know the right the these
00:07:28.080 health coaches would message our participants and uh send you know and turns out if you were engaged you might
00:07:33.780 be more willing to like learn how to get better health outcomes so it turns out the data data science team would start
00:07:40.319 making these suggestions that would be like hey at this time of day you should go talk to them and it would like help
00:07:46.620 improve their health outcomes and that was great because you know like you know the business is working
00:07:52.680 um but then there was a bit of a problem uh they stopped being suggestions and more like mandates from the business so
00:08:00.720 I'm pretty sure that's what they called them probably under the hood um and so the team the business started
00:08:08.940 to stop using the work suggestion and one to stop using the word suggestion because of the the political nature of
00:08:14.520 that and so they started to call them Outreach prompts because the couches are outreaching to a specific participant
00:08:21.120 um and so I was asked you know I'm my manager asked me hey good domain driven
00:08:27.000 design we should be moving with the business you know let's just start with uh you know boom okay let's just rename
00:08:34.440 suggestions to outreach prompts Ian that never ends well well hey spoilers
00:08:40.919 um so uh you know it started out you know I was on the on the coaching team at the
00:08:46.620 time and so it started okay because you know right like we received suggestions
00:08:51.660 from the data science app and we spent we we spit those over to the data warehouse so that you can do the machine learning doodads
00:08:58.260 um and so you know like At first it's like okay it'll be like great now the
00:09:03.420 coaching app has Outreach prompts hooray uh but it turns out that the data warehouse still needed to have the data
00:09:10.140 taken in as suggestions especially because you know DIY startups that we're using form we're not so much a data
00:09:15.660 warehouse as foreign data wrappers kind of like grabbing the data from the databases directly
00:09:21.060 um and so it actually caused a bit the cost actually caused the when I shipped that code it actually caused the data
00:09:26.459 warehouse to be broken for a bit because it wasn't able to pull in the data uh oops um
00:09:31.800 and so it actually like you know uh Winnie I went to Winnie and then when he
00:09:37.740 suggested uh that I introduced a translation layer I make it someone else's problem
00:09:43.140 um and so it turns out I was able to make a suggestion uh a contribution to
00:09:49.140 the data warehouse where the foreign data wrapper actually oh that name suggestions actually it's Outreach
00:09:54.360 prompts um and then pulls that data in so I'm done at least right
00:10:01.980 um do you know if they actually renamed suggestions elsewhere yet yeah it sort of became the next evolution of I
00:10:08.519 believe your good friend the recommended topic oh yeah so and that that's actually kind
00:10:14.880 of another funny thing which is oh no change it again uh so it turns out we might the business also wanted to we
00:10:21.660 have ways that weren't using data science like using some kind of random trigger like you know let's talk
00:10:27.600 to them on their birthday for example um and so actually kind of like the the
00:10:33.839 code's still evolving and so obviously the moral of that story is uh come on
00:10:40.920 uh oh oops I jumped the slide uh but yeah but that kind of speaks to the the
00:10:45.959 difficulty of external interfaces right like when you're dealing with other providers A rename actually is and the
00:10:52.560 refactor isn't as easy as just like replacing it because you actually have to watch out for those external interfaces another place I get got all
00:10:59.220 the time is like I'm like ah this controller name never stopped making sense well I actually have to go double check if any emails are talking to it
00:11:04.680 because like those links are held on to forever ever all men so that's unfortunate
00:11:11.640 but yes so yeah just you know it'll never keep just don't rename anything right that's
00:11:17.399 the moral of the story right nope that's not the answer either now Ian that
00:11:22.860 doesn't mean it won't be complicated and sometimes disheartening remember that perfectionism is the enemy of good
00:11:28.740 enough as your story Illustrated sometimes we don't reach the anticipated end or the
00:11:34.079 goal it changes and we get to rename to a good enough State and you did you got
00:11:39.779 us to recommended topics and I'll never forgive you for the birthday topic
00:11:46.459 forgettably peers it's fine it's fine you want to pop this to the next slide
00:11:52.680 so I think Melissa is also a good A bit I think a story where she actually made it a bit further than I did I do my
00:11:58.500 story had an original stated end goal and believe it or not we did get to the
00:12:03.720 end goal so let me tell you about it when we started each participant was a
00:12:09.420 member of a group and that group had a coach assigned thus creating a many participants to one coach relationship
00:12:15.540 we love those right all the per all the participants were treated for the same condition pre-diabetes and were on a
00:12:22.140 16-week journey towards learning how to live with their disease and improve their quality of life
00:12:27.779 then as we mentioned before the business expanded yeah because we solved that problem right yes we did
00:12:33.300 you should come see that unnamed health care company uh we moved into new conditions like type 1 and type 2
00:12:39.480 diabetes and hypertension to name a few these new conditions weren't going to come on a 16-week journey anywhere they
00:12:47.459 were going to come and be a part of our program for an indefinite amount of time in many instances initially we came up with some
00:12:53.880 workarounds some really Nifty hacks to the system that allowed us to provide members care but we knew these were not
00:13:00.060 long-term Solutions and we knew there was a lot of technical debt that had to be paid off in order to make the app
00:13:06.540 sustainable and move forward right so here I am in the thick of things and
00:13:13.019 my manager comes and says hey Melissa how would you like to handle this rename refactor feature and I said sure then he
00:13:19.980 said wait let me tell you about the requirements and I was like I was like oh I should have said no
00:13:25.380 um how many of you have done that and he told me he goes you know you can't have any breaking changes nothing no downtime
00:13:31.139 no breaking changes support multiple conditions allow multiple Specialists to interact with members track The
00:13:36.720 Specialist assignments can you continue to schedule health coach vacations and add specialist vacations this last one
00:13:43.740 was a really big deal because our SP our Specialists had to reach out based on
00:13:49.019 those recommended topics and insights Ian mentioned before were type 1 and
00:13:55.079 type 2 members tracked high glucose levels or high blood pressure with and
00:14:00.660 then they had to be responded to within a specified amount of time so the topic pops up the coach has x amount of time
00:14:06.959 to respond well that's that's a paradigm shift for us because as you can see here
00:14:12.959 we were moving to this model with the member at this I love many to many relationships yeah yeah it's great so
00:14:20.100 while we did have an entire quarter to execute on this overall architectural change
00:14:25.980 there was some initial work that had to be done in about four weeks because almost all of the rest of the work was
00:14:31.620 blocked on these changes so for four weeks myself and another engineer went
00:14:37.680 to the little code mines and we expanded Scopes and renamed columns and models to
00:14:44.160 reshape the code base to make room for this expanded business model so what I did was I picked one of one of
00:14:51.300 the one of the models that had a ton of change I love diagrams so yeah I do too
00:14:57.300 because it was the only way I could keep all my all my thoughts straight so this model didn't just get a rename of some
00:15:03.480 columns and some ad of new columns the whole table went through a rename which
00:15:09.180 is a really big deal when you cannot have any downtime so in order to make this play nicely
00:15:16.079 and also change some very basic concepts of our company one of the things that we did was we
00:15:24.720 started with this initial model the care team model or I'm sorry the the coach coach assignment where you can see there
00:15:31.620 was a participant there was a coach ID and in this we were metamorphizing the
00:15:37.680 names too we were going to staff we were going to member so what we did was that we found that by bringing columns up in
00:15:44.519 parallel by dual writing thank you strong migrations for reminding me of so
00:15:49.620 many of these little tidbits we were able to expand the model Alias the model
00:15:56.060 and then we were able to move the constraints from the initial columns where they existed over to the new
00:16:02.699 columns and then very slowly as we watched it play out in
00:16:09.060 production and we saw that we had things going where they needed to be we were able
00:16:14.160 to begin to drop the old columns slowly quietly just get them down and get them
00:16:20.639 out of the way but we were able to do this and this was but one of the models
00:16:26.639 that we had to rename during that period any you know I'm not going to lie it was it was it was a little nerve-wracking
00:16:32.420 and one of the other major changes that happened here is we repurposed the role column rather than rename it we got rid
00:16:39.660 of the concept of primary and covering for Coach assignments we renamed those to actually what the
00:16:47.220 people were so like I said I learned some really
00:16:53.160 valuable lessons and sort of started calling it The rename dance as you can see here this is this
00:17:00.480 is how I approach it even today in the work that I do it might be on a smaller scale I still
00:17:06.780 run through my rename dance and I ask myself do I need to do this Maybe not maybe I can be a little bit quicker
00:17:12.959 maybe I can skip or I can do two of them at one time but as Ian and I both really
00:17:18.660 enjoyed the gems strong migrations it is there to remind you of the right thing to do at the right time when renaming
00:17:26.160 columns and or renaming tables I mean having to deploy between
00:17:32.940 each of those steps seems kind of obnoxious can't I just you know just call Tweet twit tweet that are going to
00:17:38.820 be down for 20 minutes yeah not so much most people like to have that up time
00:17:44.100 right I don't know about you but I I kind of like to know that my app is up and running so when you make when you
00:17:50.640 deploy changes in a blue green environment right one of them's got it one of them doesn't and there is that
00:17:57.780 moment in between where you can cause errors and wreak a little havoc in your own app why why
00:18:05.100 just follow the rename dance right avoid some complexity avoid some problems make
00:18:11.100 your life a little bit easier right when you have a new table sometimes you can skip it I feel that is a thousand
00:18:16.919 percent true if you're using if you want to rename something that's really small that only ever gets written to you a few
00:18:22.500 times the chances of it being a problem of just you know going Whole Hog in with the active record rename me migration is
00:18:30.120 not going to hurt you it's you know always a gamble but chances are that you can just go ahead
00:18:36.419 and follow along with that in those instances and there's one other reason Ian why would we not want to just rename
00:18:45.480 a table don't we have some friends and they live on that team called Data
00:18:51.539 Yeah well yeah they can deal with it later if you want to do yourself a solid favor
00:18:57.960 let your data team your data science
00:19:03.059 provide you the grace period to do that it allows them to be proactive in their approach to what is happening rather
00:19:09.660 than coming to you knocking on your table and being super reactive and
00:19:14.700 calling you a lot of bad cat names speaking of a smell or actually I
00:19:20.880 thought and if that wasn't me anyways um so yeah I feel like another important
00:19:25.980 thing to kind of point out is I think that like with like a name being not totally fitting the right thing it's like kind of a tool in the box which
00:19:32.820 kind of can give you a hint toward like are you trying to rename it and give you a hint maybe you don't need to rename it
00:19:38.100 but you're doing it that does give you like a refactoring tool um let's talk about a friend of mine
00:19:44.280 here uh so we have this class called stripe customer updater and you know you start reading through the class and
00:19:50.100 you're like okay it uh takes somebody's new credit card information and it stores it takes it from stripe and it
00:19:56.100 stores it on order straightforward enough uh but then you notice that there's at
00:20:02.280 the end of the code there's a retry payment line that turns out turns out you know that it's actually going to do
00:20:09.480 two things it's actually going to update that person's credit card and then uh charge it again and you know your first
00:20:15.840 instinct might be to just to do that you know just rename it to that that nice little blob over there you know done
00:20:21.900 there seriously go from stripe customer update or do stripe customer updater and Order charger hey it's right now no no I
00:20:30.000 think you already know what I'm going to say about that name but but uh but you notice like right now we have that but
00:20:35.820 even thinking about doing it that way now you have that and and now you can think actually well maybe I'm missing a
00:20:41.580 collaborator object that's who's responsible for talking to those two different UH responsibilities you know
00:20:46.679 updating your credit card and charging the credit card and maybe that needs to be talking and collaborating where a
00:20:54.059 stripe customer updater was previously collaborating and so that can kind of and so I don't think there's anything
00:20:59.100 wrong with wanting to think about what the name is and then then being like okay I don't want to leave leave live
00:21:04.140 here so what's the next step after that oh
00:21:10.500 again new code base I find all kinds of really fun interesting things like that
00:21:16.740 somebody named one of our table's files that's not problematic at all right you
00:21:23.580 can just overload what the file means on class right yeah that seems like super the way I want to go no not even I mean
00:21:31.980 thankfully they were kind enough to at least Alias it and give me the S3 file do I love this solution no but again the
00:21:39.000 enemy of of good enough is perfectionism right so while I may not love this
00:21:44.880 solution this is a solution to get away get around the whole renaming game right without going through the hellish
00:21:52.980 landscape of possibly renaming a very very large table that had a lot of
00:21:58.020 Records right so I can go type S3 and S3 file and I can make a new record
00:22:04.080 so maybe it's not always bad I mean I think well the thing is right is that you still got to ship and we still have
00:22:09.900 to be delivering value so I think sometimes you being able to say like the scene at least it's going to only affect
00:22:16.440 10 of what I'm doing if I'm happening to like talk to the tables directly which I mean we're mostly just addicted to
00:22:21.960 application or active record anyways right so hopefully that shouldn't be the case um we have a database okay um yeah so
00:22:29.159 like hopefully that could hopefully that means at least 80 percent of your cases you're talk you're the least starting to
00:22:34.740 think about the domain model and moving away from the fact that it's called files and yeah and hopefully at some point the next developer comes along
00:22:40.200 gets annoyed by it and does the rest of it work for you yeah
00:22:46.020 so let's talk about some lessons that we hope you can walk away from this talk today
00:22:52.260 with and you want to hit our first one yeah sure yeah so I think kind of a theme
00:22:57.960 that I've been we've been kind of hammering on is that perfectionism is the enemy of a good enough name I think you do need to let that pain sit you do
00:23:04.679 need to kind of if you move too fast you're gonna end up having to move again but I do but at the same time like you
00:23:12.059 do want to be moving forward so think about ways that you can kind of balance both of those things and be curious about your context right what what is
00:23:19.380 the context textual clues that you can use to understand the names that are there the names that you're creating
00:23:25.679 they don't happen as we said in a vacuum also there are smelly names as we saw right sometimes they tell us something
00:23:32.220 and even when you're naming there's that aha moment where you go uh oh that name I just came up with tells
00:23:39.840 me that I need to rename this and I need to rename it in thus enough fashion and I need to take on some other
00:23:47.159 maybe refactors while I'm in here yeah because I think right like a bad name tends to be also tends to be like
00:23:54.240 I'm holding too many responsibilities tends to be what a bad name is actually revealing so figuring out what is the
00:23:59.460 seam of that that name and what how can I re-divi out the responsibilities and how yeah how do I 80 20 like well what's
00:24:06.120 going to help me get towards of more clear name without having to talk and what what are the advantage points
00:24:11.760 because of the external interfaces you want to make sure maybe you don't change all you don't change the universe but you change enough of it so that it's
00:24:17.640 easy to change the rest of it later but be mindful external interfaces are the most tricky
00:24:24.600 to rename they're external for a reason you often have partners that rely on them other applications other
00:24:30.539 microservices other gems those really are the most tricky but they can be undertaken if you handle it
00:24:37.500 with a iterative clear approach and you're communicating
00:24:45.620 yeah because we're kind of fast on time but that's good for y'all um so yeah uh backer kid is hiring if
00:24:52.860 you're interested in doing some interesting stuff on the crowdfunding namespace and uh pairing come talk to me
00:24:58.559 after also I have a board game so you should go check that out um Shameless plug also for Applied VR
00:25:04.620 we're hiring if you're interested please reach out to me we have a variety of roles that are available and uh yeah we
00:25:13.260 I think that is the end of our yeah thank you all for uh because you named it wrong
00:25:28.080 I guess we have time for questions so anyone want to ask any questions
00:25:33.720 the gentleman in the oh wait a minute the gentleman in the back I saw a hand with the red shirt you're stacked next
00:25:40.340 so the question was asked like so we I think we did uh didn't really cover what
00:25:45.419 does a good name look like um and I think I think a good name right it gives you it doesn't let make you lose time in my
00:25:52.799 opinion at least for me it like helps you helps you go in the right like what is the who are my collaborators what is
00:25:58.919 its responsibilities and uh helps you kind of move in that direction I don't know what do you think Melissa it's
00:26:04.740 clear it's contextual um we recently named something we had a faraday Connection Manager there you go
00:26:10.980 tells me what it's using what it's doing and where it sits right single you know
00:26:17.520 it does a single job so it should be descriptive and that is why that whole
00:26:23.220 notion of the enemy of good enough is perfectionism right I've I've spent way
00:26:28.740 too much time thinking over really good names and more than likely that first name you come up with
00:26:33.960 is going to be close to the mark that you're looking for oh I for real saw files like yeah what was the worst name
00:26:42.120 that we've ever ever kind of come across um
00:26:48.000 yeah files like ranked right up there I just kind of sat there and looked at it
00:26:53.520 for a good minute and thought I got to be missing something here this
00:26:58.860 can't this can't be the name of a model like it's oh my God they really did and then
00:27:04.799 I actually went and asked the the one engineer that was still there and he goes no for real go look at the migrations
00:27:10.559 we really did that and I was like oh sweet baby Buddha like why
00:27:18.000 what about you Anne honestly stuff like legit I think is usually what throws me off because it's where it's it's blurry
00:27:25.020 and it's not even like Blurry in a way that like helps me give a hint for what the person was thinking like I can usually have like sympathetic hands for
00:27:31.500 like this part like oh they know they're like the database like it drifted over time like you can see examples of like
00:27:37.140 where the name probably made sense at the time and then it stopped making sense but when it's examples like it
00:27:42.179 made sense in that person's head I guess I'm trying to be generous
00:27:48.000 or you name it after Greek characters oh yeah cute names too yeah those are
00:27:54.299 the worst yeah so I let me make sure I understand your question are you kind of saying that like uh people there are some
00:28:01.380 people who say that having a good name is good but that if you have the IDE and you can just hover and see the context that that's that it shouldn't matter
00:28:07.320 what the name is because you can just like look at the IDE and see what it there is a built-in assumption you have there and I've worked with too many of
00:28:12.840 them and I believe we had a Vim example earlier today Workshop right you
00:28:18.179 have people who are not using Ides and don't want to use IDs what do they do right so we have to believe that we live
00:28:25.559 in a world that will that we are making room for everybody regardless of the tools that they want to use and to that
00:28:31.860 end that means name it just well enough I don't need you to be perfect
00:28:38.279 really I would kind of say the stripe customer exam updater example is a great one where that wouldn't tell you because
00:28:43.919 if that if that chart if the recharge code is buried way deep and then you start using it and then you don't realize that it's doing that side effect
00:28:50.100 uh that could very much like you'd have to read the full context of that code just to understand that that side effects kind of hiding like I don't
00:28:56.640 think the IDE would pop up and tell you warn you that that's happening
00:29:02.460 so I I think uh there's two there's two things I think everybody heard that question
00:29:08.820 but um for the back uh what do you do if if you you're finding the name it's tough
00:29:14.880 it's tough for you but everyone else has kind of accepted that that name isn't so great um I would think oh I would try and make
00:29:21.720 sure you understand like the way through I think that there are names that are very costful and there are names that do have like us do have a tax but like
00:29:27.960 aren't aren't as annoying like for example I mean certainly this is all relative so totally granted on that like
00:29:33.779 uh at our current at our current code base we have an extra in the database it's called an extra but on the like all
00:29:39.840 the front-facing views it's called an add-on and they're like effectively the same words
00:29:45.299 in my opinion so like there's attacks where you have to like make that mental translation but it's not as annoying as
00:29:51.720 other things so but that being said you can still in scenes like you could still start calling it out like right like your
00:29:57.899 service objects don't have can start be calling add-ons you don't have to immediately move everything over to move
00:30:04.080 everything over to start like trying out a new name for size which is another argument I'm saying which is like you
00:30:09.600 can do incremental refactors to kind of experiment with names and see if it's actually something that other and then they they might and by shipping it then
00:30:16.500 they might be like oh yeah no actually that's kind of great but it's not those that it is what it is
00:30:31.880 thank you thank you