Meet Amir Barylko: TDD Training
Typemock is always proud to sponsor user groups, conferences, and also TDD trainings. If you have an upcoming event or user group for .NET, C++, or Agile, and are seeking sponsorship, e-mail us. One of the events that Typemock sponsored was a TDD training session in Winnipeg, Canada.
Who is Amir?
Amir Barylko started his career in 1994 working for IBM as a senior developer while he was finishing his Masters degree in computer science. Since then he worked as team leader and architect for the past 15 years. Having started with languages like C++ and Java he spent many years coding in C# and training other developers in topics such domain modeling, abstractions, patterns, automation, dependency injection, testing, etc.
Amir is a rare combination of high technical skills, lots of experience in a wide range of platforms, exceptional presentation skills and great sense of humor. His presentations are always rich in content and fun to attend.
Typemock decided to interview Amir to get his perspective on Agile development and TDD. What do you think? Leave a comment!
TM: Tell us a little about yourself.
AB: I have been working as an independent Software Quality consultant for the past three years. I’m very passionate about testing, design, agile methodologies and quality.
Most of the time I work as an Architect mentoring my team, coding and helping with the development process.
Last year had the opportunity to start doing training on my own with a “Ruby on Rails” five day training, and a few weeks ago did a “TDD hands on” training.
Also a few weeks ago I participated at the first CodeRetreat here in Winnipeg as a facilitator, was an awesome experience.
TM: What technologies do you develop in?
Lately I’ve been working with C# (Desktop and Web) and Ruby on Rails. However in the past worked with Java (GWT, J2EE) and some years ago C++.
TM: How important is Agile Development (in all its forms: XP, Scrum, etc.) in your personal and professional career?
Agile Development is critical for me as a professional because so far is the most successful methodology I applied in terms of delivering the right thing, delivering under budget, using a lean process, high quality the whole way, etc. However “Agile” provides a set of tools and good practices, and not all the projects present the opportunity to use all of them together, so use the combination of tools that is more applicable to each project.
TM: What about unit tests? Should developers be unit testing? For you, what’s the value of unit testing?
I think that each developer has a duty: To provide working quality code.
How to do that? I find that unit testing is an excellent tool to achieve that goal, and every developer should give it a try. Soon you will discover that you can do changes to the code with confidence and coding is once again a joyful task.
In terms of value, unit testing combined with TDD and BDD is a great methodology to discover your design and focus on delivering value.
What better documentation than all the tests to discover how a class works? Also it’s a great safety net, I don’t know how many times having unit tests saved my back….
TM: If unit testing is something that you think is important, what would you tell developers new to unit testing?
Find someone that can mentor you. Discovering unit testing alone (TDD included) is hard.
Working with someone with experience will help you learn good habits, learn faster and make the process more enjoyable .
Going to Coderetreats, Trainings and collaborate to open source projects will help you a lot as well.
TM: You offer training on TDD. What’s the most surprising about your students who are new to TDD?
They are shocked when they start, thinking about testing first is quite a change.
However slowly you can see them becoming believers and get amazed by their own results.
TM: As a developer, what are your biggest challenges?
Spending more time coding than in meetings.
TM: Anything else to share?
I’d like to encourage all developers that they want to adopt testing and other technologies to stop waiting for the right time. Instead of waiting for the perfect job to appear, or the right manager to get hired, it’s time to take matters in our own hands.
Share your ideas, use a social coding site, participate, learn and collaborate.
Let’s raise the bar together!