@KattMan said:
I hear everyone consoling you in your attempt at this project, but I see another side of this.
Reading through the text I see where you basically seemed to say "my way is right, heres how to do it." Then doing your work then looking back at others work and seeing it isn't how YOU would have done it and decide to just start re-writing it.
I don't care if you are the best on the team, team dynamics require you to work within the team itself. Sometimes the best way to do something is not the way it should be done because some members just can't grasp the idea. Remember there are numerous ways to do something right just as there are numerous ways to do something wrong.
I agree the code snippet you posted was bad, but claiming the entire team was useless and you were the only one worth anything at all just makes me think you believe yourself to be above everyone all the time. Remember, you can write bad code too.
I agree with you 100% about doing things the way the team can understand. The project was a two semester senior design project in electrical engineering. I came up with the basic idea for the project, did the high level architecture, then we divvied it up and went to work. Fast forward 5 months
and the analog circuit design is in a complete shambles. With two months left out of the 7 months of the design/build/test phase of the project the simpler circuit is sort of half working, and the harder circuit is at square 1. In fact, it is really at square -1 because an example design I provided to use as a starting point in the architecture phase has apparently been forgotten.
At this point I get the software to a working state and start working on the harder circuit which hasn't been started. I'm sure analog circuit design is way outside of the expertise of most of the people that read this site. Since the easier circuit is still flaky, I re-design it to be simpler and more robust and get all the parts needed to re-do it in one afternoon. Now, keep in mind this is the sole product of the other person for 5 months of work. The design that is going forward is a Frankenstein monster which is uses parts pointlessly. There was no need for ANY ICs, the entire thing could be implemented with a handful of generic off the shelf resistors, capacitors, diodes, and transistors. However, this person has managed to use 4 ICs. Some of the ICs require external inductors, they need to be soldered in special ways, etc etc. So what literally should have been a weekend worth of work has stretched out for months.
So, now comes the part for the circuit that needs to be designed which should ACTUALLY take 2 months. I'm trying very delicately to nudge this person along, but there is so much stupid floating around group meetings it is painful. The guy who wrote that terrible C code I put at the beginning has an opinion on everything! His core "competence" is working in low level C code and digital circuits. He wants everything to be custom made. In his opinion analog is better than digital, digital is better than software. Decisions arose to move functionality out of circuits into software and out of analog into digital and he was against it both times! The most basic thing in the world, that it is easier to do things in software than hardware and easier in digital hardware than analog hardware seems to be a completely alien concept!
After working on the analog circuit for two weeks, it is ballooning out of control, the rough design is calling for something
like 200 discrete components (versus less than 20 for the digital). The simulation is not working and trying different circuit designs is a long and grueling process. So, I take another look at digital. My proposal to the group is that by just doing raw data acquisition from the transceiver and getting that into the digital circuit we can worry about finessing the data to extract the bitstream later. Since the actual extraction circuit is in the FPGA, we can lay out and test the hardware and then the FPGA can continue to be modified up until the night before the demo without physically changing any of the circuits.
This proposal is met by a complete shitstorm. The guy who knows nothing but has an opinion on everything is convinced that analog is better than digital. Now, he doesn't understand analog at all, and he thinks he knows a bit of digital (but actually designs digital circuits as well as he writes C). I am accused of destroying the project by not consulting with the team. I have "forced" the team down the digital route by working on a digital solution for 4 days! Nevermind the other person whose job this was and didn't even start working on it for 4 months. The deadline is now too close to change horses (this is the first deadline which actually got missed).
So by the time the shitstorm hits, I actually have a Matlab simulation showing the digital decoding method will work, there are analog to digital converters in the mail, and a rough Verilog code has been written to confirm that the FPGA has enough resources. Keep in mind this is all in 4 days! All the analog circuit has going for it is a rough intuition about how it should work (MY rough intuition that I had to spoon feed to the "analog expert"). The digital circuit has a great deal of simulation and confirmation. And I am accused of all kinds of things. I am ATTACKED because I preemptively started working on something that should have been started months earlier but wasn't.
On the one hand people are complaining because they say they are up till 3am in the lab working on this project. On the other hand they say that laying out and soldering 200 components is no problem. When I point out that the circuit layout can be frozen much earlier in a digital circuit than an analog one, I am accused of just wanting to do digital to get more time. Like doing it in an easier way that opens more slack in the schedule is somehow a bad thing!
I guess what I am trying to say is that this was not a case of me pissing in other peoples corn flakes. This was literally a case where I designed everything, and the other members of the group were sitting on the side throwing rocks at me. One of them worked fine. But, the other two had no positive suggestions to make, they just bitched non stop about how what I was doing was wrong. And their arguments were irrational and ignorant. After making the easy parts ridiculously hard, they want me to stop and consult them on how I approach the hard parts. In the end they finally took an earlier design I had made (the analog circuit) and ran with it on their own because they thought they somehow knew better than I did how difficult it would be to get the circuit I DESIGNED working. I predicted the ways that the circuit would fail. The simple "naive" circuit would actually have so many problems that it would be better to do the circuit in the more complex but more robust way. This approach goes "swoosh" 5 miles above the heads of my group mates.
One week before the project is due, I am told that the analog circuit is working. I really really want to believe this is the truth, that in the end they had pulled through. The digital circuit just needs a small amount of testing to confirm that the analog to digital converters actually meet their spec, and it will be fine. I have already laboriously mathematically simulated the entire circuit, as well as built a testbench and examined every internal register of the custom digital circuit to confirm that the behavior of the circuit agrees with the mathematical model. I am told to STOP work on the digital circuit immediately because the analog is working. I am still being polite despite having 10 kinds of bullshit thrown at me by the group. So, I ask "should I continue working on the digital circuit as a backup just in case the analog runs into unexpected difficulties?"
I am told, no stop working. The analog circuit is definitely working.
By this point I am emotionally and mentally exhausted. My blood pressure has gone up so much over the past month that something that looks like a hickey has come out on my neck. So, I go home.
Three days later, I find out not only was the analog circuit not working, it was not working in the EXACT way I predicted it was not going to work. The two dipshits had gone off and slapped a circuit together WITHOUT DOING ANY SIMULATION. Then they didn't test the circuit properly and thought it was working when it really wasn't. So they tried to get it working for a couple days and failed miserably, then gave up. There were still 5 days left before the demo. Other groups were in the lab working frantically. They told me to stop because what I was doing was no longer necessary, when it was actually critically necessary. Then they just gave up. And didn't bother to tell me so I could get the alternative working.
So, then it comes time to present the results (it turns out we didn't need to have everything working to graduate). The night before the presentation, 10pm. We have each thrown in some powerpoint slides. The person that has fucked up the analog sees that I have some slides talking about the digital circuit and shits a brick. "We had to pick the one that was further along and go with it"
This is really the cap that made me pop my top and post it to this site. Let me reiterate the chain of events:
1 - architecture is laid out by me
2 - architecture is changed to give a bigger part of the project to someone who is concerned they don't have enough to do
3 - this person proceeds to fuck up the "little" piece which wasn't enough for them to do earlier and not even start on the hard part
4 - I have to spoon feed one method of doing the hard part to this person
5 - after working for a couple weeks I realize the simple method won't work, and revert to the initial architecture
6 - I proceed to stay up till 6 am, cut class, and generally do everything in my power to get the circuit done in the most efficient way I can, working through mathematical verification, simulation, implementation, debugging, doing everything methodically and by the book to ensure that it will actually work
6a - an endless stream of useless bullshit off the cuff criticisms come at me
7 - the little piece FINALLY gets done, with 9/10ths of the project schedule already eaten up, the person decides to take my earlier design and start working on it
8 - the earlier design for the hard part is slapped together WITHOUT SIMULATION OR MATHEMATICAL VERIFICATION
9 - it is sloppily tested and declared working
10 - I am ordered to stop working
11 - I am not informed that it actually isn't working
12 - I am ordered to remove any mention of the work that I was cutting class and raising my blood pressure for a month and a half to get done, because "we" decided to go with "the one that was further along"
One last thing that probably needs a bit of explanation: the circuit was kind of a two stage process. The easy part fed into the hard part. Since the idiot who was fucking everything up had built the easy part, it was in that persons possession. So, in order to do final integration testing I needed to physically have the easy part, which means I needed the cooperation of the idiot. Also, the idiot had decided that they should be in charge and so took it upon themself to tell everyone else what to do.