Discussions

EJB design: Why are we still coding J2EE apps by hand?

  1. Why are we still coding J2EE apps by hand? (13 messages)

    Is it just me or has there been a failure to provide non-technical and semi-technical people with the ability to deliver functioning and meaningful J2EE applications (web-based)? Have I missed the boat on this one? Are there good tools out there that I have not seen? And I am not talking about lets take a UML editor and keep our autogenerated code synchronized with a UML model. Non-technicals dont want to learn UML. Or is it the opinion of the community out there that we need tools to be the dumb extensions of smart developers and architects. Is this the way it should be? Does anyone know of any robust tools out there that would, let's say, allow a business analyst to create a decent web application based on requirements?

    Thanks for any insight.

    Threaded Messages (13)

  2. If your business analyst is not a technical person then I'm afraid for the business he is analysing.

    There is an inherent complexity to the enterprise computing that can't be dumbed down. You can try to hide it behind the wizards, pretty pictures and smart defaults, but it's going to creep up, sooner or later, and when that happens the whole "Barbie and Ken School of Enterprise Computing" simply shatters.

    I'd say it's pretty much like an auto-pilot in a plane. When it works it works and you can have trained monkeys playing with cockpit buttons. When it doesn't, and you are not "technical" enough... Well, you die.
  3. I don't agree[ Go to top ]

    I am a tech guy, and sometimes it bores me how difficult is to do some very stupid things. I have tried many, many tools out there and I don't think any of them is a complete (and I mean complete), good quality, extensible J2EE tool, even the ones with 2K+ price tags.
    I'm talking only about J2EE tools, Eclipse is an excellent java IDE, but it's just that. I haven't found plugin(s) with the qualities mentioned.
    My opinion is that xdoclet is the best tool, but sometimes it takes time to do some things, and sometimes things are not simple. And you have to be very aware of the tool at the time of modeling to get things done.
    Greetings,

    Nicolás Dobler
    Argentina
  4. I agree. But.....[ Go to top ]

    I agree with you that the state of things today is that you cannot solve anything but the most generic problems using a non-technical person. Shouldnt this problem tend to go away over time? At the pace we are going..one will still need CONSIDERABLE skill to design and develop an enterprise application for decades to come. The problems that need to be solved are the same problems that are solved over and over.

    Specifically...
    Why is it that we have few tools that do little more than take a few parameters, match them up with a template and then create a "shell" for code (like XDoclet). Are the business needs so complex that the shell must be modified by a talented person to stuff more java (or other language) into it. Aren't most systems (exluding the very real problem of legacy integration needs) simple this...

    1. An interface.
    2. Some business logic.
    3. A persistent storage mechanism.
    4. Plumbing to support scalability, transactions etc. etc.

    So let me challenge you. What one business need out there is so complex that it will always require software developers as opposed to a better tool set?
  5. Comment for Dejan[ Go to top ]

    You mentioned that "If your business analyst is not a technical person then I'm afraid for the business he is analysing."

    Would you say the same thing for the design engineer that designs consoles for automobiles. I am certain that he does not know a thing about how radio waves are converted into sound so that the car occupant can hear music. Yet he is able to design an effective solution. Are you saying that the way we produce software is so difficult that we can never have that kind of abstraction of component. I still see developers today (against their will) being forced to write the best code they can within an environment that is horribly inefficient. Either the framework is a tangled mess of spaghetti and/or the process is a mess with constantly changing requirements. Isnt the real problem the environment that developers are asked to operate within?

    Looking forward to your comment.
  6. Comment for Dejan[ Go to top ]

    Well, as you said yourself, design engineer is an engineer and thus a technical person by definition. The design of the panel is also more or less orthogonal to it's function. That's pretty much like having someone with major in applied arts to design your web frontend - it works as long as he does only that and nothing more.

    So, to leave consoles aside, would you drive a car where breaks were designed by a not-so-technical person who was "unwilling to learn" all that tedious stuff they teach in math and mechanics classes?
  7. Missing the point[ Go to top ]

    Respectfully I think you are missing the point. We definitely need people that pay attention in math class. We also need these people to apply those smarts to solutions that are reuseable - by non-technical people. My argument is that those of us that are technically trained are solving the same problems over and over and over. The RAD tools out there are only biting around the edges of this problem. Is it really the case that most of the technical world believes that this problem is not curable. Maybe there is a little self-preservation at work here. But I for one believe that a better way can and will be created.
  8. Missing the point[ Go to top ]

    Been a while, Looked at one of these products called Virtual Enterprise. The way it worked was you define your object model(class diagrams) based on your database and just do activity diagrams and run it, at runtime it would read all those mata object and generates jsps for you using xslt. I never liked it because you never have control of code behind it. All you do is mess with diagrams. how dumb.
    Respectfully I think you are missing the point. We definitely need people that pay attention in math class. We also need these people to apply those smarts to solutions that are reuseable - by non-technical people. My argument is that those of us that are technically trained are solving the same problems over and over and over. The RAD tools out there are only biting around the edges of this problem. Is it really the case that most of the technical world believes that this problem is not curable. Maybe there is a little self-preservation at work here. But I for one believe that a better way can and will be created.
  9. Missing the point[ Go to top ]

    oops here is the URL http://www.intelliun.com/
  10. Missing the point[ Go to top ]

    If I'm missing your point I guess I should make mine. ;)

    There are few non-technical people I've met that have analytical abilities on par with the class of the problems you meet in todays enterprise computing. And those few certainly didn't have "I don't want to learn anything" attitude you talked about in your first post. For all purposes they were "technical" or could be if they wanted to. I also don't believe anaylitical abilities can be thought - they can be sharpened, yes - but only if one is already capable of it in the first place.

    Not everyone can play a quarterback, not everyone can solve enterprise problems. You could have me "playing" a quarterback by throwing 3-4 real ones in front of me trying to keep me in one piece and you could have the guy whose place I took sit in my office and pretend he is "programming" something - I'm just not sure what would be the point of exercise.

    There is no "requirement" for quarterbacks to be 7 foot 400 pounds type of people, it's just that they do their job very good when they are. There is no "requirement" for enterprise programmers, designers and analysts to be "technical" type of people, it's just that they do their job very good when they are.

    Anyway, you should look at SAP and such, they are going the way of "reusable, configurable business components". It's just that they are not very non-tech friendly. Considering the class of the problem - no wonder.
  11. Good Point[ Go to top ]

    I think that you have made some very good points in your latest post. The problem is that I have not done a very good job describing the problem that I would like to be solved. Let me try one more time from a different angle.

    Lets talk about the simple case of a use case that states:
    "The user will be able to view a list of contacts. From this list the user will be able to select individual contacts. When an individual contact has been selected the user is presented with a form containing the data specific to the selected contact. The user can then make changes to this data and save these changes if desired."

    This would be as complex as it should get for the business analyst. But today in most organizations this kind of use case almost always results in brand new custom code being created by hand. I know it cannot all be automated but at least some of it should be.

    Thanks
  12. Good Point[ Go to top ]

    It sounds far to simple, so I guess your business analyst is not a techie. But it's ok, I have some questions for him. ;)

    "The user will be able to view a list of contacts. From this list the user will be able to select individual contacts. When an individual contact has been selected the user is presented with a form containing the data specific to the selected contact. The user can then make changes to this data and save these changes if desired."

    Which contacts, what data should be shown per contact (some data needs to be calculated and is too expensive to show in long lists). The list can be very long, should there be some searching/sorting? Do we allow searches that seem too loose and might kill the server and network returning millions of rows? If no, how exactly should I tell which search is too loose. (I can do it any way you want, but if we kill the server again, I'll say you wrote the requirement - but don't worry, nothing personal) Do we sort server or client side? Are we aware of the consequences of the choice?

    What database, we have several contact databases, that are semi-auto synced once a month except when Bob is sick or on a vacation. We can try to merge them on request but it'll be slow and we can't guarantee the results.

    Due to the legacy problems with merging old department data contacts database is not 100% normalized, we have the same redundant data in several tables. It's usually not a problem but some old records are out of sync and it's sometime hard to tell which one of the redundant columns is the "good" one. How do you want it solved? (Yes, we could clean it up, but management can't decide which department got it wrong in the first place)

    Typically, not every user is allowed to see all the contacts and some he can see but not change. For the ones he can generally see and change some fields may be hidden or readonly.

    Do we use pessimistic or optimistic locking? With optimistic locking should I check the changed columns or all of them? Changed data might be split between serveral servers and we can use 2PC and be safe and slow or pretend nothing can go wrong and do it fast. Your choice.

    Shouldn't data changes be logged/versioned?

    -----------------------

    I guess I could think of some more stuff, but this should be enough. :)
  13. These are all important issues....[ Go to top ]

    I agree with you on all the points that you have raised and I will use them to illustrate my argument. Is it not true that we have all (us techies) solved all of these problems and more at least one time. Let's use the search example of returning a million rows of data and blowing gaskets on the server. Shouldn't the solution to this problem have become a standard part of the framework so that one can NEVER ask for a million records. The theory here is solve it one time and never solve it again. I do think that 80-90% of the use cases that are defined by BA's are the same old problem resolved over and over. As for the other 10% I think your argument is correct. There will always be that little twist in the requirements that need the attention of a techie.

    Thanks
  14. These are all important issues....[ Go to top ]

    Well, in my questions to your business anaylst I wasn't asking him how to implement stuff and I never said I need to actually write any code to support it, I just asked him to make a decision _what_ needs to be done. Decision making is part of the analysis process and it can't be done if you don't understand the tech side of it.

    If you have your techies solve all the problems I mentioned, do all the decision making for your anaylists, then yes, you can have your anaylists write deep stuff that says "some data needs to be edited by someone somehow", but I'd say that 90% of the work is then done by techies.