|
As some others have said...
Also my 2c
It seems to me that communication between you and your boss is the heart of the problem - he (quite reasonably) just wants something built but doesn't want to take the time or effort to think about it too much.
You (quite reasonably) want to analyse the requirements and build something suitable.
I tend to 'play dumb' in these cases. what you want is for the owner (or some member of staff) to show you what they need to do. So ask - find out who will be using it and ask if you can sit down with them to work out what to do. Admit to dealing in the unknown, and flatter them (they have superior knowledge - maybe they can pass on just a little to you, a mere mortal)
Also, get agile!
Mock up a first screen - you will probably have to do one like that that has been designed to not appear negative - and ask to sit with the boss, or users (preferably both) so that they can explain to you how it will work - because they are the experts.
Then build, one step at a time, better and better models. It will be more work than would be the case if they could explain it to you up front - but they don't see that (and sounds like they won't!)
If you can sit them down, with the app open, with a billion fields, and start working through it, hopefully you will both learn something for the better, and you can re-model.
Knocking up a does-nothing but looks nice view shouldn't be too time consuming - and you can treat it as a scribble-on-paper diagram - something to start the ball rolling...
Good luck!
MVVM # - I did it My Way
___________________________________________
Man, you're a god. - walterhevedeich 26/05/2011
.\\axxx
(That's an 'M')
|
|
|
|
|
In my humble opinion, you're between a rock and hard place. If he is the owner you describe, you've got about a 1 in 6 chance of turning this around.
The only play you've got is to sit this guy down and lay out how the development process works. The business processes are the foundations of the house represented by this project. The "screens" he wants are the "roof" on this house. Where does it make sense to start building this house so the doesn't fall to the ground?
Yes, you MUST mention the possibility of failure if things continue the way they are, repeatedly. Nothing will get his attention more than spending more money than he wants on this project.
If he continues to try and wiggle out and not cooperate, you're going to be on the street, whether you walk out the door or the project fails for lack of business support.
If you're thinking of going behind his back and interviewing everyone on their business process, good for you, but prepare for possible retaliation if he finds out.
It's up to you now. Plan for the worst case outcome and hope for the best.
Good luck to you.
|
|
|
|
|
Isfeasachme wrote: Just wire it up like the owner wants and let the flaws become self-evident?
Unfortunately you will be blamed for the flaws when they become self-evident.
Mock up the first screen and then sit down with the boss and a trusted member of the people who actually use the system and show them the monstrosity.
Hopefully you can convince them of the need to streamline the screen content and work from there.
If that doesn't work face the fact that your skills will never be appreciated and start looking for a better match where you can contribute to the process.
|
|
|
|
|
Whatever you do if you do bite the bullet and do it his way; make sure it's on paper that he turned down your expertise with his signature.
He who asks a question is a fool for five minutes. He who does not ask a question remains a fool forever. [Chinese Proverb]
Jonathan C Dickinson (C# Software Engineer)
|
|
|
|
|
Some very good advice from the others so far.
I find it helps to have a few real-world analogies at hand to illustrate the need for analysis and planning.
For example you could take the example of a company ordering a fleet of trucks and then finding out that the pallets you use don't quite fit 4 abreast so you lose 25% delivery capacity. The solution is to either replace the whole fleet (expensive) or redesign the pallets (non-standard solution) with a knock-on effect on product package sizes as a whole.
I'm sure that you can come up with something suitable for his mind-set.
|
|
|
|
|
Nice analogy, great example to describe to non-techies of how software development can be affected by failure to get as much info up front as possible.
|
|
|
|
|
Your boss is getting annoyed with you and that's never a good thing. Unfortunately your hope of a fresh analysis and redesign is, for now, off the cards.
Going by his response to the designers work it sounds like your first port of call should be to port the whole app to .net. I know this sounds awful but there should be some quick(?) wins for the users; nice shiney new UI for a start, not to be underestimated. Also, you will get a good understanding of how the old system works which should hint at how the business works and you'll learn a great deal.
Then, off your own bat and possibly in your own time, identify a section of the app/business that is rife for a redesign and just do it. It looks like you have pretty much free-reign as long as you start producing something.
If feedback is good for that piece, better still if users start suggestion slight alterations that can be done quickly and easily then the bossman should recognise that the redesigned area is better and can bring efficiencies to his business.
From the sounds of it the only way you can convince your boss the merits of well designed software is to just do it. You need to pick a pice that you can redesign quickly, basically without him noticing, and let the result win him round.
Greg
|
|
|
|
|
gregfarnan wrote: the bossman should recognise that the redesigned area is better and can bring efficiencies to his business
The boss sounds like a bully who will never be satisfied unless he comes up with the idea.
To some people teamwork is a lot of people doing what they say to do.
|
|
|
|
|
Clearly, you and your boss do not "see eye to eye". You and your boss cannot communicate with each other. I am blaming neither you nor your boss. But you should quit your job. This is the best thing you can do. Otherwise, you will be perpetuating a bad situation that should better stop.
|
|
|
|
|
I admire your intention to make it work.
My first impression is that there are two optiones
after an initial preparation:
The initial prep is to study the application how it is working right now, ...
because it seems that nobody wants to explain it to you.
Option 1: start programming in small steps which allow to present it to the boss.
Each step allows for correcciones/adjustments.
Option 2: find an open source project which serves your needs.
Install, learn and present it to the boss.
Explanation:
- I added the preparation because even the boss does not know what he wants.
I have been in similar projects. You have to study the "actual" situation
thoroughly. I did not do that, and the project took several months longer,
because the adjustments took much time !
- Option 1: takes much time. Explain to the boss !
- Option 2: Gives you a quick start ! I have experience with this one too.
A project which costs several years to develop, took me some months to implement.
The users have a lot of requests, but hey easy to add features, because
the source is included and as a programmer, you know: we can program
almost anything. The example I refer to is a web-application:
programmed in php, with mysql database running on apache.
|
|
|
|
|
You need to learn how to manage your boss. This means understanding his personality and working with it. He sounds like a no nonsense talk is cheap type of personality. He hired you to be a programmer and replace their failing DOS-based ERP with an ASP.NET soluttion. He did not hire you to ask a lot of questions. If he wanted to pay someone to ask lots of questions he would have hired his worthless son-in-law. You need to tell him what you are going to do. For example I would state "The first screen is going to do this!" He might reply "That's BS! It has to work like this." and the conversation is started. IMHO I think you really should feel fortunate. Your boss is saying you are the expert programmer and he is willing to give you control. If you tell him what you are going to do instead of asking him what you should be doing things should get better. He will let you know when he does not like what you are telling him. Later in your career you may have a boss that wants to participate in all the decisions and will love that you ask them everything.
|
|
|
|
|
Sounds like a "Bring me solutions not problems" kind of guy. The Graphic artist has given him a solution, you've given him problems. So yeah, he likes whatever foul creation was handed to him because it's at least something.
Take the graphic designer, go talk to some end users on just what the process they go through is. If the designer's approach really is how they work swallow some pride and squeeze the code out, if it isn't then start designing the work flow that needs to be produced and have the designer put together some mock screens for it. Run that past the users, if they like it run with it, if they hate it burn it and start over, if they have a few suggestions integrate them. If there's a lot of change do it all again, but one way or another find a way to make progress that gives the owner something to look at rather than questions to answer.
Trying to get answers from such people is like pulling teeth, it's easier to get them to tell you what they do when they run through the process than get them to tell you want they want the process to be. But, if you present them with something that requires less screwing around in their process they'll respond well. Then of course you have to dig out the edge cases no one mentioned, but at least that's a later problem.
|
|
|
|
|
I have been (and still am) in a very similar situation, and I suggest that you avoid being "subversive" - I get the impression from your post that your boss likes to have his fingers in all the pies - so if he feels you are undermining him or taking your own path on this, he will move to block you, and you will find the whole experience even more frustrating.
If you can, find someone who has the boss's trust, convince them of the merits of your approach and the reasoning behind it, and use their support to convince the boss to allow you the leeway to get moving.
Once your champion is on board, pull together a small team, which includes this person, you, the designer, and at least one representative from the end users (you can change the representative(s) at different phases of the project). Start with the designer's layout, and start chopping it into discrete functions - as others have suggested, it's best to take an educator's role on this and let the users and the designer figure out the bulk of the issues, while you take notes, provide technical guidance and ask leading questions, when appropriate.
Most of all, provide the boss with regular summaries of progress, without too much detail, and at the same time without being evasive.
Good luck!!
|
|
|
|
|
Your bos is right. It's your opportunity to learn something most if not all programmers do not understand: That "normal" (the majority of) people do not think like programmers.
The opportunity and reword can be significant -- way beyond this project.
Here are the exact step to take.
1. Using GUI tools (as an example Win API based tools) recreate the DOS program interface, display and functionality to GUI. Provide identical functionaly and interface but convert the infrastructure such as database to your final platform -- as an example a relational database such as MYSQL or MS SQL instead of a DOS based databse system.
2. Get the users and owner to "test" the new system -- do not add features at this stage - but list notes, comments, criticism and requests for new functionality.
3. Implement regression and intrval backup as well as the web infrastructiure for exapnsion.
4. After testing move to parellel usage of both the old and new systems.
5. After testing comleted move the entier operation to the new system.
6. Start your designe process for new features based using what you have leanred.
7. Start adding new features, one by one with incremental regression.
Feel free to contact me for tools that were designed to do just that. m@views.com
Thank you.
|
|
|
|
|
A possibility is to try and have responsibility for the detailed design delegated down to one of the staff who actually use the system. This might be possible by agreeing with the owner that you understand fundamentally what he wants, but it would help to discuss the details with the users. This could be pitched as freeing up his time.
It sounds as if he is a bit of a control freak, so there may always be an element of needing to do things under the radar. I have worked occasionally where a project succeeds in this way despite the management!
I suspect the graphic designer will be too junior or worried about future employment to do anything that is even slightly different to what the owner says, so may be tricky to handle. They could end up feeling like piggy-in-the-middle of yourself and the owner. The ideal here may be to try to make them part of the dev team or for you to become their boss.
|
|
|
|
|
A rapid prototyping development process is probably going to work better for this guy.
|
|
|
|
|
First of all, remember who you work for. There is no need to be subversive.
From your description, it is clear you have a very incomplete understanding of the business domain/problem domain. I suspect your boss also lacks a practical understanding of how the business operates as well.
All of this is OK. It happens.
You need to turn this situation so it is not a power struggle between you and the boss, but a discussion on the correct business process between you and the organization as a whole.
There is nothing wrong with proceeding as he requests as long as you create a feedback loop that is open and transparent. Go ahead and design that monstrous screen. Give it to some of the experienced users and watch them use it in action. (You must spend time with them as they use it. Make your own observations. By watching them, you learn the business domain and create personal credibility with the users.)
Document what the interaction is like (the bad parts and the good parts) and their feedback. Get the feedback "on the record" so it can be presented to the organization. You might be surprised that it is better than you thought. If it is, you have learned a lesson. If it is not a good interaction, then focus on the user feedback when discussing the problems with the owner. It is not you with the objections, it is the users.
No matter what you design/code, there will always be an iterative process. The monstrous screen may be the end result of a coding phase, but it is simply a starting point for the iterative development process. Focus on the process more, less on the personal conflict with the owner. If you focus on the conflict, you will more than likely lose.
Good luck
|
|
|
|
|
I usually work on the communication problem. I come straight out and tell them we are not communicating, and we have to get through that problem to nurture a long-term relationship.
I also like to identify if the person is a Visual, Kinesthetic, or Auditory person (how they process information). This helps me to pick the right example.
Then, I stop talking about software. I use the building analogy. Here is the analogy I use to start the conversation.
Lets assume you have a private lot in the woods. You come to me, and tell me you want a cabin that looks like X (some photo), with 3 bedroom, etc.
I come back, show you the blueprints. You ask "Where is the deck?" What about the A/C?
I come back, show you the updates, You say "Why is the deck so small, we will have a terrible view of the lake!"
Now imagine that I never showed you the blueprints, and I just built the entire thing! What would the cost be of changing those things?
So, when I ask you to walk me through a diagram, and to work through a screen, or the process. Please understand that I am trying to make sure that we both have the SAME vision for what I am building.
Once you know I can describe this place to anyone and you would not change the description, it is time to start building.
And honestly, the final level of detail to me is:
You walk in to the cabin, you have a bag in your left hand, keys in your right hand. The door opens to the left. Close your eyes and reach for the light switch. Ah, with your elbow... Perfect, we will use the fancy touch toggle light switches. (Oh, you want a motion sensor to turn the light on if the door opens. Great idea).
anyways, I have found it is much much easier to explain the design process using ANYTHING BUT software. People think it is "soft" (no idea where they get that idea), and that makes it EASY to change.
When they realize you are building something that has to be designed, and having it work correctly is not a LUCKY ACCIDENT, suddenly, they realize that the conversations are what is MOST important at this stage...
Also, it might help to find his motivation for his current thought process. He may have had a failed project where they did a LOT of analysis so it triggers a "don't go there" response for him at a subconscious level.
HTH
|
|
|
|
|
I would install an off-the-shelf solution and get the hell out ASAP.
|
|
|
|
|
I've had a similar experience at my last freelance job. The only difference being that my "boss" thought he was quite the developer himself. It was dreadful, but I know now that (since you answer to him directly) you've got a golden opportunity.
The advice of trying to make him see that he has to care, I would have given a few years ago. I had a clear vision of how software should be built and I wanted everybody around me to fit into that process precisely. What I've learnt is that some people just don't care for a structured approach, because it involves thinking ahead and in detail, which conflicts with how their brains work. Upper management (in its worst form) is used to making yes/no decisisions based on bite-sized information.
BECOME THE PROJECT MANAGER! Your boss probably likes nothing better than not having to care about the internals of his ERP system. Odds are he's only interested in the statitics page anyway. So get to know the current system and interview your colleagues to find out what can be improved upon. If at all possible (not every boss likes it if you're seemingly unproductive, you might have to sneak around), try to do their job with them for a few hours, to get a feel of the system and where it stops being adequate. Turn this analysis into requirements and a functional and technical design for the new system.
After that, you're the de facto specialist, which makes you the person to make most decisions. Act like it. Run only the biggest questions by your boss (basically everything that involves spending money) and present him the options in such a way he only has to say yes to plan 1, 2 or perhaps 3.
Along the way he's going to want to see some progress of course. Trust me: it'll look good if it's designed well graphically. Beautiful interfaces are more important to the ignorant than functionally briliant ones. Also make sure you get some click through screens asap to satisfy his needs and don't forget his beloved statistics, even if all is not interactive yet. Most of the screens will be quite easy to come up with after the forementioned interviews. Behind the scenes, you're free to run the project as it pleases you. Go nuts with every development methodology you think works for you.
It might seem frightning to take on this role, but think of it this way: In the end you'll be the one that your boss can rely on to get major development done. You won't bother him with the details and deliver a great product on time. And if all fails (which probably won't be your fault, I foresee a lack of resources), you've got a great story of how you stepped up when guidance was needed. Tell it at your next job interview.
If you want broccoli, what the hell is broccoli anyway? Shut up with the broccoli!
|
|
|
|
|
I agree with this, but would add:
Start with a quick (and possibly ninja-like) run through of the data and business process (input from A, B, and C, goes to E, checks with E, and gets dumped into reports and screens F-Z).
Then, if you think you have a good enough sense of the system, pick a small piece of the system to replace--one that can be swapped in with a better looking UI or more efficient transfer/transform. If you can hook into the right fields individually, maybe a particular user just needs to be able to check a box or set a status. Maybe the output reports are old and stale, and there is a little more data or a better layout that will help the business.
Because he wants to see results now, I imagine that he also won't accept downtime. I've worked on quite a few of these (vague "make it better" requirements, system is seen as absolutely vital, etc), and this approach has generally worked to win over the stakeholder and the other users. The one who gets the first improvement--if they like it--usually becomes your friend and unofficial advocate. If it goes well, people will come by to teach you both how it works and what they need to run better. All you have to do is keep the current and improved parts straight in your head while you adjust.
At some point, you'll probably reach a time where a fundamental aspect will have to be upgraded--new database, move to a different server, whatever. By then, you should have a track record that will carry weight, and enough happy personnel to back you up.
It's dangerous--like modifying an airplane while it's still in the air--but when given impossible demands, you have to start with the small possible bits.
|
|
|
|
|
David Days wrote:
It's dangerous--like modifying an airplane while it's still in the air--but when given impossible demands, you have to start with the small possible bits.
And there really isn't anything quite like developing on a live system.
Just be sure you can get yourself out of trouble if the worst happens.
|
|
|
|
|
The owner clearly didn't hire you for anymore more than your ability to code. Since you won't walk away from the job, you need to do what's asked of you. Truth be told, since he won't let you understand their business nor how the employees work, who are you to judge what's good or bad for them?
The biggest danger is that he's expecting you to magically make the system better, but if you can deliver it quickly enough, that's probably not a problem.
We can program with only 1's, but if all you've got are zeros, you've got nothing.
|
|
|
|
|
I sympathize with you in your situation, as well as with the owner in his. One can understand that both individuals are doing their best to communicate what they think they're supposed to, and the gap that is apparent won't be overcome easily.
If you're willing to approach the project under an Agile paradigm you may find your salvation. Your boss sounds very much like a person who would naturally fit with an Agile approach. If you and he are amenable to implementing a formal process (e.g. scrum) great; if not, you can still approach the project with an agile mindset.
Don't worry about having a list of requirements fleshed out from the beginning. Start with one. Start with the first screen as the owner suggests. Do your best to understand the functionality he's asking for on that first screen. Tell him you want weekly meetings with him, in which you will show your progress, and he will gauge whether you're understanding and implementing what he's looking for, or whether there needs to be course correction. Weekly course correction is a wonderful thing. Consider documenting requirements as you go as Agile stories - small functional requirements written from the end user's frame of mind - and have signoffs as the functionality to meet the stories are built and demonstrated. Weekly. Maybe more frequently if it suits the project and the people. Involve those who use the application & business processes directly as well, and not just the owner. Involve them in the weekly meeting(s). Involve them in writing the stories.
Good luck.
|
|
|
|
|
Have you ever heard of Cowboy coding?...
If you really want to keep going (you should really consider quitting, really), then you can start analyzing the current DOS solution, how it works and replicate the functionality you find there, starting with the screens is a good approach, and continue with everything that is obvious.
Also, some education on the business would help you to realize how and why the current solution works as it does right now, so you may really want to consider reading about the business of your employer.
Finally, hopefully, he is not the sole users of the current solution, so you may go with other employees and ask them about the cases, or formulas you don't understand, in case they really don't know, you can go with the owner with specific questions that he may be more willing to answer.
|
|
|
|
|