My company is planning to outsource the development of a J2EE web application. We have invited 7 external consulting firms to bid for the project. Each of the 7 firms will be making a presentation to us in early July. What questions should we ask the firms? (I have 5+ years of Java experience already)
Well, you shouldtest that they do have a good working knowledge of Java and J2EE, particularly around areas such as architecture, performance, scalability, security and so on. If you're outsourcing the project with a view to maintaining it in-house in the future, you should also ask them how they will ensure that the system is as maintainable as possible. Look for use of industry standard techniques along with architectural and design patterns. Don't be afraid to ask how they would go about architecting the solution. Also, check for experience with the environment in which the application will be deployed, as well as experience of the business domain. As well as the technical issues, there are all the others such as quality, testing, documentation (UML vs. other), development methodology, management, etc but I think it's the technical Java/J2EE related issues that you were looking for information on. Hope that helps Simon
Thanks to all who replied. ORIGINAL MESSAGE: [ My company is planning to outsource the development of a J2EE web application. We have invited some external consulting firms to bid for the project. Each of the firms will be making a presentation to us. What questions should we ask the firms? ] REPLIES: -- 1) Who will maintain the app? 2) If the firm is going to maintain it, what happens if their company disappears? Do they leave you with the option of handing maintenance/upgrades/bug fixing responsibilities to someone else? -- Something to ask is what comes with the deal? If you don't have hardware and software to run this app on yet, you may want to pick a vendor that can provide it for free or a reduced cost. For example, IBM usually gives DB2 with WebSphere, and the software comes with a 90-day trial, so you can be up and running before you have to start paying for it. Another thing to remember (not really a question), is that the firm that can do it the fastest and the cheapest and provide all the functionality, is not necessarily the one you want to go with. You do actually get what you pay for. -- What insight will you have into the progress of the project? How will you know if something is going wrong and how soon will you know it? What will your remedies be? What documentation standards does the firms work to? What will be stipulated in the contract? Who will monitor this? What are their testing, verification and validation plans? What will be stipulated in the contract? Who maintains them? What are the costs of requirements changes? How are changes managed? During development? After initial release? Will the source code and documentation be held in escrow? Will you be litigating with a company in bankruptcy just when your customers need a new release? -- Delineate specific J2EE roles--web design, presentation, component provider, et al.--and obtain profiles of who will performing the work in each area, preferably with resumes. Although the cheapest bid is often not the best, some of the more spectacular consulting failures occur at premium prices. One firm much in the news recently had a habit of using lucrative engagements as a training ground for novices. A red flag is raised when you have relatively ordinary requirements and the prospect suggests a speculative technology, e.g. JXTA for an HR web portal. My impression is that established local consultancies are typically competent, reputable and as worthy of consideration as the more familiar national firms. -- [...] in general I'd look at what kind of framework the companies are using for the web application. Most web-side J2EE development these days uses a framework approach (such as Struts), just because it's much faster to develop than an all-custom code approach. You need to be comfortable with the choice of framework in order to maintain the resulting application. -- Well, you should test that they do have a good working knowledge of Java and J2EE, particularly around areas such as architecture, performance, scalability, security and so on. If you're outsourcing the project with a view to maintaining it in-house in the future, you should also ask them how they will ensure that the system is as maintainable as possible. Look for use of industry standard techniques along with architectural and design patterns. Don't be afraid to ask how they would go about architecting the solution. Also, check for experience with the environment in which the application will be deployed, as well as experience of the business domain. As well as the technical issues, there are all the others such as quality, testing, documentation (UML vs. other), development methodology, management, etc but I think it's the technical Java/J2EE related issues that you were looking for information on. -- Ask them for reference clients and named referees. Then contact those people..... (Give them advanced notice that you will require these at your presentations...)
Ask to see their coding standards documents. Don't take "Oh we use XXX for an answer "Ask to see the actual documents...
Make them quote for the project AND include two years maintainance. See how they feel about supporting their own code at a fixed price. Put them on penalty clauses if they screw up... --
Ask them "what do you do to make your work high quality?" as described in my note "Nasty Question" at http://www.multicians.org/thvv/nasty.html It's surprising how many teams don't have a good answer to this question. -- Questions to ask: 1. Experience 2. Customers 3. If they test your website for functionality and load 4. Do the developers test or do they have a QA/Software Test Team? 5. Do they guarantee their work? We used a company called ITX and they did a great job, I have contact information if you are interested. -- Ask them which area of the project will present the greatest difficulty. The answer should help in weeding out the idiots who are clueless. -- Ask them what kind of metrics they employ in their process. Ask them whether they can use the Extreme Programming methodology. Ask them whether they will force YOU to write the user documentation to the system BEFORE a single hour of their effort is spent (this is a great way to have a cast-iron requirements spec "in disguise"). Finally, only a sign a fixed-cost contract. --
1. How would you expect to work with us (what is their ideal scenario)? 2. Can your office handle VPN into our Network? 3. Would your team be willing to share team-lead responsibilities with a lead from our company? 4. What software engineering methodologies do you adhere/prescribe to? RUP? XP? Mixture? 5. Do you outsource some of the work to offshore resources? 6. What sets you apart from other vendors? What skills, experiences? 7. Is the team all experienced in Java/J2EE? How many junior/senior level developers? 8. How many J2EE projects have you implemented? What app servers? What IDEs? 9. What MVC framework do you like? (e.g. Struts, etc.) 10. What pitfalls have you learned from previous J2EE projects? What have you learned that you would leverage from previous projects? 11. What levels of specs (EJB, Servlet API, etc.) are your team members familiar with? 12. How easily can you bring on more high-level resources if need be? 13. Do they have User Experience (UE) people in house? 14. Are there any components you have already built that can be leveraged as part of this project? What components would you build for reuse as part of VSCD? 15. What frameworks do you like for object persistence? JDO? Entity beans? 16. Do you prefer J2EE or .NET?
Bonus: Please describe your company's prior J2EE project experience. What was the project scope and duration? Please describe the process that you use to select staff for the projects at your company. Please describe three "best practices" that your staff uses on software projects. Please describe the techniques that your company uses to reduce the risk of project failure. Please describe one of your prior projects that did not meet its schedule. How did your company handle the situation? What are the most challenging aspects of this type of project? Describe your company's approach for requirements gathering and analysis. Describe your company's approach for the project's technical design phase. Describe the techniques that your company uses to ensure the quality of the system. Describe the techniques that your company uses to build maintainable systems. Please describe the pitfalls that you have experienced on prior J2EE projects. Do you currently have the staff for this project �OR- do you plan to augment your staff? What percentage of your staff is based here in (our city)? Will the project's system architect stay with the project for the entire duration of the project? Please provide us with an overview of the technical architecture from one of your prior J2EE projects.