Statement of Purpose - '25
This was the draft version of my SOP at Frappe for the upcoming financial year. It's rambley, unstructured, and probably has a dozen grammatical errors - but i felt I'd publish it for future reference. I'm starting my first financial year as an employee, aww.
I joined Frappe as a full-time employee in late November of 2024, and had interned for four months earlier in the year.
The Past ~4 Months
You can read about the work I did in my internship. In short, I shifted between a couple projects — first working on improving Desk’s mobile experience, and then building Apex Search — meant to be a general search app for Frappe, ultimately wasn’t implemented — and finally working on improving Frappe Gantt.
Frappe Gantt
When I joined full-time, I continued with Gantt. At a broad level, I was working towards v1 — an aesthetic, relatively bug-free, product with a good website and documentation.
- Improving codebase quality
- In a trend that would continue with Drive, I cut down a lot on codebase size — something I enjoy for no good reason, art for art’s sake.
- Custom view modes — instead of restricting it to our own ones
- Ignoring specific regions like weekends from progress calculation
- Holiday declaring
- Infinite scrolling
- Wrote documentation
- Improved UI
- A landing page/demo — one that is very unimpressive for the amount of time I put into it.
- Published v1 (with blog post, docs)
Frappe Drive
Drive and Mail were the projects that first captivated me back in ‘22. So when I joined and learned that Drive was vacant + choose your own work, I was thrilled!
I started work three months ago. These were a couple of my broad goals:
- We wanted to implement SMTB, to pave the way for Drive to become a public product. I targeted Build for a public release, which I felt was an unnecessarily large amount of time (read: Hofstadter's Law).
- More precisely, we wanted to enable teams. Files belong to teams. People belong to teams. People can be in multiple teams if they like.
- S3 was another high priority issue that I hoped to complete.
- General UI/UX publishing + bug fixes
- Feeling very fast and slick
Phase 1: Internal Launch
All of the above goals were achieved:
- I first worked on the “pseudo-performance”, and really enjoyed it. The meat of it was so disappointingly simple that I have no idea why it wasn’t done before: just add a cache to the frappe-ui resource. However, I would later go on to add optimistic UIs, and mutate the cache with actions — thus making the app seem less flaky.
- Teams has been implemented completely. Single users have a “team” called Your Drive, but they can’t access team-related features in it.
- I also added a “My Space” feature here, that later became the default “Home” — with Team being a separate view now.
- Database: I remodelled the data in Drive. In this, efficiency was improved — 70% of storage was reduced on core doctypes (far less impressive than it sounds, it was mostly redundant fields).
- The teams remodel broke almost everything — which turned out to be kind of good, as I swept through the codebase; rewriting most of it with better code and UX. Apart from just improving things (like storage breakdown, user list), I now have a good grasp of the codebase.
I then pushed teams internally. I spent close to a week preparing for it, but… let’s just say my first deployment was a very memorable one.
Phase 2: Public Launch
March began. I had a month left to Frappe Build, and I was pumped — “release this week!”, I kept saying.
I tried implementing a Google import, but Google makes it infamously hard. So we decided that it was relatively low priority, and I worked on a signup and invite flow, and more polishing:
- Two types of users in a team — normal and managers.
- Managers can invite others to a team.
- Users who sign up from an invitation get added there.
- A custom sign up/login process with OTP and OAuth.
- Teams can now be related to a “domain”.
- When a user signs up directly on Drive…
- Users on personal email accounts (Gmail, Frappe Mail, iCloud) sign up on a personal account
- If the user is on a corporate account…
- The first user gets to create a team on that domain if they want
- All following users have the option to join that team, or create a personal team.
- This has flaws — for example, when we want multiple teams on a domain.
- Users can see a dashboard of their current teams and invites.
- They can also request an invite.
It wasn’t without hassles, and it turned out to be too hectic for my comfort — but overall, the launch went well! We have 54 new users as of now (10 days since). A couple join every day. I have emailed some of them and am getting feedback. There is a lot of work to be done — but people are happy that Drive is under very active development.
The core of my time over these months seemed to be spent not on features — which are fun and barely take any time — but fixing bugs I’ve created and polishing UX:
- Recurring issues came in Writer (something I haven’t worked on yet), routing, breadcrumbs
- I tweaked dialogs quite a bit — the Move and Share dialogs, especially, have been improved.
- The list view — I moved over to frappe-ui’s and kept adding some of my own custom improvements, but there are still things to be done in terms of flakiness and actions.
- Permissions/access — I have revisited many times, and I will be redoing it yet again soon. This is a deceptively simple area.
- In general, minor tweaks and improvements that I quickly forget about take about 20% of my time on a given day, I’d say.
- The stated goal of the past three months was polishing, but it somehow kept turning to features all the time. Right now (or at least two weeks ago), Drive seems even more unreliable than it was when I took it over, which is against the intended direction.
- I also implemented S3 in the past week. We want to store our files on the public instance cheaply, and it’s one of the most commonly requested features.
The Next Year
The plan is to continue to work on Drive. Even though I said that I want to switch away from adrenaline-based motivation, adrenaline remains high, three months in. One big reason is that I’m talking with customers and real users almost every day, which feels very good (even when they’re raising bug reports).
Over the near year, what can I do in Drive from an engineering POV?
- Desktop apps/daemons. I don’t think it makes sense to invest time in full-fledged apps — but a sync of sorts is crucial. Cloud storage solutions have no meaning to me if I have to upload and download manually all the time.
- This is a huge project and an entirely different tangent, and I fully intend to take it very slowly.
- General polishing — the #1 goal is to make Drive feel like a complete product; not a flaky thing I wouldn’t trust myself.
- Privacy and security — if we have any idea of making this a product worthy of money (and I do), we need to seriously work on this area. Encryption might be a far fetch — though it’s not out of the picture — but rigorous external testing/certification and security fixes should be done.
Things that must be done but require relatively less effort:
- Integration into ERPNext — high priority, before the next ERPNext release.
- Multi-language support.
- Adding preferences (improving customizability).
Specific Goals
Quarter 1: by June end, I will complete S3 and move the product more towards a “proper” public launch (at Frappeverse, maybe?). The three minor things mentioned above will be done. I hope to get a functional macOS sync too.
Quarter 2: Frappe Writer.
Quarter 3: (largely random, depends on how the previous two quarters go) improve security, maybe implement encryption, widen the net of native clients, UI redesign.
Quarter 4: lean more into marketing? At a high level, shift away from development to product promotion.
Launches
We plan to stage multiple, staggered, launches of Drive before releasing v1 on Frappeverse. This will help in getting feedback.
We did the first public launch of drive.frappe.io in Frappe Build — but it had almost no marketing, it was merely for getting on a few external users. I’m hoping for another launch around June or July — a proper beta launch, with a completely usable product; perhaps with desktop integrations too.
On Writer
For all practical purposes, Writer is a completely separate app, and one that needs a lot of polishing. There is a good deal of interesting work to be done, and given that it’s quite high priority (multiple people within the team use it), I plan to take it up.
It’s a very frontend and UX intensive project — areas I fear, hence my reluctance to go that direction for a while. But somehow SOP season has made me excited to work on this — it has more visible impact than Drive.
When, however, is unclear. I don’t want to leave Drive hanging, so when it “feels” right to move. I assume within Quarter 1, but in the worst case, July.
For Drive as a Product
- We’ve launched Drive publicly — Frappe’s first end-user facing app. It’s an entirely new market, and many people rightly feel that it’s unlikely to succeed — in India at least.
I don’t disagree — I cannot see Indian consumers paying for a cloud storage solution easily, but it’s worth a shot.- It is free now as we have barely any users. We will design and add payment plans soon.
- FC customers who want to self-host Drive are actually a lot. I talk every week with a person who has almost 50 sites on Drive and is migrating to FC. In Build, many people — one who works for the Congo government — came up and told me that they really want Drive.
- This is partly because “one platform” — because they’re on ERPNext/CRM they just want to use Drive.
- For reasons I don’t understand, some people seem to genuinely think Drive is a better solution than conventional alternatives, and they’re excited to be using it and profusely thank me for my work.
- As is probably evident, these are not power users. Most power users, myself included, are nowhere near satisfied. While I like the features like teams, it’s far too flaky.
- The OSS enthusiasts are, of course, very happy and eager.
- While Drive is very far away from GDrive/Dropbox, IMO we’re better than all the open source solutions. More aesthetic, feature-rich.
In short, this time next year, I am reasonably (or so I think) confident Drive will be included in this list.
Ramblings
I try to focus more on processes than the output. So when I evaluate my work, I’m not evaluating just my work — I’m evaluating how I arrived at the work. The state of my processes is pretty terrible, though. Here are some problems:
- Productivity = efficiency (how much you get done in a good hour) * consistency (how often you have good hours).
I’m pleased with my efficiency — but my consistency is dismal. In a rough week’s work, 40% of it comes from a single day. I can get so much more done if I can improve my consistency.
This isn’t just about increasing output — it’s also about quality of life. I want the percentage of “good hours” to be as high as possible — because bad hours/days both ruin my energy and take away valuable time from other things I could be doing.
This is probably because of the education system, which I fared quite well in. Winners in the education system maximize their efficiency, thereby allowing them to spend as less time as possible to clear a bar, to hack away at exam results.
In the real world, though, there is no set bar to clear — it’s about raising it as high as possible, and also remaining in the game for a long time. - I rely on adrenaline for motivation. Which is great in many ways — I do what I want to do instead of what I’m expected to do, and I have very high levels of internal motivation so long as the project is interesting.
But this turns out to be really bad in the long term, because you have to be able to do boring things, like writing docs, and even interesting things become boring quickly. I’m trying to transition to a more sustainable form of motivation. All ideas are welcome. - Quality. I keep shipping sub-par experiences, and I’ve broken so many things in Drive.
I almost wouldn’t mind if it was technical inexpertise — but it’s not. When I see an issue, I almost always push the fix within minutes. Somehow, that makes it even more saddening — knowing something and still messing up is worse than not knowing it.
No real analysis here — just good old impatience. I’m trying to fix it, but I assume it will take a decent amount of time. That’s a broad goal of the upcoming year — I want to feel like my work is reliable, not cringe at giving a demo in fear that it won’t work. - I am currently pretty bad at UI/UX design — backend, code maintenance, bug fixing, and in general ✨ real engineering is what makes me excited.
- But… I appreciate and feel proud when I get something pretty, and ultimately UX is what matters to a user, so I’m trying hard to improve here (my brain: what would Faris say?).
- “Hackiness” — Faris’ feedback after my internship was to learn things more deeply, instead of just fixing the problem in front of me. I did remember and implement this in my first month with Gantt. It led to lower productivity, but also less bugs and more satisfaction/knowledge growth.
I completely let go of this advice in Drive — forgot about it, in all honesty. Drive feels like an ocean that keeps slamming me off my feet every time I regain my foothold. Thankfully, the big fish have been taken care of, so I (and you, as users of Drive) should gain some stability from now on. - Along a similar strand of thought, I’m often wondering if I’ve bitten off more than I can chew. I am constantly overwhelmed by the pure breadth of Drive + Writer, even though it as a product seemed so basic; before I opened up the codebase.
Things keep breakingI keep breaking things unintentionally. The fact that I’m in the spotlight, as my colleagues are immediately being impacted by my work, both positive and negative, causes me a good amount of heartache.
I jumped from projects like Gantt/apex-search/all my hobby stuff — projects that are both small and not actively used by a lot of people — to solely managing an entire app that was written by someone else and is used by the company every day.
Some days I feel I’ve jumped too high, and now flailing in the air.
These are just random thoughts, though, and not really a problem. Insecurity and confusion are signs that I’m doing the right thing, the difficult thing. The spotlight is a scary place to be, but it’s an excellent one for my growth.
It’s too early to definitively comment, but I think my metaprocesses — the processes to improve these processes — are decently functional. I can’t back it up with solid evidence, so perhaps this is just wishful thinking. We will know over the next year, though.
This is a gift. I’m literally living my dream life — away from the education system, working in a lawless company with fun and crazy people, building something real, learning tons every day, authoring fascinating stories into the book that is my life. I can (and often do) criticize both the company and myself endlessly: but my internal narratives are of joy and hope, of celebration.
And as clichéd as it is, I’m genuinely excited about the upcoming year. Nervous, slightly disappointed, and other things, yes, but nonetheless very excited. I have gambled a lot over the past few months, and this year will give me glimpses into how astute — or not — I was. It’s an adventure, and I don’t know how it will pan out. Based on my limited experience with life, it probably will not go to the destination I want — but I probably will be heading in the right direction. Let’s go.
For my long-term career - I have no idea.
I had never planned to enter tech for my career, in fact. I assumed it would kill the joy of coding, and besides, it isn’t really what I’d get up and do at 3 am. That would probably be philosophy or politics (the theory of it, not the practice), though I’m unsure as to how I could convert that to bread.
Anyway — all careers share the same goals. Some healthy (by my very subjective definitions), like internal meaning and excellence, and some less so, like fame, money. External recognition hugely matters to me, even though I rationally believe it’s unhealthy. I try to not police my emotions, though — so given the state of my mind right now, I think Frappe is a very good place to work towards my career goals.
I get a kick out of Drive, but is it something I truly believe in? No. Is it on-the edge? No. But then again, what is? Drive is the project I like the best out of the ones we have in Frappe, and it is certainly one I am independently excited about. But I don’t think there is any technical product I’m dying to build.
So I’ve been recognizing recently that working on something that floods you with emotion is a privilege, yet another lucky card. And like adrenaline, it’s not something to depend on, because it comes and goes with the wind.
At some point in my life, I think I will get to work on something that pulls me out of my bed in the morning. But until then, and after then, the pursuit of these “banal” goals — building something people derive value out of, seeing your users smile as they meet you — should suffice.
I don’t know if I’ll stay on tech, much less stay on Drive, over the long term. But at this point in my career, both in software and generally, the goal isn’t one specific project. It’s to develop the skills, processes, and attitudes that’ll help me carry out an agenda I care about - whenever I find it.
Compensation
redacted.