Need advice and opinions

This may be long winded but I would like other peoples opinions.

A little over a year ago an old client of mine wanted me to take on a project, I declined a couple times and then he said he would come over and show me the project.

After he showed me what he was doing, I said I would do it as long as I was part of it.
We signed an agreement and I got a small percentage of the company.

This has to do with a digital wallet but has a very creative and unique twist and has never been done this way.
This was slowly developed and my code had to work with an phone app that was being created in parallel.

The creation was a day by day process and along the way more and more features and functionalities were added.
My business partner eventually brought on a financial technical advisor and I showed him how my database was structured.
I had the main users table, a table for the users credit card tokens (users could have several cards on file), a table for all of the users transactions and a table to keep track of user created content.

Here is where it starts taking a turn, the financial advisor does not like the way the users data is broken down into lookup tables (one to many relationships, as in examples from Rudy’s book) and declares my database is creating a bottleneck (I asked him why he thought that, and he said it was just a feeling he had, no real reason.) and informs my business partner of this.

My business partner starts questioning my logic and I told him that this is how it is done. He then tells my that the advisor is an expert and he knows what he is talking about. (I still maintain that this can’t be accomplished with one table and that lookup tables are absolutely required.)
My code was written procedurally with if statements and functions. with a lot of commented out unused code, It was in development after all.

About a year into development my business partner was asked by a CEO, why are you using PHP?

Another developer was brought in and said I needed an MVC framework because what I had was not scaleable (Not sure what he meant by not scaleable).

The other developer is an ASP developer and they decided that the code that I created be ported over to ASP using MVC.

This is after I created all of the functionality and was basically ready for prime time.

Now for the conclusion.
By business partner and I had a discussion and he tells me that two experts have told him that my code would have resulted in failure, one said I should not use look up tables and the other said what I created was not scalable because it was not MVC.

He then told me that the new developer was able to provide the app. developer with complete documentation based on my year of making all of this work, something that I was never able to do.

I currently have a server that gets tens of thousand hits per hour, nothing but small data strings and is very similar to what I created for the iphone app and the server has no load.

He now wants me to voluntarily relinquish half of my ownership of the company.

He has a demo based on my code and he said it worked flawlessly so he thought what I made was OK.
I stand by “its fine” for tens of thousands of users and any web app that gets to a million users has the resources to revamp and fine tune the code.

He did get what he wanted however he is not using my code and it created a long delay in the launch.

I ask for your opinion as to whether you would relinquish half of your ownership in this situation?
What would you do?

Nobody can decide for you BUT

If the expert is so stupid to port a whole software to ASP only because he wants to use MVC… then you’re an expert too…

Do they know what they’re talking about? Just because they know that MVC exists, doesn’t mean that they know.

MVC has its advantages but it is just a way of working, really. You can do it in ASP… and in PHP… and in any programming language, really. Because it is just separating each concept (model, view, controller) in a different layer. And therefore the code is easier to maintain and to expand.

Is it more scalable than procedural code? Yes, that’s what it became so famous.

Escalable means lots of things, but in terms of software, it means that it can be easily expanded and prepared for adding new features, that it is prepared for the future.

Regarding your lookup tables, yes, it is how it is done. However, sometimes it worths to do it the other way… how would you know that? Doing a benchmarking. That will prove which model is best.

Now, doing a proper benchmarking can be very expensive. But you can use the database benchmarking tools to know how long it takes to run each query.

You should check the information about the tools available for the database you chose.

The advantage of a benchmarking would be that it will tell you whose right… and whose wrong.

Regarding your situation… there are lots of things that you can do. It is his decision to use someone else’s work. Do understand your partner. He has not one, but two persons, that tells him that your code is not up to standards. Be humble, and if it is not, accept it and learn from the mistatkes. Having said this, that doesn’t mean that these “experts” are right… Who says that they’re experts? Your partner? Themselves?

Your partner is the one at loss here. He doesn’t know a thing, and need to trust what third parties tells him.

He came to you. He trusted you. Why did he lose trust? Only because of what other people said? then it was a weak relationship. Still, you can hold your position if you know what you’re talking about. Really.

You can also ask the experts upon which data they’re supporting their claims.

And, at the end of the day, you need to think of yourself and your mental sanity. If you don’t believe in the project or your relantionship with your partner is too tense, then get the cash for your work and finish the partnership (Do get paid, though. You put a lot of work there). Even if he becomes a billionaire and you have only an OK life, it is not worth all the pain and suffering and ulcers that you’ll get.

If you believe in the project and the realionship can be saved, then talk calmly to your partner. Tell him that you understand his doubts but that you know what you’re saying and would like to prove it.

Maybe arrange a meeting with your partner and the two experts.

Be ready to defend your position and give some explanations… but also to ask those experts… Be prepared for that meeting. You may even get prepared before even suggesting it to your partner. Check their background and expertise, check all the innovations in programming, best practices, etc. so when they ask you “why didn’t you use MVC?” you can have an answer like “well, I was trying different things and what matter was that it worked ASAP. This is an on going work so for me, transforming it at a later point, was not that hard. Understanding the concepts and that it worked the way my partner wanted it to work was more important”

Be aware that you don’t want to make them look like they’re less expert (even if they’re)… but you want to look like more expert thant they are yourself. So despective comments should be avoided (even if you think about it)

1 Like

Thank you Molona.

You helped me and we had a nice discussion and we compromised.
All is good, thanks again.

As @molona mentioned the problem in your case is that your business partner does/did not view you as an expert in the field. From what you have posted, this is probably a correct assessment. Though, with that in mind, if what you have said regarding the two other guys, then they are far from experts as well and it bring up a question why he believe they are better in the field than you. That someone is coming in as an “Financial Advisor” and give development advice, sounds like a big red flag imo.

With the type of application you talk about, you want to build it as an API to allow you to scale easily (in short scale means to add more hardware when your users overload the server(s)).

You also want to use OOP since it allow you to easily reuse code and test it with unit tests. Please note OOP is not faster than Procedural code in most cases, but it is still preferred due to it is so much easier to write the code, and not least update it down the road. Note. I would not recommend using MVC pattern.

Without seeing your database model, you are correct here. You want to normalize the model as much as possible, but remember that the higher normalization you the slower it will be to get data from it. This is why you normally first normalize the model, and then after denormalize it according to the data you need to fetch if a specific data set is very expensive to get. As a side note, if you are dealing with money you always also want to have a complete transaction log that is handled async to avoid race conditions. Having this will allow you to recreate the log records in the event something fails.

From here, issues like Race Condition, Floating Point Issues, etc. has to be tackled.

1 Like

I moved a post to a new topic: POS systems

My focus on what you described was not that you are not as seasoned as your partner would like, but that he took your so-so design and implemented it with more experienced help.

It sounds like he stole your design!!

If that is the case, then you should…
1.) Get one hell of a good attorney
2.) Get copies of all e-mails, correspondence, call logs, and anything you can to capture the “crime scene”
3.) Hope that you had an agreement in writing!
4.) Hope your agreement in writing was specific!

This is why I never see myself having a business partner.

Starting a business is tough enough. Trusting people with your business idea is tougher. And starting a business and needing to trust people when it comes to software is more than I would want to tackle!

Best of luck my friend!

Molona really summarized it well.

This topic was automatically closed 91 days after the last reply. New replies are no longer allowed.