3

I am a developer for a non-IT company whose main service is marketing. There's not much technical people when I came on board, just one who is the project manager and all of their IT projects (websites and iOS/Android apps) were being outsourced. I came in as an iOS developer 5 months back at the time of this writing. And I inherited a project that was handled by at least 5 different developers before in a year and as a result, the project that was handed to me was expectedly messy. Different strategy, naming conventions, etc. from all of the developers. The project isn't that bad though as it has a number of active users in its target countries, thanks to the fact that it is managed by a marketing company.

Now, this marketing company that I work for is planning to build another app, that is much the same than the one with have right now. It's a great idea to expand and earn profit but their idea is to reuse the existing app and change the images, contents and customize it for the next client. The project being messy as it is of course would be a problem to developers like me, also to mention that I am still fixing some bugs that could've been avoided by the previous devs but I have no idea why they didn't.

The question or opinion I need to hear is, how would I convince the company to reuse but recode the new project. They are thinking like copy pasting the whole project and changing a few images here and there to make it work for a new client. Time is always tight for a profit oriented company and its kinda hard to convince them to start the app all over. What would be the best approach to make the existing project a reference rather than a framework or a skeleton of the new project. Take the best from it and recreate the not so good ones.

I know some may say that If I have this kind of attitude of making things standard or proper, then this isn't the right company for me. But I personally want to be a part of this company long term and shift them to the right direction because they have so much potential. Again, they arent too technical and can be a bit hasty due to being profit minded, always concerned about the time, the client's wants and resources. If I was the manager perhaps I wouldn't be asking this question but I am just the developer, though I have a lot of respect from our manager, I just dont think this works for both of us.

  • I'm not sure this is a project management question. Could you clarify precisely what it is that you're asking and how it relates to project management? I perceive the general outline of your problem, but I'm not sure what it is you want to know. – Mark C. Wallace Mar 2 '15 at 12:07
  • The key question I took from this is "How would I convince the company to [reuse but] recode the new project". – Marv Mills Mar 2 '15 at 12:11
6

Refactor instead

@Marv Mills gave good advice on what not to do - complete rewriting.

Here is what I suggest you can do - refactoring. You said you are already working on bug fixes. Whenever you touch any piece of code for fixing a bug, refactor only that part of the code.

Also, you said you have to customize the app for the next client. Again whenever you touch any piece of code for customizing, refactor only that part of the code.

Refactoring: Improving the Design of Existing Code by Martin Fowler with Kent Beck et al.

What Is Refactoring? Refactoring is the process of changing a software system in such a way that it does not alter the external behavior of the code yet improves its internal structure. It is a disciplined way to clean up code that minimizes the chances of introducing bugs. In essence when you refactor you are improving the design of the code after it has been written.

And, before you refactor, start by writing unit tests for that piece of code.

If you want to refactor, the essential precondition is having solid [unit] tests.

3

The best way to make a case for a project is using a cost benefit analysis.

Work out how much something will cost the company.

Work out how much benefit (usually in financial terms) the company will receive, over what timescale, through doing the project.

Wrap the costs and benefits into a proper business case that provides context and high-level analysis for the decision makers. Don't forget to illustrate more than one option and definitely include "Do nothing" as one of those options.

Hopefully your business case will define in cold hard cash terms why the company should do what you propose. But be prepared for such an analysis to conclude that a ground-up rewrite will cost a significant amount of money and will not deliver significant additional revenue.

If you take nothing else from this answer take this article by the legendary Joel Spolsky on rewriting products.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.