Test-Drive your Database & the 4 Rules of Simple Design

Apr 27, 2016 by Madalina Botez in  Announcements
 Enjoy the following series of interviews with the speakers, top-notch software crafters from across Europe, joining  I T.A.K.E Unconference, Bucharest, 19-20 May. Discover the lessons learned and what drives them to challenge the known path in their field. 

 

Alastair Smith, developer at Redgate and founder of the Cambridge Software Craftsmanship Community in the UK and a co-organiser of DDD East Anglia, will join this edition of I T.A.K.E Unconference. After attending his sessions, participants will be able to use their programming language to clearly express a program’s purpose and stop writing the programming equivalent of legalese. They will be able to write unit tests for their own SQL code and enjoy database development again.
 i-take-unconference-speaker.009

 

#1. SHARE TOP 5 THINGS YOU DID THAT HELPED YOU GROW & BECOME THE PROFESSIONAL YOU ARE TODAY

The five things that put me on this path were:
  1. Reading software development books hungrily in the first few years of my career. Texts such as Code Complete and especially The Pragmatic Programmer and Test-Driven Development by Example were hugely influential on my early career and the direction I chose to take. The Pragmatic Programmer in particular is worth re-reading: I didn’t fully understand some parts of it as a fresh graduate joining the industry, and the experience I’ve built up over the last ten years has allowed me to get more from it on each later reading.
  2. Attending developer meetups, user groups, and conferences. Aside from the knowledge gained from the talks and workshops run at these events, they’re an invaluable opportunity to meet other developers, learn from their experiences, and about the local software industry.
  3. Finding a good mentor. As it turned out, my mentoring was very unofficial: a former colleague of mine guided me in the ways of professional software development, and pointed me in the direction of books, blogs, and other resources to learn from. His advice was invaluable in helping me discover techniques for writing good tests (and why tests are important), the importance of refactoring, and the foundational principles of Object-Oriented Design, such as SOLID. All of this at the beginning of my career, in an environment where I wouldn’t have otherwise been exposed to such topics.
  4. Understanding people as well as tech. As technical people, we can often be quite blinded to the problems around us and focus on the tools and technologies rather than the underlying collaborations with other people.
  5. Applying principles I’d learned elsewhere to my profession. I play a lot of music, and have been for over 20 years; as such, the idea of deliberate practice is quite a familiar one to me, and applying this principle to the techniques used in software development made a lot of sense. Participating in and organising things like Dojos and Code Retreats has helped me understand and improve my own development process enormously.

 

#2. WHAT CHALLENGES WILL THE PARTICIPANTS FIND SOLUTIONS TO DURING YOUR SESSIONS @ I T.A.K.E UNCONFERENCE 2016?

Database changes are difficult to get right, and objects like Stored Procedures and Functions can be particularly hard to work on. We’ll take a tour of test-driven development, and how we can apply it to our database objects to reduce risk in deployment. We’ll also look at how we can set up a CI server to run our new database tests automatically, just as we would for application code.
We’ve all had to read contracts at various points, e.g. when renting a flat, or borrowing money, or the EULAs that ship with software (and who actually reads those, right?). These contracts are generally written in “legalese”, the language of lawyers that is so concerned with being fully precise, and closing loopholes created by interpretation, that documents written in this language become obscure and the meaning obfuscated.
Just as human languages are a communication tool, so are programming languages, and we have our own form of legalese: code that’s far too concerned with implementation details, such as nested for loops, if statements, etc. Refactoring helps us move away from this, but where should we head? If we’re writing new code, how can we best express ourselves in the code we write?
 

#3. WHAT ELSE WOULD YOU LIKE TO SHARE WITH PARTICIPANTS?

Creativity is an important part of my life: I play the bassoon to a high standard and recently started singing. As well as music, I enjoy cooking, and working with chocolate; photography; and losing myself in a good book. William Boyd is a favourite author, and having recently enjoyed The Hunger Games series, I’m continuing my dystopian fiction streak with the Divergent series.
Similar to the Craftsmanship metaphor for software, I like collecting “real-life” examples of software delivery ideas. Ask me about minimum viable cathedrals, or the early Sputnik launches.
I’m super-excited about Star Wars: Rogue One!
logo ITAKE 2016

 

Want to join Alastair and many more software crafters from around Europe?

Join I T.A.K.E Unconference 2016!

Journey to Agilandia

Apr 10, 2017
Enjoy the following series of interviews with the speakers, top-notch software crafters from across Europe, joining  I T.A.K.E Unconference, Bucharest, 11-12 May. Discover the lessons learned and what drives them to challenge the known path in their field.

 

Liviu-Stefanita Baiu, Senior Business Analyst and Analysis Discipline Lead, has worked as a full-time Business Analyst for the last 5 years, in a couple of companies, in an Agile environment. He will share at #itakeunconf real-life samples of the techniques and tools and how they helped get along in Agilandia.

 

#1. Please share with us 5 things you did that helped you grow & become the professional you are today

 

Some of the most important turning points in my professional life are related to the people – my family and people I’ve met and work with along the way.
√ The set of values I learned from my family is the basement for all I am today, and I will name only a few – fairness, transparency, and loyalty helped me get through various situations I encountered.
√ Along with the above values – assuming responsibility for the things I’ve done allowed me to become trusted and receive honest feedback about my activity. Getting the right feedback (positive or negative – we all have successes and fails) and learning from it – this is something of value for me, and I try not to repeat the mistakes I’ve made along the way.
√ I like to read and I was encouraged to do so – this got me to pay attention to details and try to see beyond words and facade.
√ Making a career switch, thirteen years ago when I joined Transart, was a turning point. And the things I learned there for almost seven years, allowed me to naturally evolve to become a Business Analyst.
√ The colleagues and superiors I had, in my previous employments, contributed something to my evolution – their appreciation, as well as their disapproval, and always their advice.

 

#2. What challenges will the participants find solutions to during your session at I T.A.K.E Unconference 2017?

 

My session is nothing about panacea, rather a proposition for the participants to use a set of tools, techniques, and attitude to tackle the complexity of software projects in an Agile environment. Some of them tools will help them understand the product vision, and other can be used for passing it on to the teams they work with. The match between them and each participant’s work environment as well as the value they bring in everyday work is a decision that relies solely on each and everyone from the audience. This toolkit worked for me, it may work for others.

 

#3. Recommend for the participants 3 sources you find inspiration from and would help them better understand you

I play GO (or wieki) – an ancient Chinese strategy game – unfortunately less often, I enjoy reading Fantasy and Sci-Fi literature, but one of the books I enjoyed reading is a military treaty – Sun Tzu’s Art of War, and one of my favorite authors is Mario Vargas Llosa, from a professional perspective Patrick Lencioni – The Advantage was an inspiration. And to conclude – the best source of information is the team you work with, they will show you what you need to learn so you can work together.

 

Want to join Liviu and ~300 software crafters from around Europe?

Register now for I T.A.K.E Unconference 2017!

Registration is now open

Nov 06, 2014
itake

Registration for I T.A.K.E. Unconference 2015 is now open. Just the first 30 participants will benefit from the Supporter Ticket.

Here are some highlights from the Schedule we have prepared for your high tech delightment:

Are you ready to write codeanalyze architectures and technical strategy and immerse yourself into this awesome gathering of software passionates?

If Yes, Register to be part of the awesome 2015 I T.A.K.E. Unconference.

Programming contest @I T.A.K.E Unconference

May 05, 2017

As for every I TAKE Unconference edition, we want to give a chance to the software crafters from the audience to showcase their skills and learn more in the process. And because we appreciate passion, we offer a prize to those who convince a jury of well-known international developers that they are the most skilled in the room.

This contest is not meant to be easy. It will require you to practice beforehand, so please read the instructions carefully.

It will also require you to register before the event.

Mechanics

  • IMPORTANT: Register to the contest latest one day before I TAKE Unconference by sending an email to steliana.moraru@mozaicworks.com 
  • On the first day of the event, after lunch, you have max 15′ to do a performing kata in front of the jury.
  • The winner will be announced at the end of the second day

Constraints

To simplify the jury’s decision, the performing kata has to conform to the following constraints:

  • Only the following programming languages are accepted: Java, C, C++, C#, Python, Visual Basic .NET, PHP, Javascript, Swift or Ruby
  • Only solo contestants are accepted. Sorry, no pair programming this time
  • The kata has to showcase refactoring skills.
  • The kata has to last max. 15′

How we will judge

The jury will judge your refactoring skills.

The ideal kata looks like this – you will get maximum point if you:

  • clearly state the smells you see in the code
  • pick one of the smells
  • clearly state your plan to fix the smell
  • fix it in small, safe steps
  • run tests after each step to prove you didn’t break anything
  • commit after each step with a clear message explaining why you made the change
  • fix as many smells as possible within the time constraint

You will loose points if you:

  • make big or unsafe changes to the code
  • break the behaviour after changing the code
  • don’t improve the code a lot
  • don’t improve the design by the end of the kata (hint: we judge design using SOLID principles and the four elements of simple design)

Recommendations

To help you, we’ve thought out what we would do if we participated to such a contest. Here’s what we recommend.

1) Use one of the following codebases for the kata:

2)  Practice beforehand on the structure we presented for the ideal kata. Ideally find someone to practice with.

3) Watch other people refactoring. YouTube has many videos on the topic, including using the recommended code bases.

Glossary

A programming kata is a repeatable exercise used to practice specific skills.
Performing kata means doing a kata in front of an audience.
Refactoring means changing the internal structure of the code without changing its behaviour.

Leave a Reply