Does a Large Software Project Need a Software Architect?

I just answer this question on Quora. I am happy to hear any comments that you might have about my answer.

My background is that I was the Chief Architect of 4 different companies (as now a CTO for Rent), so my answer is colored by my experiences and my biases.

There are all sorts of “architects” out there. Enterprise architects, solutions architects, business architects, software architects, infrastructure architects, etc. Everyone fancies themselves as an architect.

So, what distinguishes an Architect from an ordinary Developer, and why would you need one.

I am going to make an assumption that you are in a large company since you mentioned a “large software project”. I am going to assume that there are teams of developers, project managers, business analysts, etc, and that the project is budgeted at several million dollars.

In large companies, one of the jobs of the Architect is to make sure that what your team is developing is following certain standards. You do not want to be using end-of-life software, you may not want to be using some open source software that is only being developed and maintained by a single person, you want to use software that is a “buy” on the company’s buy/sell/hold list, you want to be using software that passes certain performance criteria, etc.

Another job of the Architect is to make sure that your project is well thought out. Are you thinking about scalability? About different kinds of failover? About certain edge cases? Is your team following good coding practices? Is the software extensible, so that new features can be added easily? Is it easy for other systems in the company to integrate with your platform? Does your application follow a future vision that the business has?

The Architect should be familiar with frameworks and patterns and lessons-learned that other areas of the company have developed, and should be able to recommend their use to you.

Often times, the Architect is closely allied with (or in charge of) the Common Services Team of your organization, so the Architect should be able to recommend frameworks that this central team has developed for the organization.

If your project did not have a good Architect, who would do these jobs for you? The Project Manager? The Product Manager? Both no. The Dev Lead? Maybe they would do some of these tasks, but the Dev Lead will probably live inside the silo of your team and not reach across the whole organization.

I hope this answers your question. Good luck with your project.

A Typical Meeting with a Potential Client

Some of you may be wondering what an initial meeting with CTO-as-a-Service looks like. Here is a typical the first meeting with a potential client, which usually occurs over a cup of coffee.

The potential client was recommended to me by someone in our mutual network. This potential client turned out to be the Poster Child for a CTO-as-a-Service engagement. She is a recent business school graduate that had a great idea (which happens to be aligned with a social cause that I believe in) and had some friends-and-family funding. She is not technical at all. A recommendation was made that she use a low-cost offshore development shop, and unfortunately, this development shop ended up not delivering what they promised and what she wanted.

She has some interest from potential investors, but she needs help in setting things right, and she needs help in setting the technical direction of the product so that it will be flexible and scalable as her vision expands.

As we chatted, it became very apparent that she needs someone like me, but her budget does not allow hiring an experienced CTO full-time.

I told her that is all good. CTO-as-a-Service can work with a client a few hours a week or a few hours a month. You could think of CaaS as you would think of your lawyer or your accountant. I can have weekly check-in calls with an outsourced development team in order to make sure that they are on target. I can draw up the initial technical architecture. You can drag me along to meetings with investors and tech incubators to show them that you have experienced leadership sitting behind your startup.

This potential client is going for more funding in January, and I certainly hope that she chooses me to help her realize her vision.

Free Syncfusion UI Toolkit for Startups

This news is of special interest to startups that are looking to build the first version of their product.

I just found out that Syncfusion, a very well-known manufacturer of UI Toolkits, has just released a free Community Version of all of their tools. The Community version is free to all companies and individuals with less than $1 million USD in annual gross revenue and 5 or fewer developers.

I have used Syncfusion tools for years, starting in the mid-2000’s when I was consulting for Wachovia and building a CRM system for their investment bank. Syncfusion provided a lot of UI components that we would have had to spend a lot of time writing ourselves.

The Community Version has UI components for ASP.NET (MVC and Core), plain old Javascript, WPF, WinForms, UWP, and Xamarin. I am especially looking forward to using the Xamarin components for an app that I am building that is targetting iOS and Android.

Case Study – Helping a Legal Software Company

TL;DR

  • Two week engagment (I can do one day to several month gigs)
  • Brought in to evaluate the current state and recommend a future state
  • The output was a 15-page detailed report, complete with a list of refactorings for the code and architecture, and a product roadmap
  • Client is now seeking approval to rewrite the platform

At CTO As A Service (CaaS), I will do on-site consulting, remote consulting, or I will even travel to your site. For this particular client, I was fortunate to have someone who was located in my home territory of New York City. All I needed to do was to take the M20 bus uptown.

People often wonder where you get your first clients from. In this case, it was from a great recruiter whom I have worked with over the past few years. One of her clients was a Private Equity Firm who took a stake in a company that provides Litigation Financing. An interesting aspect about being a “CTO-for-Rent” and parachuting into different clients is that you end up in domains that you didn’t even know existed.

Litigation Financing is an interesting field, one that is growing very fast. The gist of Litigation Financing is that a company will provide financing to people who are injured in accidents while their lawsuits are active. Often times, these people do not have disability insurance, and because of these accidents, cannot work for a period of time. They need money to live on. A Litigation Financing company will give (not lend) money to these injured people, and when the case is won or settled out-of-court, the money is repaid with a certain added percentage on top. If the lawsuit is not won, then the Litigation Financing company loses money. This means that the underwriters have to use all of their years of experience to decide whether or not to finance somebody.

The Private Equity Firm needed someone to come in, examine the custom-written applications that the company used, and provide an assessment of the current state and the future state. The output of this engagement was a report that detailed all of the things that needed to be fixed in the current versions of the applications, a roadmap for the future state, and recommendations around the development team and development process.

The Litigation Financing company used a low-cost offshore development company to develop the software that managed the cases. One application was written in Visual Basic 6. The main suite was written in VB.NET. The development staff had a bunch of turnover, and the Litigation Finance company was not satisfied with the quality of work.

As an aside, one of the common scenarios where someone might engage my services is to come in and “fix” the work that is done by a low-cost offshored development company. Often times, startups will not have the money to engage high-quality in-house developers, and will farm the initial version of their application out to one of these offshore development shops. Then, when the startup gets some recognition and some investor money, and needs to develop the next stage of their product, they realize that they do not have a good base to work from. This is where I can help out.

I started off by interviewing all of the key stakeholders, and at the same time, dove into the subject of Litigation Finance. I asked very probing questions about the software, their experiences and pain-points with the apps, their interactions with the development company, and where they wanted the future state of the product to be. I also did some analysis of providers of Litigation Financing and Case Management software, and mapped some of the features that I saw into what my client could use in a future-state product.

I then sat down with the source code in order to get a complete understanding of the system. I took the VB.NET code, and using dotPeek from JetBrains, translated the code into C#, which made the code more readable to me. I examined every single module and wrote down a lot of notes about things in the code which could be improved.

Then, I sat down with the senior leadership of both the Private Equity company and the Litigation Finance company, and we had a number of conversations about the future state. There are a lot of technologies that could be incorporated into the product which would make it more powerful and would help my client make better decisions about which injured people to finance. 

At the end, I produced a 15-page report that detailed the fixes for the current state and the migration to the future state, including recommendations around building out an IT organization. I hope to return at a future date to help this client build out the new platform.