git switch -c new-endeavors -f infosys
a farewell note to my infosys colleagues

git switch -c new-endeavors -f infosys ๐
After eight years at Infosys, I had to write a farewell note. The ones I have read โ and the ones I have written before โ usually feel like form letters with the names changed. I wanted this one to actually sound like me.
So I wrote it the only way I know how: as a sequence of git commands.
If you have ever used git, you already know how to read this. If you have not โ every line is a real git command, and the words after the # are the human translation. The story is the same either way.
I also built a small standalone web app of the whole thing, so it reads more like a live terminal than a static page:
Open whichever feels right โ the post below has more breathing room, the web app has the blinking cat.
INIT : How it began ๐ฑ
$ git init # Joined at 2018 โ new company, new team, huge expectations. ๐ฑ
$ git config --global user.name "Ganesan Karuppaiya"
$ git config --global user.email "ganesan.karuppaiya@รญรฑfโแนกรฟแนก.com"
$ git config --global init.defaultBranch learning-and-grow # the only branch I ever wanted to live on. ๐
$ git config --global core.empathy true # learned and set globally. ๐ค
$ git config --global core.kindness true # same. and never going to --unset. ๐
$ git config --list # turns out, the values you gave me will stay configured for life. ๐STATUS : How it went... โค๏ธ
$ git status # On branch learning. Clean working tree. Heart: full. โค๏ธ
$ git add . # Staged every lesson, every laugh, every funny moment. ๐
$ git add -p # Some moments picked carefully, bit by bit โ they were so special. โจ
$ git diff # The me who walked in vs. Me standing here today โ massive diff. ๐
$ git diff HEAD # Even compared to yesterday, time changed me. ๐
$ git diff --cached THANKS.md # Reviewing what I am about to say, one last time. ๐ฅฒEXIT : How it ended ... ๐
$ git commit -m "feat: joined with huge expectations, gained a lifetime of growth" ๐ฑ
$ git commit -am "learn: tech, people, patience, kindness โ all merged into me" ๐ค
$ git commit --amend -m "fix: not just an infocision, thanks to you all" ๐
$ git log --stat # Look at all the files of my life this place touched. ๐
$ git log -p THANKS.md # Every line here was written by some trust and some space. ๐
$ git show HEAD # The latest version of me โ built on top of all of you. ๐ช
$ git log --oneline --decorate --graph # A graph of memories, branching, merging, never linear, always beautiful. ๐ณโจWHILE LEAVING : What I carry with me ... ๐
$ ls -la # The artifacts of this chapter โ files written with intent. ๐
README.md # who I am โ co-authored by every one of you ๐
CONTRIBUTING.md # the unwritten code: kindness, ownership, candor ๐ค
CHANGELOG.md # versions of me, one release per learning ๐
THANKS.md # the longest file in this repo โ still not long enough ๐
LICENSE.md # the permission you all gave me to grow without judgment ๐CROSSROADS : Stay In Infosys vs Bigger Dreams ๐ค๏ธ
$ git branch # Being honest, I wished to keep this branch checked out forever. ๐ฅบ
$ git switch -c stay-in-infy # I would have happily kept committing here for years to come. ๐
$ git checkout stay-in-infy # But the situation around me is no longer the same. ๐ฅบ
$ git merge bigger-dreams # And there are bigger dreams quietly asking to be merged in. ๐
$ git branch -d stay-in-infy # So, with respect and a grateful heart, I am closing this branch. ๐ALSO : While leaving โ
$ git stash push -m "wip: unfinished projects, inside jokes, coffee chats โ"
$ git stash list # All safely parked in my heart. ๐
$ git stash pop # Will be replayed every time I think of you. ๐ญLETTING GO : With heavy heart ... ๐๏ธ
$ git restore THANKS.md # I cannot undo the goodbye, butโฆ
$ git restore --staged regrets.md # I unstage every regret โ only gratitude remains. ๐
$ git reset --soft HEAD~1 # I undo nothing of what we built โ I keep all the changes with me. ๐
$ git reset --hard bitterness # error: pathspec 'bitterness' did not match anything. Good. There is none. ๐
$ git revert <any-hard-day> # The tough days? Reverted by the kindness you all showed. ๐คALSO : What I leave behind ... ๐
$ cat .gitignore # Things this repo was never going to track.
bitterness
regrets/
gossip.log
*.drama
node_modules/ # we depended on each other, not on libraries ๐คHANDOVER - Logging out and moving on ๐
$ git rev-parse --abbrev-ref HEAD # infy-tech-lead
$ git checkout -b new-endeavors # Switched to a new branch 'new-endeavors'. ๐
$ git push origin --delete infy-tech-lead # Letting this role go โ gently, gratefully. ๐
$ git rm ganesan.karuppaiya@รญรฑfโแนกรฟแนก.com # Removing my login from these halls โ but never from this story. ๐ชช
$ git mv infosys new-endeavors # Moving my path to the next chapter, carrying the lessons along. ๐โจ
$ git tag -a v1.0-farewell -m "Final farewell note โ with love" ๐
$ git push origin v1.0-farewell # Tagging this chapter so I never lose its commit hash in memory. ๐ท๏ธI WISH : To keep in touch ๐ค
$ git remote add friends `https://ganesankar.github.io`
$ git remote -v
friends https://ganesankar.github.io (fetch)
friends https://ganesankar.github.io (push)
$ git fetch friends # I will check on you. Often. ๐๐
$ git pull --rebase friends main # And if life lets me, may rebase my path to cross yours again. ๐ค๏ธ
$ git blame me # To point who shaped me, `git blame` points straight to all of you. ๐
$ git clone <this-culture> to-my-next-team # Maybe taking a clone of this culture wherever I go next. ๐COMMAND NOT EXIST: See you around ๐
$ git help goodbye
'goodbye' is not a git command. See 'git --help'.
# Maybe that is the point โ this is not really a goodbye. ๐HIGHLIGHTS : What I rewind now ...
$ git log --oneline --decorate --graph --author="[ganesan.karuppaiya]"
* (HEAD -> new-endeavors, tag: v1.0-farewell) Farewell, with gratitude ๐ธ
* `release(production)`: many launches, calm midnights โ predictability earned, not gifted ๐ฆ
* `experiment(playground)`: POCs, hackathons, side quests โ never stopped tinkering ๐งช
* `style(craft)`: code reviews, design systems, accessibility โ quality as a default ๐จ
* `hotfix(production)`: showed up for the fires, not just mine โ calm hands, clear heads ๐ฅ
* `docs(awards)`: continuously recognized and appreciated for the work โ forever humbled ๐
* `chore(interviews)`: brought new talent into the family โ every "yes" felt like a win ๐งโ๐ป
* `merge(friendships)`: the colleagues who became family โ quietly, completely, they built me ๐ค
* `ops(rfp)`: led RFPs across multiple pursuits โ won some, learned from all ๐
* `refactor(full-stack)`: UI โ API โ Infra โ Data โ given the room to learn every layer ๐
* `feat(homecoming)` ๐ฎ๐ณ: returned home โ an unavoidable situation called me back ๐
* `feat(usa)` ๐บ๐ธ: on-site at Beaverton, Nike World Headquarters โ privileged to work alongside great people โจ
* `feat(canada)` ๐จ๐ฆ: based out of Vancouver โ explored a beautiful country and learned a beautiful culture ๐
* `feat(nike)`: shipped multiple B2B applications for Nike โ from concept to scale ๐
* `feat(ajio)`: on-site in Bangalore โ built a retail B2B application for AJIO from the ground up ๐๏ธ
* `learn`: people > process, kindness > KPIs ๐
* `feat(joined)`: as a Tech Lead โ huge expectations, hungrier mind ๐ฑ
* `Initial Commit`: a stranger walked in ๐ATLAST : Hoping for the best ...
$ git status
On branch new-endeavors # Nothing to commit yet, but everything to remember. ๐ซOUTRO : The story under the commands
The git commands are a costume. The story underneath is plain.
I joined a infosys almost a decade ago. I am leaving it now. In between, I shipped some things, learned more, and met a small set of people who became the actual reason I kept turning up. That is the part the commands cannot capture.
To everyone who taught me, paired with me, escalated my bugs and forgave my mistakes โ thank you for the eight years.
That is the only commit I will not be reverting.