Running a Successful iOS Consulting Company: A Top App Dev Interview
Kyle Richter started his career in Mac programming when OS 8 was launched. Additionally, he has been running an iOS application development company since 2004, which is now thriving. To date, Kyle Richter has been involved in the release of more than 750 iOS applications, including over a dozen featured apps that have been mentioned multiple times at Apple's Worldwide Developers Conference (WWDC). How to run an iOS app consulting company? How to expand your business? How to develop excellent applications? Kyle shares his experience here.
Question: Please introduce yourself and your company.
Kyle Richter: I founded my software consulting company, Dragon Forged Software, in 2004. In 2012, we merged with Marcus Zarra's company to form Empirical Development. Today, our company has more than 20 full-time software developers. I am still active in independent development, having published several books on iOS software development and given speeches at various global software development and business conferences. I currently live on a small island near Key West, Florida. Since my work is not location-bound, I chose the most comfortable place to work.
Image: Kyle Richter, Co-founder of Empirical Development
Question: What were you doing before entering the consulting field? What preparations did you make for starting a business?
Kyle Richter: Before this, I served in the U.S. Army as a paratrooper. In 2003, I was injured and began a long recovery process after leaving the military. When I was a child, my family had a MAC SE computer and a C64 machine, and I loved tinkering with code using BASIC language. After leaving the military, I felt it was time to revisit my childhood dreams. I read relevant books and began to catch up on professional knowledge. More importantly, I wrote a lot of software and spent a lot of time understanding what I could do with these frameworks. Gradually, my developed applications became better and better, and the steady stream of positive user reviews finally convinced me to embark on the path of software development.
Question: How did you attract customers in the early stages of your business?
Kyle Richter: My first batch of customers came through personal connections. At the time, a relative introduced me to a project to develop a backend management system for a local high school. Initially, I had no idea how much I should charge for a job, thinking that as a small programmer, the income from one project wouldn't be much. As I did more projects and gained more confidence, I started taking on larger projects and increased my rates. I gradually realized that satisfying a customer is more direct than any marketing strategy; today, the majority of our business comes from referrals from satisfied customers.
Question: Do you prefer fixed-bid projects or hourly projects? Why?
Kyle Richter: If I had to choose, I would go with hourly projects. When working by the hour, you don't have to worry about exceeding your estimated time, allowing you to freely explore different solutions. For example, if you accept a task with a 20-hour limit, but it actually takes 100 hours to complete properly, you might cut corners. With hourly projects, after completing a task, the client can easily ask you to add a feature or redesign the program. It’s much simpler.
Fixed-bid projects are more uncertain. Since they involve a one-time negotiation, we often have to estimate prices for projects we've never done before, sometimes overestimating and sometimes underestimating. However, for hourly projects, as long as everything can be settled in the end, it works out. However, clients generally prefer fixed-bid projects. They often have to adhere to a budget set by their superiors and want to have a rough idea of the project's progress beforehand.
Image: The development history of Empirical Development is like a textbook for entrepreneurship.
Question: As a contractor, tell us about the most difficult client you’ve encountered.
Kyle Richter: I don’t believe in "bad clients." Issues in a client-developer relationship are often the responsibility of both parties. Over the years, I've become better at predicting project challenges and tend to be upfront with clients, telling them what will be difficult and what won't.
The challenging clients we encounter fall into a few categories:
Over the years, a few clients have delayed payments or nitpicked our invoices. Some small startups lack understanding of the software development process, so you must explain concepts like system vulnerabilities, timeline adjustments, and user issues right from the start, otherwise, you'll face many difficulties. Some clients fail to realize that all software has limitations, believing that developers are omnipotent and不受natural laws. There's nothing you can do about such clients.
I've found that being honest with clients from the beginning and setting realistic goals leads to smoother operations. Never exaggerate your capabilities because it may lead to client disappointment later on.
Question: When did you realize it was time to start hiring people? How did you hire your first employee?
Kyle Richter: Before formally hiring people, I had already worked with some freelancers for quite a while. At the time, I most needed help with graphic design. I wanted to handle graphic design myself, but I couldn't even draw stick figures. I posted some job ads online, conducted interviews locally, and eventually met some designers. I appreciated some of them, and some have continued to collaborate with me to this day.
Hiring for the first time felt natural and timely because the workload at the time required two people to share it. The initial phase after hiring was like a hurdle; the company's expenses doubled immediately. Since the company wasn't yet mature, if you start hiring too early, you need to prepare at least six months' salary for your employees. Many development companies hire prematurely, leading to financial strain and stress.
In recent years, I've become more adept at recruiting. My first few hires were met at job fairs or CocoaHeads local meetups. I usually listen to their introductions about their recent work, and after a few drinks, I can further understand them. If this person seems smarter than me (never hire someone less intelligent than you!), and they're easygoing, I sign them on for a short contract. If they perform well, I offer them a full-time position.
Our company now uses a recruitment method called the Dragon's Test, a complex but highly efficient interview screening procedure designed by us.
Image: The Dragon's Test recruitment process is very unique.
This recruitment process is divided into four parts. Empirical Development places great emphasis on recruitment, and each subsequent interview becomes more challenging than the previous one.
The Dragon's Test also checks the applicant's actual programming ability, with programming tests throughout the entire process. The Dragon's Test itself is an iOS application with five tabs, each part of the code is incomplete. During the exam, we send the source code to the applicant and start timing. The applicant must fix the program according to the provided bug list, with the challenge being that some bugs are not listed.
This test is also the standard for daily work among Empirical Development employees. After the applicant completes the test, we record the completion time and have our senior engineers "grade" them. In ten years, no one has ever provided a perfect solution.
Question: How did you manage administrative tasks (such as legal matters, accounting, payroll, etc.) when the company was just starting out?
Kyle Richter: Unless you have venture capital or a trust fund backing you, it's hard to hire someone to handle all administrative tasks in the early stages of starting a company. I took care of all administrative work from the start. Actually, I still manage some of these things now, like payroll distribution.
Legal matters are tricky unless you're a lawyer; no one wants to deal with legal issues in the business world. At first, I wrote the terms of the contracts myself, lacking professionalism, resulting in losing several lawsuits and paying a lot of money. But hiring a lawyer is expensive, and it's hard to determine when to hire them. It wasn't until the company reached a certain stage that I realized it was time to hire a proxy lawyer to handle various legal affairs for the company, such as using LegalZoom services to support confidentiality agreements, etc.
Question: Does your company also develop its own applications?
Kyle Richter: Initially, we only had the business of developing applications, then expanded into consulting services. Empirical Development has a product platform called Dragon Forged Software, which recommends development tools to developers, such as Resolve and Slender, which can be downloaded on the App Store.
We have also developed some games and a few well-known EOL products, such as Transactions and Handshake, and a data recovery application. We strive to be self-sufficient, creating our own daily development tools.
We appear wherever there is a need in the mobile market. In fact, once there is a need, we develop software ourselves. Our company also has a whole suite of internal products that have not been made public, used for drafting tender documents and evaluating employee performance.
Our employees mainly come from Canada and the United States, all working remotely. After years of exploration, we are now far more efficient than teams working in fixed locations. We use many communication tools, and here are a few tools you can look into:
For one-on-one communication, we use Adium/iChat/Messages and sometimes emails. For team communication, we use Campfire, and the auxiliary tool MAC OS X Propane was written by Trevor Squires of our company. We use Freshbook to manage time, budgets, salaries, and invoices. For managing work progress, we use LighthouseApp, and its auxiliary tool ResolveApp is also one of our company's products. We also frequently use Facetime and Google Hangouts because sometimes face-to-face conversations are more effective. Another point, to foster harmonious employee relationships, we created an internal wiki for the company and organize weekly deathmatch games of Team Fortress 2 for all employees.
Image: The self-sufficient office software Dragon Forged Sofware
I have worked in various sizes of offices, and the current work model makes employees feel closer to each other. If I were to start again, I would still choose the remote work model.
Question: Where do you think your company's success lies in the applications you've developed?
Kyle Richter: I think it lies in the attention to detail; there are no shortcuts to success. Writing a program is simple, but writing a fast-reacting, efficient, low-memory, and aesthetically pleasing program is not easy. Without fully engaging with the program you're working on, it's impossible to stand out. Developers should constantly ask themselves: Can I do better? Are there other ways? Is this the best way? I often tell my employees: "This isn't good enough." This isn't intended to be harsh; it's a way to motivate oneself, demanding strictness from oneself and others.
For many developers, writing code as expected means the task is complete, but for us, it's just the beginning. A developer who is confident in their product will never casually copy-paste code from Google searches or blindly use random database entries without understanding. The software you write reflects your actions; how do you want others to see you?
Question: Any advice for those preparing to start a consulting company?
Kyle Richter: Make friends widely; networking is crucial to the success or failure of a company. Attend various meetings and CocoaHeads activities, actively participate in forums and news comments. When you hit a bottleneck, a friendly social circle can be a great help, helping you find bugs, recommending helpers, and introducing clients. Over the past decade, many times friends have helped us get through tough situations. I advise everyone to be outgoing, treat everyone kindly, especially those who seem ordinary at first glance, as they often become one of the helpers in your career success.