What Is Productivity?

What are good ways to reduce development time and increase productivity?

  • In the last few years I have tried to increase the productivity of our development team in various ways. To keep things short and simple I have changed the way we work some time ago as follows: I reduced the development team from 10 to 4 people. This has helped definitely in terms of productivity – less bugs and less synchronization issues. Now I work with a handful of excellent coders only (but yes, this makes us vulnerable when someone is sick, etc…). All tasks are well recorded on our agile project management system, SVN/TeamCity is used and I believe we are doing whatever we can to get the work done quickly and properly. Nevertheless, we are constantly ending up in situations where our to-do-list gets longer and longer and nothing really gets done for good. No time left to move on to other features that we would like to add to the Website, so we can improve the user experience and focus on the actual business requirements.   Now my developers tell me that it all comes down to ASP/.NET. They say that we should rewrite our application in MVC 4 (which is obviously extremely time-consuming) and only then our productivity could increase.   Here is an overview on our current challenges:   -Low Productivity with .NET: “Simple” changes of UI take “forever” -Issues with adding manpower due to lack of talent available -Issues with adding manpower because of synchronization issues -Too many issues with browser compatibility -Too many bugs related to DB (like loading times)   Our business process evolves constantly and as a result the development project is getting more complex permanently. We are a small company and can’t hire hundreds of developers, so is there any other valuable advise on how to substantially improve the productivity of the development team?

  • Answer:

    I wouldn't rush that fast into switching to MVC. In 90% of cases, migrating the code to MVC is a lot easier said than done. I am all for improving the code and it will of course bring benefits but if you have an unforgiving deadline list that is simply not possible. Even more if you only have 4 coders, who must fully concentrate on improving the product. The way I see it, you have 2 possible solutions: 1. Take a list at your list of upcoming feature requests, and decide if it's feasible that for the next 1 or 2 months only two coders will work on the features further while the other two will create a clone of the .sln and migrate it to MVC. 2. Stay with webforms, but take 2-3 weeks off the feature implementation process. In this timespan you and your colleagues will examine the code very, very thoroughly, and will each find ways of improving it. - Stored procedures that take forever? - Viewstate cluttered with waaay too much data? - Caching not used enough? - Too many or redundant LINQ calls on some events? Consider combining the calls into a single one. - Javascript that takes way too much to run on the client? - Multithreading issues? These happen usually for large projects. It's a good opportunity to examine all these things, fix them and improve your code. Also, I would examine your last two bullet points: -Too many issues with browser compatibility -Too many bugs related to DB (like loading times) Browser incompatibilities will always be there in a web application, regardless if you use .NET, ruby, python, node.js, etc. As for the second point about DB loading times, if your hardware is not the limit, then  your problem is a coding one and not the DB itself, because if you use SQL Server (most commonly used for .NET environments) , that one scales like a boss, you can't blame SQL Server for the loading times. It's way more advanced than MySQL. Most probably you need to optimize your indexes, review your queries, don't overuse cursors, etc. Also investigate incorrect use of the ORM, I don't know the details of your project but if you use Entity Framework you might wish to check the queries that it generates, with Profiler, and run them separately to see if EF is the cause for the horrendous loading times. In that case you need to optimize your queries. Or another problem with EF is this http://stackoverflow.com/questions/686554/why-is-entity-framework-taking-30-seconds-to-load-records-when-the-generated-que Last but not least, you absolutely NEED this: http://www.hanselman.com/blog/NuGetPackageOfTheWeek9ASPNETMiniProfilerFromStackExchangeRocksYourWorld.aspx It is for MVC, but with a bit of configuration it works with webforms too.

Andrei Cristof at Quora Visit the source

Was this solution helpful to you?

Other answers

In 95% of cases a rewrite is a bad idea. In 5% of cases its inevitable. In 100% of cases its a risky task. To me it sounds like you have an app that has started on the wrong foot, and maintained a steady course in the wrong direction. Most the problems you describe are solvable. Things like DB performance and browser compatibility should not take long to resolve. Browser performance can also be solved by limiting the number of browsers you support (nobody really uses IE6 any more and if they do they don't deserve to use your app). Other aspects like low productivity with current framework are harder to resolve as its a mental issue. I understand that from a developers perspective. However, you have to understand why your code base is at the state it is in. If you don't understand that, no framework, language or buzzword will help you. Is it because of bad design decisions? Code mistakes are one thing but bad architecture has a much more significant impact on a project. Understanding the root problem here is key. The rest of your problems are just symptoms of that. Here is what you should not do because it won't help: Don't add more hands to a project at this stage unless those hands are attached to a body with coding abilities much better than your best developer. Don't equate hours in office to productivity. Take it easy. Make sure everybody is as motivated as possible and that means understanding people have lives outside the office. Don't rush to do a rewrite because the devs think its the only way. There is almost never 'one and only way'. Here are things that might help: Invite someone external who is a specialist or a known figure in your particular platform/language/community (known and knows what they are talking about of course) who can review your situation with fresh eyes. They might be able to give you a new perspective and devise  a plan to resolve your problem as an outsider. Assuming you decided that a rewrite is indeed in order, take your strongest developer who is also the most pragmatic (most pragmatic takes emphasis here), or alternatively take the consultant from the point above, and have them prototype a new system for you based on your current business rules and in the new platform you're choose. Before they start meet up as a team to go over the architecture  and then meetup every few days to examine progress (not too often though). Do try to find that extra special developer who can basically act as your CTO or development lead. Someone who is experienced, can lead by example, and can make the hard decision on the development process. I can tell you from my experience that given a choice between two work places, I'd always go to the place where I felt a bit 'behind' compared to the people there. When you're ahead you have a smaller chance to learn something from your peers. Bringing someone very strong into the team will help the rest develop themselves. Try to break down the application into separate components. Then try to replace those that are badly 'broken' one by one. Its better than a full on replacement of the entire system.

Harel Malka

It sounds like .NET is the culprit. It may take some time initially to re-write your code in it, but the MVC4 framework separates UI from from the rest of your code. Read http://www.amazon.com/Refactoring-Improving-Design-Existing-Code/dp/0201485672/ref=sr_1_1?ie=UTF8&qid=1368480893&sr=8-1&keywords=refactoring by yourself first. It will highlight how to make the code more manageable without breaking it. You can refactor .NET code into MVC4 code gradually. This could be of interest: http://msdn.microsoft.com/en-us/magazine/jj991978.aspx That should reduce the synchronization issues. To solve the browser compatibility hell, consider http://nuget.org/packages/twitter.bootstrap.mvc4. You may want to find a qualified database performance consultant. It's a highly specialized field and expecting that from your overburdened developers might not be reasonable.

Leonid S. Knyshov

It sounds like you need two things. 1. A good project manager who can keep you organized and break things down into tasks for developers. This person should have experience as a web developer. 2. A highly experience web developer who knows a lot about a lot of technologies. I'd suggest hiring a consultant who can look over your product and give you a good direction with the right technology. A consultant because I'm not sure you'd be able to hire/find a full time person as an employee. With #2, one of your current developers should be a lead or senior person to handle this, but the fact that your asking here tells me your either not listening to them or none of your developers have the knowledge/skill to perform that task.

Matthew Van Buskirk

Rewrite is never a bad idea, most people avoid it and then a time comes with a complete deadlock, your to-do list exponentially increases and your customers will eventually leave your system. However, rewrite does not need to be done all at once, ever imagine how do people repair a road?, they block one lane, they create a diversion and they repair one lane at a time. Obviously doing all at once is bad because the traffic won't wait. Similar method can be applied in this way, You have a main domain MyDomain where your existing app is running. Create a subdomain, V2.MyDomain, and make your cookies persist authentication across multiple subdomains, stop using Sessions, implement proper authentication mechanism. Divide your application into modules and implement one module in MVC at once. Don't go for jQuery, or typical HTTP Post Back routine, implement client side JavaScript framework such as AngularJS, KnockoutJS or Atoms.JS (Disclaimer: I am author of Atoms.js), with any of these frameworks you don't have to worry about browser compatibility at all. ASP .NET MVC with Entity Framework will increase your productivity by 90% if you stop using stored procedures and move them onto MVC controller actions which are easy to maintain. Problem with Stored Procedure is you need separate talent or talent with multiple skills to maintain them. If you implement your app as single page app, with only AJAX calls to MVC controllers, you will have better turnaround as the speed of app will increase, things like client side validation and UI changes are way too easy then compared to full server round trips. Your module doesn't need to be completely separate, you can create hybrid app, part of functionality comes from old app, but for example internal pop ups, some of report links etc can be diverted to new app where they are created and maintained easily. Identify which pages (modules/links) need very urgent upgrade, migrate them onto MVC immediately, all you need to do is just update the source page referring link. Start maintaining new version for page by page. We have done this for last 3 years, our users never noticed the difference, but one by one, we migrated every page from legacy Web Forms to MVC with Single Page Applications and we are still doing it smoothly. Our users however do complain that why page X is slower then page Y, we just put that complain to ignore and we reply saying that in time, everything will be faster.

Akash Kava

Related Q & A:

Just Added Q & A:

Find solution

For every problem there is a solution! Proved by Solucija.

  • Got an issue and looking for advice?

  • Ask Solucija to search every corner of the Web for help.

  • Get workable solutions and helpful tips in a moment.

Just ask Solucija about an issue you face and immediately get a list of ready solutions, answers and tips from other Internet users. We always provide the most suitable and complete answer to your question at the top, along with a few good alternatives below.