We’re always excited to learn how our customers are using the power of .NET to build amazing mobile apps to simplify traditional industry practices, improve internal employee satisfaction, and increase customer loyalty. For example, Xamarin customer Taxfyle’s mobile-only business is poised to disrupt traditional tax and Certified Public Accountant (CPA) firms, giving consumers and tax professionals the flexibility and on-demand service they’re used to with consumer lifestyle apps.
At tax time, users answer a few basic questions, submit tax document photos from their phone, get matched with a CPA within two minutes, and receive completed returns for e-signature in less than 24 hours. Today, Will Sahatdjian, Taxfyle co-founder and CTO, joins us to share how his team created a secure, intuitive mobile experience that makes filing tax returns easier than ever.
Tell us a little bit about your company and role—have you always been a developer?
Taxfyle is the easiest way to get a licensed CPA to file your taxes. We connect individuals and businesses to professionals in minutes, and we’re fiercely committed to providing the highest level of customer care and service to both our users and our CPAs. Customers answer a few simple questions, get an instant quote, and communicate securely with a dedicated Taxfyle professional. Our CPAs enjoy the flexibility of working on their own schedule, which helps us deliver a standard of customer service and attention to detail not found in other tax filing services.
I’m one of Taxfyle’s co-founders, currently serve as CTO, and have been developing software full-time for almost 13 years. I started as a graphic designer, but began learning Classic ASP, ASP.NET, and C# shortly thereafter. I’ve designed, built, and maintained several medium-to-large scale enterprise systems and learned a great deal from the blood, sweat, and tears incurred (or avoided) of various design and architecture choices. As a designer and a full-stack developer, I’ve become a “jack of all trades,” so I’ve been actively involved with all aspects of Taxfyle’s engineering and design. The lessons I’ve learned between the whiteboard and the trenches—the highs and lows—helped define our culture and priorities, namely a strong belief in autonomy, agility, and the reliability and efficiency advantages of well-engineered tooling and architecture.
Tell us about your app. What prompted you to build it?
While sitting in the back of an Uber, one of our founders, Richard Lavina, thought to himself, “Why can’t filing a tax return be as easy an Uber ride?” As time passed, we realized that our app needed to be so much more than just a way to file your taxes; it needed to be an integral tool for anyone that had tax questions. We needed to allow our users to access expert help around the clock, including ways to save significant money. Our goal is to deliver the truly delightful user experience essential to any consumer-focused startup, and we’ve continued to refine and iterate.
With the rise of the “gig economy,” more Americans are considered self-employed and in a complicated tax position. Taxfyle offers a solution; regardless of tax complexity or income level, you always have a licensed expert on demand to file your taxes at below market rates.
We’re mobile-first, so we eliminate typical filing experience frustrations, such as having to travel to a retail location, haphazardly email or print documents, and wait for a consultation. Our customers get free in‐app CPA chat consultations and real-time answers to tricky tax questions. It’s easier, more secure, and usually less costly do‐it‐yourself tax filing apps or selecting a tax-prep chain. We’re proud to take away the burden of dealing with taxes, and we look forward to providing a stress-free tax season for anyone and everyone.
Why did you choose Xamarin? What alternatives did you consider?
We had a tough decision to make: train our team on C# and Xamarin and rewrite our app from scratch, or deal with further unpredictability and potential delays. We tested the waters to gauge buy-in and learning curve. Almost immediately, the team saw the benefits of Xamarin Studio and static typing, such as IntelliSense, robust compile-time analysis, and a predictable debugger. Our UI contains custom animations and transitions, and we saved a lot of time that we would’ve spent on performance optimization fixes in our original app’s codebase.
We used Xamarin Studio to write Taxfyle 2.0 (available on Android and iOS) from the ground up in less than five months, including the time it took to learn C#, .NET, and Xamarin Studio as well as several UI/UX iterations! It’s safe to say that we’ll continue to be a Xamarin shop going forward. Even with the progress toward modernization in the Apple ecosystem, such as Swift, Xamarin has many advantages, especially for code sharing across platforms.
What do you think about when you hear “native app”? How did Xamarin help you accomplish your definition of “native”?
The first thing that comes to mind is user experience, or an app that uses standard platform interface paradigms. We chose Xamarin so we can build custom UI for each platform, while still sharing a common codebase for our business logic. When compared to a Hybrid solution, some see this as a burden, extra code and extra work, but our philosophy is that we want to create a beautiful design that’s invisible to users. We use native interface tools, creating a UI that users are familiar with, so they can focus on the task at hand.
How did you get up to speed?
I’ve shipped several Xamarin apps, so I accelerated my team’s learning process via code reviews and side-by-side coding sessions. That said, Xamarin University did most of the training.
If you’ve developed Android and iOS apps with Java or Objective-C/Swift, using the Xamarin APIs is easy. There are a few intricacies, as expected with any language change, but nothing a quick glance at the documentation doesn’t solve.
How much code were you able to share across platforms?
Most of our user interface code is unique, because we’ve designed our app to focus on user experience, but we abstract and reuse business logic, resulting in over 70% shared code across platforms. Our API calls, non-Framework-specific code, essentially everything non-UI related, is shared.
Without Xamarin, we would have to write and test our business logic in two places and continuously jump between two codebases in different languages. Every developer knows that even updating small API changes in two places immediately increases the margin for error.
How are you testing your apps? Why?
Reputation is everything. I knew that any instability could shake confidence in our product, and we needed to establish trust, especially since we’re dealing with sensitive information. Xamarin (and C#) are rock solid, and I believe we’ve found the best mobile development option available for delivering mission-critical apps.
Without Xamarin Test Cloud’s device coverage, it’s almost impossible to keep up with all of the operating system and screen resolution configurations. We use NUnit for our unit tests and, since automated device testing with Xamarin Test Cloud just works, we got up and running quickly. For example, we’ve caught many embarrassing bugs that only occurred on a specific iOS version or screen size, before they made it to our users’ hands.
Automated testing’s biggest benefit, though, is that it frees up time for the rest of the team. Before, our whole team would vigorously—and manually—make sure all the buttons worked, etc. Now, Xamarin Test Cloud validates this for us.
How has HockeyApp helped you understand what’s happening in the wild with live users?
Nothing is worse for user experience an app crash. HockeyApp makes it easy to track critical crashes and fix them quickly. We integrate HockeyApp with GitHub, so any new crashes immediately create a new issue and alert our developers.
What have your users said about your app?
Our users love us! We currently have a 5-star rating in the App Store and a 4.5 on Google Play.
How are you incorporating user feedback into future releases?
Each app screen allows users to start an Intercom chat with our customer success team, whether they’re having an issue or want to provide feedback.
What’s your team planning to build next?
We have a few projects in the works, but I’m most looking forward to launching a conversational interface.
What advice do you have for developers who are just starting out or investigating mobile development?
First, take the time to create a proper domain model from your backend, or wrap external models, if they’re not suited to UI development. Many newcomers make the mistake of fighting with a suboptimal schema all over their apps.