|
Lucas A. Martinez wrote: Is this something we have to get used to when dealing with outsourcing Yes!
Think about their business model, they make money from churning out solutions and the hours spent supporting the solutions. So the faster the solution and the more intensive the support the more money they make!
Where is the incentive to write elegant, supportable code? It always astonishes me when an organisation outsources their development and then expects quality.
Never underestimate the power of human stupidity
RAH
|
|
|
|
|
Next time, give them a small job for a fixed bid that you can review at the end of the week.
If they "fail", they don't get paid or hired. Get it in writing.
(In the freelance "business", "fixed bids" typically don't get paid if you botch the job).
Another thing: the person you interview is not always the one that winds up doing the job ... You can be as skilled as you want interviewing, but in the end, they may very well just pass your project on to some code factory (because you can't see them).
And all the while you're thinking: "But they sounded like they knew what they were doing...".
And of course they did.
Anyway, outsourced or not, there should be some deliverable to review at the end of each week so you can catch issues like the one above.
I assume the project manager / lead was "theirs"?
No?
|
|
|
|
|
It probably would be best to review the code yourself and make no compromises.
Unfortunately, I am one of "them" and have seen stuff that would probably make any sane programmer want to shoot him(her)self, but I have also seen that the above method works. I would recommend trying that, if possible.
|
|
|
|
|
Hello:
I need to build a reporting tool that can read an xml file (which is the data output of a piece of hardware). The report would be populated with the read-only data (output from the hardware), but there also needs to be a comment field added to the report template that the user can data enter into and then the whole thing needs to be saved as a filled in report instance. I was thinking .pdf.
1) One way I see this application is.: I would create an xsl file for the template. The xsl file would be merged with the xml file to create the report.
The data is sensitive so I don't want the data in the cloud.
It will be available locally via a flash drive.
If I did it this way, I envision a local web server to be started on the client since a browser can not read a local xsl or xml file without security issues.
So, this design is kind of a local web application.
2) Another way is to create a desktop application, but then there are distribution issues and runtime issues, if it's a C# application. The other alternative for me is a Java Web Start application.
Either way, I do it, I think it would be easiest to have the data/template be displayed on the screen so the user can enter the comments into a field and then have another tool save to a .pdf.
Any ideas or has someone done something similar where they would be able to share what worked for them?
Dan
|
|
|
|
|
Just create a PDF with a comment field the user can edit. The user can then add a comment and write-protect the PDF / comment field if they want to.
(Later on you can start getting "fancy").
|
|
|
|
|
Background
In my workplace there is a debate on two backward Compatibility (BC) implementation approaches. I am not talking on the question if our code need to be BC, this is given and a consensus. The question is how to do it in the code level.
Lets assume that we have CodeA with inputA and resultsA and newer evolved code CodeB.
The Code, of course, knows to identify if the input is A or B.
Lets assume that ~20% of the code functionality was changed.
Lets assume that each version footprint is 1Mb.
The BC requirement is that CodeB with InputA will provide ResultsA.
Strategy 1 – if in the top + code duplication
One approach which is led by the more agile side says:
When I evolve my code from A to B, I don't want to think about BC. I will do it as if this was the very first (ever) code. Then in the last stage I will wrap both CodeA and CodeB by a switcher in the most higher level that will call the full old codeA when he sees InputA. I know it is code duplication but binary size is no concern these days and my newest code is always clean and not carry the old deprecated code. When code A will not be necessary anymore few years from now I will throw it away and will be left with B (or C, D ...). I know this is not elegant but time to market is more important and again even if I have 10 versions together it is only 10Mb.
Strategy 2 – if in the fine grained bottom level
Second approach which is led by the more classical "by the book" SW engineering says:
When I evolve my code from A to B I will put a BC handling (if or whatever) on the fine grain lower level changed functionality (functions, methods, lines …). After all it is just 20%. I know it is tiresome and my one code will be with ugly BC handling on many lines but I have at least one consistent and compact code and not huge code with A,B,C,D,E full versions inside.
What do you think? Who is right? Will be happy to hear why, cons and pros + ref to reading on this subject.
|
|
|
|
|
Approach 1 is not DRY, and would require maintaining similar code. Meaning any update will have to be done in multiple places, creating multiple places to fail and test. If you make it a strategy, you'll get a large codebase with duplicated functionality. Will become hard to maintain over the years.
Make it SOLID.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
Eddy, Thanks for the comment.
However, Guy#1 will say. I am DRY! I am only updating the latest version. In a matter of fact I will never refactor the older code because I want it to work EXACTLY!! like it did when it was the most updated. This is "rollback by design".
proper disclosure - I belong to the second group but want to challenge what I've been told and "raised on".
|
|
|
|
|
Lior Cohen wrote: I am only updating the latest version That may be the idea, but sooner or later there is a change that needs to be in both versions. If you have a duplicate, it is not DRY.
Lior Cohen wrote: In a matter of fact I will never refactor the older code Even if you never refactor, never change requirements, if there's a bug that needs fixing that gets discovered later, you'd be fixing minimal two places.
Don't tell me it won't happen, it happens continuously.
Lior Cohen wrote: This is "rollback by design". No, it is being incompatible with your older version.
Good compatibility means, among others, that data-files can be used by both versions. Meaning the older version will need to ignore extra data and the newer version needs to check whether it is there before acting on it. If your new version uses a new layout and converts all, then you might no longer be able to "rollback by design" without destroying the users' data.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
Eddy Vluggen wrote: you'd be fixing minimal two places.
I think i need to describe my system a little, as I don't understand why you claim I need to fix a bug in both places.
My code is an image processing module (no UI).
The input is an image and a parameters bundle we call a "recipe".
one of the recipe parameters is the version of this recipe.
The recipe is created from the same context so it always created with the version of its creator.
In pseudo code is
out = process(in, recipe)
Approach 1 implementation will be like this:
out = process(in, recipe) {
if recipe is of version Jan {out=process_Jan(in, recipe)}
else {out=process_Feb(in, recipe)}
}
Now suppose there is a bug on process_Jan (the old). Fixing the bug will change the results anyway so the customer had 2 options
1. Stay with the Jan version including the bug (bug compatibility )
or
2. Move to a new March version with bug fix but with different results.
The bug fix will be change the code like this
out = process(in, recipe) {
if recipe is of version Jan {out=process_Jan(in, recipe)}
else if recipe is of version Feb {out=process_Feb(in, recipe)}
else {out=process_Mar(in, recipe)}
}
so here I changed the bug only on Mar and not in all places.
Please try to explain on this example.
modified 10-Oct-15 10:05am.
|
|
|
|
|
Lior Cohen wrote: Please try to explain on this example. That's a nice little example which is severely limited in scope. As you can see, 'proces_A' is not named after februari (what year?), so it may already be confusing to the casual reader.
Sh*t starts happening once there is a dependent method; imagine calling "DoSomethingWithImage" from process_Jan. It needs a bugfix too. Now all methods using that will need to be changed; one path to guarantee the old behaviour, one for the new functionality.
I'd recommend using inheritance, not a bunch of if-switches.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
The vendors I currently work with have a very simple versioning policy:
If you want support and a fix for a previous version, you first need to upgrade to the latest version (for free). The upgrade is a no-brainer; in some cases done automatically. (A version# is what kicks anything off if it does not match what is currently available online).
(If you want to be cagey, call the upgrade a "fix"; who's to say when a fix becomes an upgrade).
|
|
|
|
|
Hello Sir,
Thank you so much for post this architect strategy of web development .
by VAni,
://www.3d-architectural-rendering.com
|
|
|
|
|
i want to increase background size of .woo-feature and .woo-about in page but after add the CSS the background width increased on window all browsers but its not working on MAC operating system on any of browser.
website link:- http://bowerybeachfarm.com/farm-tour/
CSS I USED:- .woo-feature{margin-left:-13%; margin-right:-13%;}
.woo-about{margin-left:-13%; margin-right:-13%;}
please give me any suggestion where i am wrong and how can i fix it.
Thanks
Gurjit Singh
|
|
|
|
|
You would be better off asking this question in the Web Development forum. This forum is for application design questions, not web design.
|
|
|
|
|
I am working above IEEE paper can anyone help me to understand above topic please help me to understand
|
|
|
|
|
What have you done with this and what don't you understand?
|
|
|
|
|
What part of the IEEE paper are you having trouble with? Elaborate on that a bit, and people may be able to better help you.
"I've seen more information on a frickin' sticky note!" - Dave Kreskowiak
|
|
|
|
|
Hi there,
I have problem with laptop HP Pavilion dv5. When I start it, I use my user and password, but then there is a black screen, so I cant see icons, folders....
I have to use task manager to open browser as a new task.
I can access with safe mode there I can see icons, folders, etc.
I tried restore it but doesn't work. Does any one know where is a problem ?
Please help me!
I appreciate that!
|
|
|
|
|
The problem sounds like explorer.exe is not executing. type in run 'explorer' or start a new task with 'explorer'. If that works, run a virus, malware, and ccleaner registry scan, to check for problems. A
Blah blah blah... say your prays...
|
|
|
|
|
I am working on a CSS parser which requires to implement each algorithm to parse different CSS selectors. So I saw a Statergy Pattern there. Everything working perfect and satisfies the Open/Closed principle. If But now I concern about the rising number of this statergy pattern implementations. Also I am expected to include few more in near future.
I can implement this in a different method like an array of Func methods. Each Func method will encapsulate the algorithm to parse different CSS selectors. To me, this implementation is more primitive than Object Oriented approach.
Before analyzing the performace like aspects, I just want to know which one is more adaptable. It is difficult for me to judge which one is more better design. Can you please help me on this?
|
|
|
|
|
popchecker wrote: If But now I concern about the rising number of this statergy pattern implementations. Why? There's also a rising amount of code. The amount does not say much in itself - if the usage is justified, it is not bloat. If it is there just to say "look, I'm doing patterns" without adding value (there's always cost) then it is bloat.
popchecker wrote: o me, this implementation is more primitive than Object Oriented approach. A parser might be handy.
popchecker wrote: I just want to know which one is more adaptable. Which approach compared to which other approach?
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
popchecker wrote: I am working on a CSS parser ...
Before you re-invent the wheel, have you seen this project[^]?
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
popchecker wrote: If But now I concern about the rising number of this statergy pattern implementations
10? 1000? 100,000?
popchecker wrote: Before analyzing the performace like aspects
I would expect that profiling would determine that implementation methodology of accessing the functionality would have zero impact (just noise) for either method The functionality represented by each and the usage to which each is put would be the problem. If there even is a problem.
|
|
|
|
|
Could any one help me in order to configure team foundation server on our local machine.
Thanks in advance.
|
|
|
|