Experiencing XP has changed my life as an iOS Engineer

Experiencing XP has changed my life as an iOS Engineer

Have you ever been so bored cause you feel your skills don’t grow anymore ?

Well, in my case i have.

The problem is i actually know that i can still improve my skill but i don’t know how and what exactly i should do to improve it. I explored some best practices, found out about testing tutorial but the resources are insufficient. Even if i try to do the testing stuff, i don’t even know if i am doing it in the right way or not and it didn’t seem possible to be implemented in my work at that time.

I could say maybe i was stuck for too long in my comfort zone. So there was a time where i finally decided to move out of that zone, trying out something new where i have the confident that i can learn and grow from that experience in order to become a great iOS engineer.

So what i actually ended up with ?

Well yes, it’s the XP culture in KMK here that becomes the answer for me to be able to improve my skills and make me feel a different programming experience that i never had before.

So, what is XP ?

Extreme Programming (XP) is an agile software development framework that aims to produce higher quality software, and higher quality of life for the development team. -Agile Alliance

And here is another definition from one of three founders of XP.

Extreme Programming is a discipline of software development based on values of simplicity, communication, feedback, courage, and respect. It works by bringing the whole team together in the presence of simple practices, with enough feedback to enable the team to see where they are and to tune the practices to their unique situation. -Ron Jeffries

Both of the definitions are pointing to the same goal, towards a better software development. Because i have been in a situation where software development really stressed me out where any changes i made will definitely break the app in the other parts thanks to the coupled messy codes, this is something like a ray of hope for me.

Now i have been experiencing XP for more than a year in KMK and i want to share it to you how it has changed my life as an iOS engineer.

Here are some of the changes where i will mention some of the XP practices (hope you have heard it or you may read them in my previous blog posts) in it such as pair programming and TDD (Test Driven Development).

Programming becomes more fun and less stressful

Usually when doing programming alone when i feel stuck or annoyed about a problem, i will feel depressed alone. But thanks to pair programming, now i will feel stuck and annoyed together with my pair since it’s a shared problem now, hahaha. Well, it’s either that or my pair can give me another insight about it (and vice versa) and now we are able to solve the problem together making it feels less stressful. How excellent is that !

When you have a good and compatible pairing partner, it’s always fun to have a discussion to solve the problem you have in front of you while deepen the relationship in the team. Furthermore, it will also improve the code quality that you produce because it’s the work of art by combining two great minds. I even ever have this thought in my mind while looking at the code that we produce, ain’t this a magnificent piece of art we got here.

Another factor that makes programming fun is when i do TDD, there is always a moment where red (means failing) test exists and i will try my best to make it green. The moment where i was able to make the test green again, i will have this accomplished feeling similar to the moment when i have cleared an annoying obstacle in a game. So it almost feels like i am doing both gaming and programming at the same time.

Now the fact that looking at those green tests are making me feel less stressful when working is also because i can know that i didn’t break anything since the last code change that i made. The test is there to cover me. Well i still need to do sanity check for the UI/UX stuff but when the logic part is already covered, it already lifts up a lot of weight from my mind.

I still remember the moment where i need to test everything out manually from the front to the end to make sure i didn’t break anything everytime before i check the code in. It makes me feel anxious and exhausted at the same time, really uncomfortable.

Thanks to that, now i always keep in mind that writing test is not something that i should do because the company told me to do it but because i know it is the right thing to do to be a great iOS engineer. This can also apply to you if you want to be a great software engineer.

Constant growth

Ever since i worked in KMK, i feel like i have learnt and grown so much compared to the first when i came here. You just can’t stop growing and learning here when they keep on pouring all those knowledge into you everyday, hahaha.

But I am really happy and feel blessed to be able to work in a team of so many high skilled, hunger for knowledge and supportive people. Well, you know they said that if you want to become clever, you need to surround yourself with clever people too so you can be influenced by their habits. That’s what i am currently doing now and i think it kinda works (of course i try to keep up with them myself).

In KMK, i learned how to actually become a great iOS Engineer. I would say the time when i still know nothing about testing and have no idea how to actually write clean code is the time when i was still a complete amateur who just jump into iOS programming, well i did just start my career in Batam for 2 years though.

Because of the XP practices such as pair programming, TDD, and clean code, i am able to produce some high quality code now. Indeed i am still in progress towards becoming a great iOS Engineer but at least i already improved some of my skills and still trying to keep up with my teammates here.

Improved communication skill

I used to be a more passive person cause that was my nature and my comfort zone. I also feel like i was unable to convey my thoughts properly to people most of the time whether it’s towards technical or non technical people and i think my documentation skill was below average too.

I do agree that communication skill is one of the most important factor to have a good collaboration either in our internal team or across teams. It also contributes to the success of the team and the product we produce. Which is why i choose to move out of my comfort zone and try to improve my communication skill here in KMK.

Since i joined KMK, my communication skill is being tested everyday for most of the time in many opportunities. Let’s just take one example about it which is by doing pair programming. If i am not able to convey my thoughts or concerns when pairing, then the pairing will definitely not working.

Because pairing demands two way feedback means there are supposed to be some active and reactive exchange of words happening in there. If we are unable to understand each other, it will have a bad impact on the code that is written and the pairs because we don’t have the same goal in our mind. It might be better to work solo than pairing if that keeps on happening for a long time without any improvement happens.

I do admit at first when i was still trying to learn about the new codebase, frameworks and the culture, it’s really hard for me to convey my thoughts at all because i have no idea how the code even works because of the lack of knowledge. I ain’t gonna give some opinion that i have no idea how it will fit into the code because i was not even sure how the existing code works. So i was all blank that time.

But thanks to the support of my pair partners and my mentors who are really patient to teach and guide me to the right path and the awesome team who are really supportive to help me grow, i am finally able to fit into the team now. Now i am able to convey my thoughts more properly when communicating in internal teams and across teams even though sometimes i still messed up. I also learned and still improving on how to do a more proper documentation and how to use better wording choice when talking to technical and non technical people.

Closing Thought

All these changes that happen to me are reflected by XP values which are simplicity, communication, feedback, courage, and respect. To be able to find a team who shares the same value and be disciplined about it, is not that easy for sure. I would say for me to be able to grab this chance, it needs the combination of luck, fate, and courage. I think this is one of the best choices i have ever made in my life, giving myself chance to experience all of this because i don’t think i can find it anywhere else in this country.

There are actually a lot more stuffs that i want to talk about XP that gives many positive impact in my career life but i decided to just stop at here so i won’t make the post longer than this and potentially lose your interest to read this post. Maybe i will talk about it again in another blog post.

And last but not the least, i want to say thank you for each of you who spend your precious time to read this post.

Wish you have a nice day ahead ! Stay healthy and stay awesome, ya ! 😎