Experts Debate SOA, RIA, Agile, Quality, Open Source, Work Cultures & IT Education…
Project managers & architects from Cognizant, Infosys, i-flex & Persistent talk to IndicThreads about trends in software development. They discuss the changing nature of enterprise applications as well as the impact of RIA and SOA. They share their thoughts on Agile, project execution models, project irritants and also give their take on the quality of software education. Read the full discussion to gain meaninful insights into the Software Development scenario today.
Harshad Oak : Welcome to this discussion. Let me first introduce the participants to the discussion. Atul Kahate heads the technology practice, PrimeSourcing, the Services Division of i-flex solutions. Deepak Shastri is an Architect at Persistent Systems Ltd and has over 18 years of experience in designing and implementing software systems in various domains and technologies, Gaurav Awasthi is a Project Manager at Infosys Technologies Ltd and Subodh Kane is a Delivery Manager with BFS Practice of.Cognizant Technology Solutions . Thank you all.
Harshad >> Could you tell us about your current scope of work in terms of the technologies being used?
Atul : Our scope of work involves constantly looking at the current and future technologies and trends, and evaluating what seems to stay on and what is more of hype, and is therefore, likely to evaporate. Based on this, we try to map our internal as well as external technology focus in line with the other inputs received via a number of sources. The technology scope involves all kinds of technologies used to create financial applications, viz Java EE, SOA, Web 2.0, .NET, Mainframe, C++/UNIX.
Deepak : I am responsible to architect solutions by focusing on best practices and identifying patterns that can be reused. Most of the work is in J2EE including EJBs, RMI, Spring and various Presentation technologies.
Gaurav : Well, I am basically into J2EE stack of technologies. And my current profile involves application architecture, technology evaluation, performance evaluation and technical mentoring.
Subodh : The projects I manage deal with a wide range of technologies such as VB/PB, Java/J2EE, Struts, Spring, Hibernate, Oracle, Sybase and Mainframe.
Harshad >> Any trends in enterprise application development that you have noticed over the past year?
Atul : There is a lot of hype about SOA without sufficient action. Some businesses have made investments into SOA-based applications, but there still seems to be a lack of clarity overall. Java EE continues to dominate the scene, with .NET gaining focus for user-centric applications. There is a tough fight between the various RIA toolkits, and equal one between JSF, Flex, and Struts 2. On the RDBMS side, Oracle continues to be a comfortable winner. Also, EJBs seem to be making way for POJOs.
Deepak : I think the trend of building a service delivery platform seems to be gathering some buzz.
Gaurav : I think any enterprise development that is related to Web is affected by the RIA wave. The web2.0 has picked up very well too. In non-web applications and in web too, there is another trend of using open source much more that before. Open source, where multiple experts working across the globe develop collaboratively produce generally much better products that some of the best product dev organizations.
Subodh : Although not entirely new, the most conspicuous trend has been: ‘Get more development value for every $ spent’. Enterprises are trying to achieve this by (1) Improving developer productivity through the use of RAD tools, SDEs, plug-ins such as PMD, Checkstyles, and so on
(2) Finding open source alternatives to licensed software (3) Adopting Agile methodologies to improve success rate of software development projects
(4) Investing in PoC kind of projects to see how Web 2.0 technologies can help organizations work more efficiently, improve end-user/customer experience and thereby improve customer satisfaction
Harshad : Deepak, by noting a trend towards SDPs do you think IP based audio and video communications would be integral to most future software. Is the technology in place for such a shift?
Deepak : I would guess that IP-based multimedia communication will be a requirement in most software with a user interface. The current limitation to this is probably more to do with infrastructure than software.
Harshad >> What are customers asking for? Have requirements changed due to the Ajax, RIA, SOA or similar technology changes?
Atul : The whole focus is on better and better performance and security on the back end side, and great UI on the front end side. Of course, time to market is the chief driver, as ever. Reusability continues to be a demand as ever without knowing where and how to get there!
Deepak : Customers have asked to use Ajax and RIA without being specific. Applications are already using SOA.
Gaurav : Customers ask for everything that can exist. Yes, RIA has changed the web big time. The concentration from internet application has moved to a new level. Any web product that is launched has to be slick and swift now and that is made possible by Ajax and the like.
Subodh : There are mixed views on these technologies. Realizing the full potential (and benefit) of SOA is still on the ‘wish list’ of most of the enterprises. The experience has been that large enterprises are always cautious about adopting cutting-edge technologies. Ajax, RIA has been getting increasing acceptance. However, before recommending usage of such technologies on large projects, organizations have to think about factors such as the availability of skilled technical resources, maintainability, performance, stability, and so on.
Harshad >> What are the key things you expect from an RIA solution? Any solutions that you think already deliver on these requirements?
Gaurav : Basically a rich user experience with the agility of the desktop applications. There are a lot of things that collaborate to form a solution, and that could be Asynchronous requests, submission throttling, periodic refreshes etc. There are UI libraries and open source solutions to cater to this.
Harshad : The RIA space sure seems chaotic. It’s actually scary to think of the scenario when these 10s of different types of RIA solutions become legacy apps that nobody seems capable of maintaining. Hopefully efforts like the OpenAjax Alliance will lead to more standardization in the space and make it easier to decide the RIA path to take.
Harshad >> Whether .NET or Java EE is better for enterprise development, has been a debated issue for a long time. However now even the LAMP stack seems to have emerged as a contender. Your thoughts on which architecture you think is best suited for enterprise application development.
Atul : I have not personally worked on LAMP, so it is tough to comment. However, I have used applications based on LAMP, hosting huge amount of data, never crashing, and always providing excellent performance. However, I think there is still a lot of bias about Java EE or .NET in the minds of the corporate, from the point of view of better safe than sorry.
Deepak : There is no clear answer. However, LAMP does meet some requirements and provides better value.
Gaurav : I have generally worked in J2EE only and believe it’s the strongest contender. LAMP could be a good competitor but Linux is still not as widely used as Windows is.
Subodh : The choice of technology stack for an enterprise is a strategic decision – primarily driven by the enterprise’s business need.
Harshad >> Which software development methodology do you use currently? Any experiences with Agile and Extreme programming techniques that you can share?
Atul : No. We pretty much stick to the traditional SDLC model on most occasions. I think for Indian IT vendors working under the SEI-CMM norms, the maturity of thought process for other models is still not there.
Deepak: Agile with Scrum. We do use Continuous Integration and Test-Driven development, however the adoption has been slow.
Gaurav : Although we had been using waterfall for a long time but I think Agile is the in thing now. Yes we are following some practices of Agile in our current project. Like iterative development and Scrum meeting. But there is lot more Agile can offer.
Subodh : Of late, the use of SCRUM methodology is on the rise. My personal experience with SCRUM has been very positive. Especially in the IT services industry, where your team works with the customer teams and shares a joint responsibility for the success of the project, SCRUM is very effective. It creates a level-playing field, makes critical team-members accessible (due to 15-min daily SCRUM meetings) and expedites issue-resolution processes. Initially, the team feels that they are being micro-managed, but soon they get used to providing daily status and also see the benefits of the overall process.To make SCRUM effective, an organization needs to invest in training the teams and support the process wholeheartedly.
Harshad : That’s an interesting point you make Atul about CMM influencing methodology.
Harshad >> Do you see an increase in usage of opensource tools and components in your work? How do you decide which opensource software is acceptable and which is not? Any examples you would like to mention?
Atul : Surely, yes. Wherever possible, we use open source. Some examples are Linux, NetBeans, GWT, Ruby On Rails and MySQL (wonder if it would be open source, any more though), a few testing tools, etc. Any community-backed open source is acceptable. However, if something is coming from an individual, there is some amount of doubt.
Deepak : As customers seek better value, open source is bound to catch up even more. The acceptable criteria include maturity of the software and the community, richness and completeness of documentation including samples and user support.
Gaurav : Yes, definitely. There are lot of changes that open source has brought into picture. Generally we decide on the basis of functionality and technology obviously but it also depends on their license terms. We need to use an embedded HTML editor and so we are evaluating a whole range of those available in open source world.
Subodh : As I mentioned earlier, there definitely is a trend towards finding open source alternatives to licensed software.
Atul : I think, especially for the developer community, more the open source world opens to them, the better. The end solution that is delivered to the customer may still use a lot of licensed software. However, if the development can be done using open source and then tested on the licensed software (not impossible today in many situations), that would be the best bet. It would also help the Indian IT companies save a lot of costs in software licensing investments.
Harshad >> Some believe that Java is at the end of it’s evolutionary path and will soon give way to scripting languages like Ruby, Groovy, etc. Your thoughts on Java and scripting languages?
Gaurav : I haven’t had much hands-on with Ruby and Groovy. Can’t comment on that.
Deepak : I don’t know if that will happen in the near future. Scripting languages will be used in some scenarios but may not serve all enterprise software requirements.
Subodh :Personally, I have not used scripting languages such as Ruby, Groovy, etc. and will not be able to comment.
Harshad : So can we put down the recent spurt in interest and the flood of new scripting languages to being a cyclic phenomenon and not because Java is found lacking?
Atul : As mentioned in my response earlier, I think it is not possible to think about Java disappearing from the scene so quickly. On a lighter note, we have seen Sachin Tendulkar getting “replaced” by so many younger players in our minds and in the media only to see Sachin coming back with yet another memorable innings – somewhat reminiscent of what we are talking about, here!
Harshad : Maybe JavaFX is the double hundred we have been waiting for…
Page 1 of 2
Harshad >> What according to you are the top 3 factors which determine the technology to use for a software solution?
Atul : 1) Why should we use it? (In other words, prove that it is not a fad).
2) How easy it is for the developer community to learn, adopt, and experiment with it?
3) What are the areas that you could use to market the technology to the business?
Deepak: Features, Maturity, Availability of skills
Gaurav : Generally, in a software services organization, the technology and tools that we use are governed by the clients. So, clients decide what they want the s/w to be made of. This is generally cause the high end consultancy firms generally do their system study and propose technologies to be used. In situations, where we have a say, there are a combination of factors like, the complexity of the problem, the type of the problem, availability of skilled resources for that particular technology etc.
Subodh : The choice of technology depends on the answers to the following key questions:
1) Is the technology of choice effective in solving the problem at hand – does it speed up the process by providing off-the-shelf components as building blocks to form your solution?
2) Is the technology proven in a demanding production environment – can it address non-functional requirements of performance, stability, etc. satisfactorily?
3) Is it a widely available skill in the developer community or is it a niche-skill?
Harshad : Java has traditionally pitched that unlike a Microsoft solution, with Java there’s no vendor lock-in. How important is it for a solution to be based on open technologies (need not be open source) and not locked into a vendor?
Gaurav : I think it is important not to get locked in with the vendor. There are many areas where the vendor may not be providing the most optimal solution. Well, it also depends on the kind of project/problem one is facing.
Atul : I think it is very important if the vendor is not reputed/competent. For instance, if you are getting locked into IBM, Oracle, Microsoft, and so on, there should not be any problem. We know that these companies will deliver come what may. However, the real danger is getting locked into small time players. In such cases, it is better to trust open technologies. On a general note, of course, any day, open technologies would be better than closed ones, unless closed ones really do something that is lacking in open ones.
Harshad >> Software quality is often underrated as it does not seem to generate as much buzz as new programming tools and techniques. Any quality tools and techniques that are making a significant impact in your organization?
Atul : I think we need to bring in a lot of tools, such as code review tools that detect memory leakages, performance issues, security problems; testing tools that help in automating regression tests; performance analysis and monitoring tools; etc. Currently, a lot of this happens manually, if at all. This is where we lose a lot of time and energy.
Deepak : Nothing special. Static code analyzers, unit testing tools, mock objects.
Subodh : No particular tool. Recently, I came across an open source framework for test automation called Jameleon and found it quite interesting and easy-to-use.
Atul : I think sometimes there is a mentality issue as well. Many people do not like tools, because they feel that tools may not be good enough! It needs some sort of education and a lot of insistence on the part of technical leaders to imbibe the importance of technology tools to take some pressure of the humans.
Harshad >> Which would be the top three irritants in the execution of a project?
Atul : 1) Vague requirements 2) Unrealistic deadlines 3) Lack of appropriate hardware/software/environment for development/testing
Deepak : Lack of understanding of basic software engineering principles in developers, lack of dependability in leads and managers and lack of good tools to measure progress (and take corrective actions) of deliveries
Gaurav : Good Question. I would say, the changing requirements of the clients, the lack of quality engineers and shortage of time in producing quality software in a project life cycle.
Subodh : Nothing in particular…. As a PM you have to manage Cost-Schedule-Effort triangle to ensure promised deliveries on-time.
Harshad >> A few years back I had written a piece “IT Survivors: Staying alive in a software Job“. An overwhelming majority of the 100s who commented on the article felt that unrealistic deadlines and late hours were the thing that they hated most about their work. Why do you think that’s the case in India. Are things changing?
Gaurav : Deadlines are unrealistic not only due to the changing requirements but also due to partially or unskilled manpower available to the industry. On a different platform, it is also about the way Indians look at work. I have seen clients in the UK going for a vacation even during the critical times of their business. We can’t even think about this, probably because of the insecure background the working class of India comes from.
Atul : It is quite interesting. On one hand, many people in India keep complaining about long working hours etc, and on the other, they seem to waste so much of time that I sometimes wonder why they cannot complete their work in about 9 hours in a day. Many people like to start their working day at 10 AM or so with a breakfast and general discussions, followed by some work, by which time it is already lunch time. Work actually starts only after lunch, and then there is little wonder that they are in the office till 10/11 PM. Sadly, they take pride in this! I think, it is simply a question of prioritizing, time management, and understanding work-life balance. I understand that at times, there are very stiff deadlines, and many people have to also work in other time zones and so on. However, that does not mean that you become someone who has no existence outside of your home and office!
Harshad >> What’s your take on IT education standards in India. Do you find freshers ready for real world projects? Is there anything that you think is amiss?
Atul : Not at all. They are taught the theory too much, and that also incorrectly many times. Even if they come only with theory, but then really solid foundation theory, then also it is acceptable. However, what we actually get is a dismal mix of weak theory and horrible practical knowledge. They often end up doing projects from which they do not learn anything of real practical use, nor the project itself is useful to anyone! They seem to be still in the world of C/C++, when we are talking of even Java possibly being dead. No body looks at crucial issues such as design, architecture, performance, security, application plumbing, new trends. The syllabi are horribly outdated, the teachers are going through motions, and in the process, everyone suffers!
Deepak : While there are exceptions, most freshers are not ready for projects. The time to groom them could be as much as 3 months. The course work/curriculum may need revision.
Gaurav : I am of the opinion that although IT education is omnipresent in this country but the people that are reaching the industry are not completely ready for it. Basically, unless the academic institutes have industry affiliations and/or high quality research exposure, it’s tough to get the skilled s/w professionals ready for the industry.
Subodh : IT education in India is of acceptable standards. You will never get freshers ready for real-world projects, simply because it needs a change in the mind-set from being academic to being pragmatic. Each organization has a unique culture, so freshers need to be ‘inducted’ into the organization; they need to be exposed to the processes and best-practices being followed, and also to real-world problems that are being solved by the use of software solutions.
As long as the educational institutions ignite the desire for continuous learning in the students, you don’t have a problem – if they become ‘factories’ that churn out software engineers, you have a serious problem.
Atul : I think it is a question of big confusion. The academicians are today not sure what to teach, and how. Some so-called experts in the industry are raising questions such as “Do strong theory and fundamental concepts matter?” That adds to the confusion. The impression that academics gives to students is that they must be very bookish. The industry tells them that they must be very practical. Sadly, no one tells them that it should ideally be a combination of the two, and achieving it is not impossible at all!
Harshad >> It’s been a pleasure taking to you all. I am sure readers of this discussion would have received valuable insights into the software development scene today. Thank you all.
Discussion conducted by Harshad Oak, founder of Rightrix Solutions and editor of IndicThreads.com. He is author of 3 Java books, several articles and is an Oracle ACE Director and a Sun Java Champion.
Readers – If you agree / disagree with anything said here or wish to add an important missing point, please use the comments section below to have your say. Thank you.