Pair Programming in a FinTech Startup

Yalçın Yenigün
iyzico.engineering
Published in
4 min readAug 7, 2018

--

Iyzico is a fast growing fintech startup and launches innovative products each year. The MVP was implemented by outsourced software engineers at the beginning and this strategy helped iyzico to go to market quickly. The main problem was that, the core business of the company was implemented by a group of consultant engineers and CEO, Barbaros Özbugutu, wanted to hire engineers to implement a scalable in-house solution. I started to work at iyzico at that time, 3 years ago, and we built core components of the payment system with 6 engineers by using pair programming. iyzico became one of the largest fintech companies in Turkey in 3 years and we are still using pair programming in engineering with 50 engineers. In this story, I will talk about our pair programming experience.

Pair Programming at iyzico Engineering

The definition of pair programming is “Pair programming is a software development technique in which two engineers work together at one workstation” [1].

This practice helps programmers to write code in a more enjoyable and productive way while increasing the code quality and learning. The partners become more compatible if they work ethically with a similar sense of humor and similar skill level. Some programmers (9% according to surveys) don’t enjoy pair programming because they like working alone and they think that “coding alone” is more productive [2]. Some surveys show that pair programming decreases programming defects by 15%. IBM reported that the company spent about $250 million for repairing and reinstalling fixes to 30.000 customer reported problems so that pair programming has a significant effect to decrease maintenance costs [3][4].

In iyzico engineering, we use pair programming practice for more than 3 years and it is one of the core practices in our engineering culture. We started pair programming when we were 6 engineers and the practice scaled up to almost 50 engineers. The main advantages of pair programming for a fast growing fintech startup are:

  • Financial Risk Reduction: Finance is a risky domain. It is possible that a simple bug can result in sending millions of dollars to wrong people. You should be really careful while maintaining codes with high risk. Pair programming and Mob programming [5] help us to deploy risky services confidently.
  • Scalability & High Availability: iyzico is a fast growing startup and each line of the code should be designed in a scalable and highly available way. Our pair programming experience gives some hints that two engineers design more scalable software than one.
  • Testing: We always prefer automated testing rather than manual testing. The test automation helps us to keep the product quality high while deploying releases multiple times in a day. In iyzico, we didn’t hire any manual test engineers. Software engineers are responsible for unit tests, integration tests and functional tests. The pairs implement more edge test cases and increase the product quality.
  • Engineering Orientation: Pair programming improves the familiarization process of newcomer engineers. The newcomer engineers adapt faster to the engineering culture, programming practices, technology stack, codebase..etc.
  • Domain Knowledge: In financial technologies, payments domain knowledge is important for the business. Pair programming helps us to share payments domain knowledge and improve ourselves in this area.
  • Sharing: We like sharing our knowledge with the community. We organize meetups, talk in conferences and contribute to open source projects. The sharing culture starts from pair programming in the company. Usually pair programming partners prefer to talk in meetups together and share their experience together [6].
  • Devops: The programmers make pairs with infrastructure team and this improves the DevOps [7] culture.
  • Full-Stack Development: Backend developer can have a pair with a frontend or mobile application developer and this improves our full-stack development experience.
  • Learning: Pair programming inspires product managers for working as pairs and some of them works as pair product managers. They prefer sharing the knowledge by working as pairs [8].

The execution of pair programming has some difficulties and here is our pair programming style that helps us to keep and scale this practice easily:

  • Pair programming is not obligatory. Each team (“circle” in iyzico) is free to use or not to use this practice.
  • Pairs choose their way of pairing. We don’t have any rules [9].
  • We have live code review sessions in engineering interviews and we can see the sharing skills of engineers [10].
  • Pairs can change their partners and rotate in the circle.
  • The engineering experience is not required for pair programming. Two seniors or two new graduates can become partners.

In conclusion, pair programming helps iyzico to grow fast with high quality, scalable and high available [11] products.

References

  1. https://en.wikipedia.org/wiki/Pair_programming
  2. https://www.umsl.edu/~sauterv/analysis/compatibility_results.html
  3. https://collaboration.csc.ncsu.edu/laurie/Papers/XPSardinia.PDF
  4. https://raygun.com/blog/how-good-is-pair-programming-really/
  5. https://en.wikipedia.org/wiki/Mob_programming
  6. https://www.meetup.com/iyzico/
  7. https://en.wikipedia.org/wiki/DevOps
  8. https://www.meetup.com/iyzico/events/247249663/
  9. http://www.cs.wm.edu/~noonan/pairprog.html
  10. https://github.com/iyzico/recruitment
  11. https://www.iyzico.com/en/service-status

--

--