Skip to main content

12 posts tagged with "software"

View All Tags

A 4 weeks mob programming

· 3 min read
Reda Jaifar
Lead Developer

author

It's sound strange at first, difficult to manage, and certainly understanding the reasons behind and how can we take advantage of this practice introduced a couple of years ago.

Mob programming is an approach introduced to the agile world in the purpose of helping the teams establish a common development mindset, sharing the same principles to design and code.

A few months ago my team and I started a new project aiming at providing a digital platform for developers to help them accelerate their time to market. The platform offers a multiple
services such as creating web application scaffold, source code repositories, build pipeline with all high-quality stages like security check, team management and deployment environment.

Obviously the project size is enormous and requires a high quality architecture design, distributed systems best practices and synchronous coding styles so during the scoping and framing phases we decided to adopt the mob programming approach to share and communicate architecture decisions, lean our performances with the goal to promote our autonomy when it comes to developing user stories independently or separately.

our mob programming sessions are scheduled for the whole workday for 4 weeks consecutive, we team up in the same room having only one keyboard and one big screen. Each developer takes control of the keyboard and code for 10 minutes. I believe that respecting the mob programming rules is a key to success in this experience which is full of learning for developers but also for the quality of the product as we build together the skeleton.

I would like to share with you all the rules we followed during our sessions:

  • having a comfortable and spacious room with all the necessary tools like big screen and a mechanic keyboard
  • defining roles before each session, we've had the Driver who types in code and Navigator who discuss the idea and guide the Driver.
  • respecting timing is a key, it's better to hand the keyboard over with a broken test than overtaking.
  • we've been driven by basic user stories at the beginning in order to focus on technical architecture.
  • we discuss, debate and argue our ideas when we think they are right, no one or idea should be discarded.
  • Believing that there no strict model or perfect one to follow, a retrospective is held weekly to evaluate our mob programming enrollment.

Before experiencing the mob programming I was asking my self how can will be productive by letting 8 developers to work on the same thing for weeks, I confess how was am I surprised by what we were able to deliver, a full feature bringing a real added value to our customers. If you ask me for the secret the only answer I have is we were doing the work the most perfect way it could, avoiding broking the build, hard merges, and enduring exchanges by emails or pull requests to agree on a design, interoperability, components communication, and best practice adoption. In addition discussing ideas and approaches helped us a lot to select the best ones.

During these sessions, we build a wonderful team spirit, communication protocols, and a homogeneous mindset. without omitting the impact on our motivation and commitment. I was really happy with this journey and the results harvested at the end.

I highly recommend giving this approach a try even though for a short time, I consider practicing is the best way to understand, evaluate and conclude if it could bring the right expectations for your team.

A 5 years journey of software engineering

· 4 min read
Reda Jaifar
Lead Developer

author

Just another story of a software developer that has been started 5 years ago officially by getting my first job within the 3D Modeling Software leader provider worldwide as a junior software developer with a lot of passion and energy to write lines of code and make an impact but for sure at this stage, I can't see it because it wasn't about creating my mobile application that millions of people around the world are using or my web application with many active users a day, but a few years later it is and the product I worked on is making a great success and despite my modest contribution I do proud of this work no matter I left the company looking forward new challenges in a completely different sector.

Meanwhile, I was working with a group of friends on a platform, dreaming of reinventing the food making and delivery, we started developing "otchi" a web and mobile application for sharing meals and creating recipes but 7 months later we give on the project up and decided to stop investing our free time on this wonderful project, I confess this failure was very disappointing but I told my self "Hey! how can you ignore all the stuff you learned, it's just another try why not to repeat". late 2017 I joined a medical equipment manufacturer to develop software that runs on these different machines from Scanners to MRI and you can imagine that excitation I'm experiencing to start such mission with this sentence in my head

I'm going to develop software that runs on medical equipment helping in saving lives and bring smiles to those who are suffering from some diseases.

During this experience, I learned a lot about software development, first time to use the agile methods "SCRUM", go on production quickly and communicating with users directly, their feedbacks and comments were useful, I realized that a software developer should never be like staying at the corner of your open space implementing user stories, and whether you are developer, tester or product owner this human interaction is mandatory to well understand the needs and bring the right added value instead of delivering features.

Yes! I'm leaving this job, this company, this role, I'm leaving my manager because even within the best technical environment a developer can work in and enjoy his collaboration we cannot avoid the conflicts when it reaches a closed door. This time the lesson is simple as "human first and I'm leaving for the interest of everybody not to run away from the confrontation"

I do appreciate all the conflict discussions I've had with my manager because we debated ideas and visions, not personas and behaviors.

Hopefully, a few months ago from writing these lines, I landed in the right place I was always looking for, Here we believe that culture and values are very important and working with people with who share the same insights and attitudes is not just titles that we put on company's website but that is part of everybody's mindset.

Here at my current job, we develop MVPs and squads are completely autonomous for their stack and architecture choices meanwhile we all teams within this happy community are using agile methods convinced that these methods not only increases productivity but also facilitates project management, improves the quality of work and makes flexible change possible.

It was about sharing my career path until now in a short story, I do like to call it a journey with the faith that our job is part of our overall life, not an only professional one, this is why I'll always trying to do it with passion , and surrounded with analogous and complementary people.

#learning is a never-ending story