E186 Gáspár Nagy: Creator of SpecFlow & Co-author of BDD Books Series

Episode 186 August 22, 2022 00:33:50
E186 Gáspár Nagy: Creator of SpecFlow & Co-author of BDD Books Series
NoCode Wealth
E186 Gáspár Nagy: Creator of SpecFlow & Co-author of BDD Books Series

Aug 22 2022 | 00:33:50

/

Show Notes

Gáspár Nagy is the creator and main contributor of SpecFlow, a regular conference speaker, a blogger (http://gasparnagy.com), the editor of the BDD Addict monthly newsletter (http://bddaddict.com), and co-author of the BDD Books series ("Discovery - Explore behaviour using Examples"; "Formulation - Express examples using Given/When/Then" (http://bddbooks.com)).

His LinkedIn: /in/gasparnagy/

View Full Transcript

Episode Transcript

Abdulaziz M Alhamdan 0:16 Once upon a time, there were 10s of 1000s of makers struggling every day they built for hours and hours but didn't ship and didn't earn enough income. One day, the no code wealth podcast came to help them find the way because of this, makers became founders and live the lives they deserve. Because of that, founders live lives of abundance, freedom, and creativity. That's what I'm really all about. Hello, my name is Aziz and from being a poor boy born to a single mother in North Africa, with no opportunities, just sheer hard work, to failing multiple startups, yet learning a whole lot to barely escaping alive the war in Ukraine, even living as an illegal immigrant. I've lost everything twice. And now I'm rebuilding my life one more time. 1% a day sharing the wisdom of luminaries have interviewed on this podcast from Google executives to Amazon, Microsoft, Forbes, Technology Council, Harvard, Goldman Sachs, Financial Times and even a priest from the Vatican church. Everyone is welcome here. So let's begin. My guest today is Gosh, bar. Nog Ghosh bar is the creator and main contributor of specflow. A regular conference speaker, a blogger at cash bar nagi.com, editor of the BDD addict monthly newsletter at BDD addict.com, and co author of the BDD book series, Discovery explore behavior using examples, formulation Express examples using given when, then, in software engineering, behavior driven development BDD is an agile software development process that encourages collaboration among developers, quality assurance testers and customer representatives in a software project. It encourages teams to use conversations and create examples to formalize a shared understanding of how the application should behave. Gosh pod works as an independent coach, trainer and test automation expert focusing on helping teams implementing BDD and specflow. Gasper has more than 20 years of experience in enterprise software development as he worked as an architect and a Java developer coach. He is an approved trainer and training provider of the agile testing fellowship as a trainer of the agile testing course developed by Janet Gregory and Lisa Crispin. Gosh Barr has been developing a synchronization tool called spec saying that integrates gherkin based, is that correct? Because Okay, gherkin based scenarios to azul dev ops TFS. Another tool he has been working on is a feature file editor called dev a room and new Visual Studio extension for specflow. Gaspard, how are you today? Gáspár Nagy 3:23 Thank you very much. I'm fine. I'm glad to be here. Abdulaziz M Alhamdan 3:26 Thank you very much. I'm really happy to have you here and to ask you, as a more general thing, what about BDD and spec flow? That is transformative to the Agile development process? What was bad or wrong or inefficient about it before? And what is it trying to solve? Gáspár Nagy 3:49 That's a very good question. Because I always see BDD as not something that is that you believe immediately and then it will be fine for you. But But there's a tool that helps you to change something differently or change something better in this case. So I can I can tell you what, what I have experienced and probably that will be also useful for the for the listeners as well. So I worked as a in software development, and I was working working as software developer, lead software developer, as you may have heard, and, and basically, we were trying to do automated tests and whenever we try to do automated tests, in an in an agile setup, we realize that in the classic way, how you normally would do an automated test, like just making some test methods and and collecting a bunch of code to be able to satisfy that that's not really fitting into this new agile landscape because because as you are writing this bigger amount of code, they are they are losing the traceability back to the requirements. So basically, they they will become a bunch of code But you will never know where it will be very hard to diagnose or, or reverse engineer what we really wanted to test with those. And, and for us, this was really a problem because we had several complex tests that started to fail, maybe after a year. And then we've, when we, when we looked into them, we couldn't really remember what we really wanted to do with those tests. And we had to spend a lot of time on on on the maintenance of these tests. And this was really frustrating. So basically, we were trying to find some way how we can better document what we would like to test and this is how we found BDD. So definitely that that is one aspect, which is, which is changing the way how you normally operate in an agile setup that, that your tests, or at least those tests that are written in a BDD style, feel much better connected to the requirements. So first of all, you can also get some requirement coverage with them. So we will, you will be able to see how much of the requirements you have automated test for. And if you need to keep maintaining those automated tests, they'll be much easier to, to understand them, and to decide that the test itself makes sense. Or if there is any problem with them Abdulaziz M Alhamdan 6:16 think you this makes me think I think in psychology about the present self and the future self, that often human beings will behave now in an emotional state, in a way, and then they will be lazy and like throw too much work on their future selves in a way that even like a slave owner or an enemy within do. And therefore, as you mentioned, as things evolve as people learn and change over time, they might not remember why they're creating the tests for the software. And therefore it's about both having the intentions clear, so that you remember why, as well as making sure that you understand why it's useful, and whether it's still useful after time. Is this correct? Gáspár Nagy 7:06 Yeah, definitely, definitely. So any testing effort is an investment for the future. And, and you would like to preserve that value. So if you have invested that amount of time, it makes us to produce something which is valuable, and not something which is just there, but not really helping you. Yep, absolutely. Abdulaziz M Alhamdan 7:26 Thank you. And I will change a little bit to go to the agile methodology. Just to understand more, since you have a lot of expertise in this. I spoke one time to Ukrainian expert in, like, teams management. And he said we don't use agile in the way that it is because it's too expensive. There will be too many resources that are sitting idle and waiting. His approach to team management is like a factory where the focus is resource utilization in order to maximize use of every resource. What's your perspective on this? Do you feel that a pure agile way is actually feasible? What's his perspective? And you agree with that resource utilization is a much better approach unless you're a fortune 500 Then pure agile? Gáspár Nagy 8:18 That's a very tough question. But I think there is no no such thing like agile way, I mean, the Agile is a set of principles, that that is basically encouraging you to better focus on, on doing the right thing, and, and producing something which is meaningful in some way. And of course, meaningfulness might also be able to mean that, that makes more profit. But of course, it also also can mean that it's better for the users or users simply like it. So So that's, that's the thing. And that's, that's, that's the core principle of agile how you can how you can basically ensure that you are doing the right thing, and to be able to ensure that you were you are doing the right thing, at least I haven't found anyone would be able to do this alone. So that you imagine what to do you do it and it will be right like that, but you need feedback and I think many of the agile methodologies and frameworks that are that are built upon this this core principle are basically working in a way that they are providing you continuous feedback to tell you whether you are you are the right track or you are you are going into the right direction. And and of course BDD is also fitting to that because obviously with this with this understandable tests that are telling you whether your support your your software is actually doing this thing or not. With that you're they are providing you feedback with and and broadly there are many ways how this can be implemented. And I'm not that experienced with how this can be done in a in this factory style that you mentioned, but definitely what I have seen that really good is also really trying to get the thing that that you that we really wanted, can only be done. If if the people are working together, they're collaborating together, and they are forming a team. And of course, if you are forming a team, if you are building, building up any kind of collaboration that needs slack time, so that it will not work in a way that if you are 100%, utilizing this or that project, then it then you will never be able to form a team. And you will never be able to really efficiently contribute at least that's how I have seen it. So probably this is not a black and white thing. But But thinking people thinking in humans and thinking in teams, I think these are very important things, to be able to match the good result, Abdulaziz M Alhamdan 10:49 thank you. And trying to think about this as a mental model and to ask you how the approach this approach change the way you approach goal setting and the way you approach your life, I'm thinking that probably it means when you have a team, and whatever goal it is, each one will have an input and clarity on the end result that is meaningful, and valuable, as well as a plan. And testing whether that plan at each way is helping you reach your progress towards the goal, as well as remembering why you have those tests or why you're you have chosen or decided on that strategy, or that goal in the first place so that over time you can realign and bring yourself back to the on track. Is this correct? Gáspár Nagy 11:40 Yes, yes, yes. And this can even be at that very extreme. And I have I have been participating at least one and a half time for the data that I was in project where where it has to be completely rewritten because of some changing environments or changing context. And they already only kept the tests. And basically, from the test, they were able to rebuild the product in a new platform. And then it very well. So yes, absolutely, Abdulaziz M Alhamdan 12:09 thank you. And let's get a little bit more philosophical. I love this, we can have fun. There is a view on life on like philosophy of science, etc, that in reality, outcomes are random, or not random in a way that every number is chaotic. But that randomness looks like it has an order. Therefore human beings create patterns in their minds that they think they're trying to control reality, while everything is really outside of their hands, because there are too many factors at play to determine the result. And what happens, and therefore how does this approach either help, like people get to their goals in this way? Or is it an illusion, where we're all trying to pretend like we have control over life, when in reality, it's only a distraction? While things are happening with too many factors outside of our hands? Gáspár Nagy 13:08 Oh, that's a good question. Hmm, I don't think I think so I don't think that that we have a control of life. So I definitely that's not something that I would, I would say, however, we always we keep have to make decisions. And decisions are somebody influencing, influencing, but where we get at the end, and the more information that is available for you to make the best decision at this moment. Probably the better the outcome is, at least in average, so. So basically, if we if you translate that back to behavior driven development, or even agile, basically, these these methods help you to know better where you are currently, what your system is capable of. What, where are you in the progress? And then based on that, probably you can make better decisions at the end. So yeah, it's not controlling it's making decisions. Abdulaziz M Alhamdan 14:09 Thank you. And I have a question about that. But I'll ask another thing, since it's about knowing and testing whether you're going in the right way, and maybe it's different in software development, but in life, there is a lot of the Pareto principle that even happens where you need to put 80% effort first first before where for a long, long period, you don't see any results and you don't know if you're going in the right direction or not. And then in the end, all the results get into emergence or into a logarithmic or a very fast. It's like they say about the bamboo that it says months and months and months, built in roots and under the ground and then suddenly super fast, it becomes long. So how can testing or BDD or your own experience and thought, help people, when they're building something in life where the results are really delayed, where things that you do today might only be beneficial and show you results in one year or two years. Gáspár Nagy 15:17 I so I mean, this is a metaphor. And obviously, like every metaphor that can be that can be seen for many different perspectives, I think. If you are, let's say you are building a product, let's say that you are a startup, then, then just that, just because you are building something new, it doesn't necessarily mean that you have to wait for a long time until you can validate whether your ID was good or not. Basically, the metaphor can be seen as well in a way that that before you started your startup or before you started this new product, you have you have been living in this in this context and in this environment. And you have learned and practiced a lot until you finally get to the decision to make this product. So basically, maybe the roots that you have built are already there. And now this is any wave, elevator rapid growing part of the of the thing so so I don't think that you that you really have to wait such a long time nowadays to be able to test a business idea. So of course, you will ever be able to tell whether you will be next Facebook or Twitter, but whether you will be able to make a decent product. That is that is helping you to move forward and helping people to achieve their goals. I think for that there are some mechanisms or techniques, how you can how you can verify in an earlier stage earlier means less than a year, let's say like that, Abdulaziz M Alhamdan 16:50 thank you, and about software development, and things like that. There are so many software developers in the world. And everybody, I'm not only speaking about that, but when it comes to business to markets, everybody says, also many markets are saturated, there isn't so much opportunity to break through to create something innovative and unique. So just to understand out of curiosity, with so many people who are developing software for use cases that cannot be infinite, there is a specific number of them. Is it that software developers are creating somehow clones of existing tools and apps, or is there always room for something new, when you're creating software and the needs of the clients and the customers, Gáspár Nagy 17:42 I think most of us are creating clones of existing things. But this is not necessarily a bad thing. So I mean, if you if you would just think back of the history, how such how particular invention came to the practice, you need to do that often more and more times. So until we have the cars that we have nowadays, how many versions of, of the engine has been made since the beginning. And they were recreating again, and again, with slightly modifications, that's what we are doing also in software. Of course, sometimes you get some totally new idea, but that's very rare. Most of the software developers are not in this in this business. And I think just like everywhere, of course, there is a chance to to make something extraordinary new, but I think you can enjoy and you can be very productive and very proud of yourself, even if you are not making the next groundbreaking software in the world. But we are just making an existing software similar to an existing software, which is slightly better than the demo tube that we had so far. So I think I think that's not a bad thing. Abdulaziz M Alhamdan 18:56 Thank you. That's a really really good answer. And about BDD, I would like to understand what does it mean that BDD is poll based as well as what what how do you decide what to test and what not to test. Gáspár Nagy 19:13 So, the pool pays nature of BDD comes from the from the fact that that a common problem in software development development that that you receive as a developer you will receive the requirements from the product owner from the business and then you immediately jumping into the solution space you jump into coding or some sort of configuration of of the system and it's very hard to get get lose the connection back what was really wanted. And typically, a typical software developer behavior is that you are gold plating or creating some unnecessary stage things which were not asked for but but but you would think that okay, might be made this might be useful in the future or something like that. At If that's not valuable, that's just producing a lot of unnecessary code that that that you have to maintain afterwards. Pool based approach means that that all of the coding work is really triggered from some, some requirement that is expressed from the stakeholders or from the user's point of view, like a test, so that you are starting with such a business written business rank, language written test. And that tells you what kind of thing we would like to fulfill that the concrete needs. And it just dictates for the developer dictates for us what we need to produce to be able to satisfied satisfy this particular test. And when this test is satisfied, we can just simply stop, this means that this thing we have, we have finished, we don't need to work anymore. We just let's see the next requirement. And let's write to fulfill that. And this way you can, there's a less chance, let's say, to make some gold plating or producing some unnecessary code that is never going to be used. Abdulaziz M Alhamdan 21:02 Thank you. And this makes me think about innovation and BDD as an innovative, or at least a revolutionary concept to you. How do you think innovation happens? Is it something that is just a recombination of things that existed that were not combined in that way before? And therefore, it's more about copying, but changing contexts? Or is innovation something a lot more ephemeral? Something more abstract that happens like in Rica? Oh, that's Gáspár Nagy 21:37 very good question. And I don't know, I don't know the answer. So what I know, and this is what, how I have seen innovation, at least in behavior driven development, that, that, let's imagine that you have a product owner or someone from the business, and telling you the requirements with the exact same words, if multiple individuals are listening to that, then we have, they're building up some mental model about what was requested. And until later, we get stuck, because because we will realize that, that there are some vital spots in our knowledge. However, if you put together these people and all three together are listening to these requirements and starting to have a conversation, then suddenly, we are discovering different aspects of the requirements, different white spots of the requirements, and, and all together as a team or as this in this collaborative nature, we can, we can get to build up some knowledge that otherwise as an individual wouldn't really be possible. And I think that's a kind of creative thing, but I don't know where it is really coming from. It definitely doesn't work if you're doing it alone. It and it's it's not doesn't mean that there has to be a specific kind of person who is contributing, but everyone can bring in their own backgrounds, their own way of thinking, and basically from the diversity of the things thinkings the collaboratively, we can we can produce something that that wasn't there before. Abdulaziz M Alhamdan 23:15 Thank you. I have also a lot of questions. I will begin with this one, you have developed domain expertise? And of course, it took a long time. But what is your approach or perspective on learning? There are people who try to read as many books to spend as much time exploring basically, as much knowledge as possible. Do you feel that is it has its place or something very important when learning to just keep on going? And exploring and exposing yourself to new ideas? Or do you believe in systematically over learning something until you master it before moving on to the next and therefore, it's much slower, more frustrating, when there isn't much excitement? And that process? Is that how you believe in this world where things are innovating and changing and new ideas are coming at such a fast pace that taking it slow and learning really, really well. Slowly? is the better way? Or what's your perspective on learning? Gáspár Nagy 24:21 That's a very good question. I don't know really. But what I have seen that there is no single way of learning so everyone who I'm encountering or I mean, I'm doing a lot of training. So I see a lot of people learning in some ways, but I have seen that everyone is learning slightly differently. So I think the most important is for the individuals to try to understand what is their way of learning. Maybe Maybe my way of the learning would be whatever reading a lot of books, maybe someone else is better in listening to podcasts, for example, or just reading blog posts or trying them out trying facts thinks out themselves. So, or maybe, of course, the combination of all these. So, so I think I think it's, it's all personal and, and and everyone needs to find the, the way, what is better working for them. And for us who are providing content, I think our responsibility is to provide the content in various different forms. So that people people can choose what what is really benefited for them. That's, that was one of the reasons why we did the books itself. Because because we thought that, okay, there are certain people who are very good learning through, for example, a trading, but there are some people who need their time sitting down with a book, and, and thinking over the things be their own pace. And of course, there are probably many other ways to do that. So so so that's how it is for myself, who it's even very hard to tell what what how I learn. Definitely, I, I learned it in a way that I'm, I'm trying to understand the things behind so I typically not able to learn something without understanding it. But and I've always tried to imagine how this was made, what kind of challenges would have been there if I would try to recreate the same and, and, and that helps me to, to, to focus on on those critical decisions that, that, that the thing that I'm learning, has been made to be able to resolve that. That's my way of learning. But as I said, it's very personal. Abdulaziz M Alhamdan 26:43 Thank you. And to ask you about your productivity process, which might be something interesting to people or they can be curious about. They spend a lot of time on social media. If not, how do you control that? Do you have, like, deep knowledge or deep work periods in every day that you put? When do you rest yourself so that you don't burn out? Or what's your perspective on burnout while growing, developing and succeeding, Gáspár Nagy 27:15 I'm not a social media person. So obviously, I'm, I'm on the different platforms, but I don't spend much time with these tools. You simply because I just realized that I'm, I'm too careful about making sure that I'm saying the right thing. And typically I would spend an hour for making a single tweet, because I'm rephrasing it 100 times until I finally press the tweet button. And it just, it's not fun for me. And therefore I I'm I don't do that very often. And, and for reading, I also realize that that I can just spend a lot of time with that without too much value, for me at least. So I usually I don't spend too much time with the social media. But obviously, not only the social media can, can, can get you even if you are just doing software coding or whatever else that can, that can really change your mind. So I think, for me, it's very important that at some point, I'm really standing up from my desk and try to do something totally different. I mean, I have a family with three kids, so they are helping me to, to, to, to switch out from that context. But, but I'm also doing some other things which are totally not software development, like reading books, or whatever, watching a movie with my wife or something like that, that that can help me to, to stop basically. And, again, I'm trying to, to keep the evenings free of work as much as possible, so that whenever it's time to get to the beds, I'm already stopped my mind. It's not always working. But what I'm trying at least Abdulaziz M Alhamdan 29:04 thank you so much. Gosh, Potter, this was a privilege and honor. And can you speak about your books and your trainings for those who might be interested who might be HR practitioners or people who can benefit from BDD as well as your newsletter, a website and all that? Gáspár Nagy 29:24 Yeah, I do a lot of things. So So basically, the training is my, my primary business, so to say so that's, that's where I'm getting in contact with with the most of the people. Basically, my training is based on the experience that I have gathered with, with BDD and specflow and generally test automation in the last whatever 15 years. And, and, and I, I have been attending a lot of trainings, of course, and I try to make my trainings work in a way that even I as an attendee would like it So I try to make it make them interactive. And, and I what what works for me is that realize that it's not not only about sharing details, sharing content but also about sharing stories and answering questions. So for example, in my training trainings, I really like the, if someone is asking questions, and I usually tell to them that, that their questions are much more important that than anything else that I have prepared. So I really enjoy doing that. And, and usually, my, my, my attendees are also get the point and like that. So that's, that's somehow, something I really, like. I mentioned that, that we started the boot project, it's hap rose, to be able to have some other way for for sharing details about BDD. And, and besides that, I think, the books, I think that is we we achieved the book, the goals for the books that we wanted, so that we wanted to make a small, easy to read book and something that that we did. But we also enjoyed very much the writing process of the book, because it's another way of how you are consolidating your thoughts, and trying to collect all the details from the from the community that finally made up the book. So that's what I do. The, the the newsletter, which is the BDD addict newsletter that was just coming from a simple practice. I mentioned that I'm not very much of a social media person. So typically on conferences, people were asking me that, hey, have you? Have you seen that article? Or have you seen that other article? And in many times, I was just saying, no, no, I haven't actually. So I thought that, that I should make some, some order my some discipline in my, in my professional content reading. So nowadays, I'm very, very careful to check if there is an interesting article, or someone's suggesting me a good article. And I always bookmark that. And basically the the, the newsletter was coming out from that practice, I thought that if I'm anyway collecting these articles, vinyl chair, then with the others, so basically, the the newsletter is nothing else than then basically a suggestion of interesting articles that I have seen in that particular month. So So I think these are the most common things where I'm sharing details and trying to help people to practice BDD your or get better visibility. I think BDD is very useful, technically, hey, do this now for more than 13 years. And I had a lot of successful projects, where I've seen that the BDD was really helpful. I'm not saying that this is the only practice that you could do, but but definitely a useful one. So I especially like to share details for those people who tried BDD but failed with that. And maybe they did that in the not didn't do that in the right way. And trying to discuss it with them, but how they did it, how this could have been done better or differently. And maybe next time, they will have more success with that. Yep. So these are the things that came to my mind. Abdulaziz M Alhamdan 33:24 Thank you so much. This was really my honor my privilege. I enjoyed this conversation, and I wish you a good day. Gáspár Nagy 33:32 Thank you very much was a pleasure to be here.

Other Episodes

Episode 149

May 08, 2022 00:33:36
Episode Cover

E149 Clement Kao: Founder @ Product Teacher

Clement Kao is the Founder at Product Teacher, a product management education company with the mission of creating accessible and effective resources for a...

Listen

Episode 25

August 08, 2020 00:48:47
Episode Cover

The Coronavirus Strategy To Dominate & Succeed In Any Coaching Niche

#025 The Coronavirus is causing the biggest economic crisis of our lifetimes.Millions of jobs lost. Many traditional businesses are trying to survive.However, in this...

Listen

Episode 79

February 04, 2021 00:39:05
Episode Cover

Maker Interview - Dmitry Norenko: CEO of UpSwot

Dmitry Norenko took his business idea from Ukraine all the way to being accepted at the prestigious Berkeley SkyDeck Accelerator in California, and he...

Listen