The Lounge is rated Safe For Work. If you're about to post something inappropriate for a shared office environment, then don't post it. No ads, no abuse, and no programming questions. Trolling, (political, climate, religious or whatever) will result in your account being removed.
It depends on the capabilities of the display you're using. You're going to have to contact the manufacturer of the display to find out what type of "pens" are supported and whether or not it supports "multiple touch" when it comes to pens. In some touch displays, pens do not work but fingers do. In other displays, it's the other way around. And still others, they can support both.
So, as you probably know, I gave my notice. The expected and gratifying panic ensued, resulting in lots of "we need to understand how your code works" meetings. During these meetings, various warts are exposed, warts I knew about and for the most part had // TODO: Cleanup comments around.
Why the warts? Because in the two years I've worked on this project, off and on, sometimes with a good several months "off" because management kept shifting my priorities, the project has evolved from basically a simple "read in the XML data and serialize it out into a fixed length delimited flat file" to a complex beast that has to handle numerous variations of the string-based XML data, numerous rules on how additional records need to be inserted, or excluded, or massaged, etc. etc. etc.
Basically, what I have implemented should for the most part be considered at this point a throw-away prototype given the learning that has occurred over the 2 years on just how freaking complicated it is to take denormalized data (as XML strings of all things, so there's no consistency in the naming of lookup values), handle all the variations spit out by the processes that create the XML...point being, I learned a ton of stuff as I went along, and I wouldn't have written the program the way I did had I known all this stuff up front. Stuff that only a couple people in the IT department actually understand.
So, during the code walkthroughs, I keep getting frowning faces and questions like "where did this requirement come from?" Given that the project had a one line requirement "convert XML and report it to the third party agency" (the spec for that is a 200 page tome with a separate addendum), I laugh when I hear the phrase "requirement."
And so this morass is being handed to a junior dev that isn't comfortable yet with what I consider basic C# features -- generics, LINQ, lambda expressions, abstract classes, etc. Management says I'm the only senior developer that the IT department has ever hired. I can see the argument for "code for the junior developers" - ie, lots of cut and paste. This poor guy, who is inheriting my project, is who really deserves sympathy.
So much for the sympathy. Here's the part where I'm smacking myself. There's only one person qualified to do the code walkthrough -- this person is really quite smart. It's actually a pleasure (in a painful way) to have someone that knows C# well enough go through the code with me. However, her main job is DB admin stuff, not C# development.) In hindsight, I wish I'd set up monthly code reviews with her. At least monthly. She knows the craziness of the processes that generate the XML (which has its own warts that would send you screaming out of the building) and has honed in on the warts that are the result of numerous refactorings instead of rewrites during this development process.
But on the gripping hand, I'm also pissed off. Management promotes a very silo-based development environment -- people work on their own thing and there's no collaboration. There's no training to bring juniors up to more senior levels. There's no concept of code reviews -- see my posts in the weird and wonderful. The way source control is used, it's only there to separate development, quality, and production code -- no branching, no pull requests where someone reviews your commits, etc.
But then I get back to smacking myself -- I know better. I should have taken the initiative to request code reviews. I should have utilized this really smart person's knowledge and skill better. Heck, I should have done better to begin with.
As to why I didn't, I would have to say that my disappointment in management, practices, and processes, which sounded great during the interview, created the psychological "I don't really give a sh*t" mood -- promoted by the punch clock mentality of management (yes, for salaried employees), lack of flexibility, and that everyone has been browbeaten into this mentality -- how many times have I heard "it's a paycheck?" from my coworkers? And besides, I truly have no passion for the insurance industry.
If there's a lesson to be learned here, the main one is, I shouldn't have allowed myself to get into that "I don't give a sh*t" mentality, nor should I have let my lack of passion for this industry to get in the way of doing a good job. I failed. I should have left the company early (I almost did, 2 weeks in as a contractor, but I needed that damn paycheck) or I should have been "professional" about my work irrespective of the crappy management style, tools, equipment, and work environment.
Well, it is always easier to judge the situation afterwards, when you do not have the tip of the nose touching the screen...
It is a great skill to be able to pose judgment on oneself, though. If that could reassure you, I once was in a similar position with no process, no requirements, no nothing, and I tried to be professional about my work disregarding the management (who also lied to me during the interview) - this only lasted two more months before I left -> Even with good will, it is almost impossible to bend the organisation in such a manner that it suits you then. If that were so easy to change things or do them better, then the organisation would not have come that low first place. All that to say : do not be harsh to yourself, there was only little chance that behaving "ideally" as you mentioned it in your post would have changed anything anyway.
I think you should give yourself more credit.
Here's an example of why.
I had a project that needed to be completed -- a tool for internal use -- but their tech leads said they needed more functionality.
I said, "Ok, let's hammer out exactly what you need and we'll do it in an Agile fashion. I will take each one, develop it, turn it back to you and we'll iterate to make those last items exactly as you want them."
We went in and they only had four medium sized pieces of functionality that they wanted.
I had them confirm numerous times that is all they needed.
I then went into dev mode and did the first one. I placed the working code that ran against prod in a location where they could try it out. I created a 1 minute video to show them how it worked.
Please take a look, said I. Oh, we will, said they.
We iterated through each of those items just like that.
Two or three weeks later, I sent out the last piece of functionality and said, "That's it. I'm done. You have everything you have asked for."
"Wait a minute..." they squealed. "What about...?"
"Well, I showed you that and it is X," I said.
"No, it doesn't look right," the tech lead said.
"I sent that one out two weeks ago and ZZ on your team who you gave authority redesigned it. I didn't even design that piece. It is exactly as ZZ asked for it and he signed off on it and you supposedly saw it already."
"Ok, well..." said tech lead.
The point here is that I walked these users through the exact functionality of 4 smallish items of functionality and I sent them video snapshots of the functionality in action and provided them with a working copy, but only at the end of the entire thing when I said I'm done could they then begin to think of something that isn't right or needed something more.
My point: they don't know what they want, they cannot communicate it and anything you give them will be wrong anyways.
That may sound cynical, but it is simply the truth of the situation.
My other point: give yourself a break here.
Everything placed under a microscope looks so different than when people just look at it normally.
My takeaway from reading your post...it sounds like your management doesn't value its people and (probably) never will. Trust me, I've been there. I stayed waaay too long and tried to fix the problems...predictably, without a successful outcome.
Of course, you could have done the same...tried all the fixes and work-arounds in your post. My guess, nothing would have changed there either. You'd simply have wasted more of your time and left (possibly) more frustrated.
So, instead, congrats on getting out and finding a new job! No looking back, look forward and enjoy the new job instead
Given that the project had a one line requirement "convert XML and report it to the third party agency" (the spec for that is a 200 page tome with a separate addendum), I laugh when I hear the phrase "requirement."
Back in the day I worked at a Building Society (equivalent to a "Savings and Loans" in the US??). I was a new hire at the place, and the person I was supposed to be working with insisted we had "full business requirements" before he'd allow our boss to start work. I was put on looking at Enterprise Application Blocks, until my colleague was happy. After a month I was getting really bored, so I decided to by-pass my co-worker and convinced my boss to show me the requirements as they stand so I could at least see the scope of the system I'd been initially hired to produce.
There was the usual business scope and flannel, once that was out of the way, the actual spec part was about 8 pages. It was really curious what the Business Analysts thought were the important points. They's spent two pages each specifiying the Loan-To-Value ration and Loan to Income ratio. About six pages in, in the midst of a spectacularly waffle-y bit was a remarkable sentence: "The system will be able to process mortgages for multiple providers with flexible processing requirements for each provider". It wasn't mentioned again anywhere. After talking to some people I confirmed my suspicion. They'd Analysts had spent four pages specifying in intricate detail the meaning of two simple ratios, but had hidden an entire highly-configurable multi-tenant workflow system inside one sentence.I have felt your pain, to some extent.
Analysts had spent four pages specifying in intricate detail the meaning of two simple ratios, but had hidden an entire highly-configurable multi-tenant workflow system inside one sentence
That's a perfect explanation of the challenge and problem of how requirements are gathered and analyzed.
Too much focus on small details. Too little focus on extremely important things.
It's often based on what the analyst understood thoroughly and did not (thoroughly) understand.
We tend to spend time with things we understand.