Found myself backed into a corner today.
Modular programming and ISO/OSI layering calls for a separation of the business logic and the UI logic layers.
However, someone else's design calls for me to identify a piece of data based on a header file that is defined as UI-only.
The solution to this is to create a second header file which aliases the UI-only data... a look-up-table.
Unfortunately, this creates a bad thing: two separate header files with essentially the same information.
So do I do the bad design practice and create more complexity, or do I break modularity and the ISO/OSI model?
I had to decide. And based on my previous experience here, I decided to go for the bad design and added complexity, knowing that the system architect has made exactly the same decision.
I tried finding a way that I could add more arcane complexity to the design, such as having to create and instantiate an object that would make a query into the look-up-table, but I am afraid to mention the idea for fear that it would be taken seriously. I just find something very gleeful in mocking some of the design work on this system. It's the equivalent of having to requisition that a phone be installed so that you can call the building manager so he can give you the location of the light switch, then having to uninstall the phone after you are done.
Repeat this process for every light switch that you need to turn on. Or off.
I just hate being backed into a corner like that. And I hate making the decision for more complexity because that is the chosen path.
Of course, I'm not the only one who is fed up. My project manager is bucking upper management and adding some time to the schedule so that we can handle the impact of the design changes that were foisted upon us (me) last week. He's figuring it will push our deliverable date back two weeks, and that will not be a happy thing. We were already told that we would not be getting additional contractors because the budget is frozen, so there is no room to add someone.
My current task is implementation of a design. The design was supposed to be finished pretty much over a week ago, but things have changed so much in the last several days that I've been dealing with updating the design and doing no implementation. In theory I have three weeks to do the implementation, which started last monday. I'm maybe 10% done.
On the schedule, I not only have to do the implementation for this module in that time, I also have to design and write the test plan, code the test plan, and test to completion.
I'm thinking not.