Object-Oriented – Explaining Disadvantages of HardCoding and Not Using OOP Principles

object-oriented

I apologize in advance if the question is not directly involved in programming but I could not find a forum of programmers who deal with general questions.

I am developing a cross-organization application.
For a person that has no programming knowledge at all,
the final product looks fairly simple – a desktop application with a business dashboard.

But the App is much more complicated than that.

  • the database is "fed" by users who use the application (a lot of forms
    to enter validated data).
  • all company structure objects are modular and must be flexible to all changes in the company units hierarchy.
  • business logic is very complicated – there are complex parameters to show like sales or revenue goals that are affected by multiple parameters and calculations.
  • GUI must be good-looking and good UX design is a must, including a lot of multithreading stuff, also because its Winform platform, there are not many libraries to use so i am writing all the graphics and animation by myself.
  • a lot of other stuff like connecting to company AD, modules that print data to excel files, bugs, QA, memory and efficiency issues..you know the business..

I am developing the project by myself including the environment of servers, communication to all users IPs etc..
I believe I am an agile programmer but as you know development takes time…

ok after all that heart-rending
story here is my question:

My manager doesn't have any programming knowledge and she thinks that I am taking time and not working hard enough.
I tried to explain her why it's taking time, why I should not hardcode a program in order to reduce development time, how structures are translated to OOP objects and the time it consumes.
But she wouldn't understand
and thinks I am not telling her the truth about the real development time needed.

Please give me advice, how can I explain all of that to a layman in plain English?

Best Answer

Organize a meeting. Involve a few more people than just your immediate manager just as 3rd party observer.

Explain in very conceptual terms what you are doing and how long it will take, and explain options.

For example:

Dear Manager & Co, you have expressed that you are seeking to build a Business Dashboard and to you the end product look simple. But to build it it is not so. I need parts A, B, C, D, and they take respectively 1 month, 2 month, 4, month and 8 month to build.

There are also 2 approaches to building software: Hardcode and OOP.

Hardcode will make it work sooner but it will create a lot of problems for me and other programmers down the road. This phenomenon is so frequent it got a name of Technical Debt.

OOP will get you the product in X amount of time longer, but it will be much easier to modify and change it to your needs over a longer period of time.

Use analogy, for example .. it may take you faster to build a ladder to climb on top of 2nd floor building, but ladder cannot hold two persons at once and will break. It will take you a lot longer to build stairs to the 2nd floor, but many people will use it for a long time. It is a lot easier to maintain stairs in the long run, because the structure is sturdy, while ladders have to be fixed more often from wear and tear because they are just planks hammered together with nails.

Now with that information what product do you want and how well-built do you want it?

In the end, manager will have to

  • trust or not trust your judgment (you are the expert, she's not)
  • make a choice (Hardcode with technical debt or OOP)
  • hire or not hire more programmers to help you

To summarize you have to

  • explain in conceptual terms (without too many details) what you are tasked with to do
  • trust your manager to trust you (or get out)
  • ask for what the manager wants you to build, once they have knowledge of their options

Also, have a good idea on time estimates of how long it will take you to build parts of software using this or that way, and why, and be prepared to answer questions about it. It may help you to put together a document on proposed software features and approximate time and complexity that is involved into making them happen.

And also, you are the expert and you can refuse (or not even mention) that there are deficient ways to do the job. You can refuse to do bad work.

Related Topic