• Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Perspective on overengineering.

 
Carl Jokl
Greenhorn
Posts: 11
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I am pretty close now the complete with my assignment for SCJD. I have managed to complete all the requirements without any particular difficulty. My concern though now is in the realms of what constitutes over-engineering.

Over-engineering is one of those great things which tends to be in the eye of the beholder. It is not really an absolute but a matter if individual perspective.

That said I am concerned as to where Sun would draw the line at over-engineering and under what grounds it would be considered worthy of failing an assignment.

I think a lot of the assignments follow something of a similar structure without having to go into the specifics of what I have been asked to do. Data handling of a data file. Creating a locking threadsafe server. Creating a gui client. Communicating either with sockets or RMI.

Looking at the data issue for example. I could have hard coded everything to very explicitly work with only the exact record structure specified. Or as I have done make it flexible so that records are loaded dynamically from the schema. But would this be seen as over engineering. It makes things more flexible and dynamic. The GUI is able to build the display based on the structure of the record rather than being hard coded.

I don't really care about not getting extra credit for features which were not asked for. I just don't want to fail due to accusations of over engineering. At the end of the day I have little money and am funding this certification out of my own pocket. There are those members on here who probably have a better feel for how the certification and grading experience works in practice. Any insight would be helpful. I don't need technical help as such just perhaps a higher level perspective.

Thanks.

Carl
 
Roel De Nijs
Sheriff
Posts: 10662
144
AngularJS Chrome Eclipse IDE Hibernate Java jQuery MySQL Database Spring Tomcat Server
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi Carl,

First of all: welcome to the javaranch!

Carl Jokl wrote:I am pretty close now the complete with my assignment for SCJD. I have managed to complete all the requirements without any particular difficulty.

That's already a massive achievement

Now back to your concern about over-engineering. I also didn't hard-code my database schema and read it dynamically, giving me a lot more flexibility. I also used the dao factory pattern to be able to switch very easily from database system (in the future). Both decisions I covered in detail in my choices.txt and I passed.

My opinion of the grading process is: if you meet every "MUST" requirement, you won't fail automatically. If that is ok, every approach / solution will be acceptable. You won't get any extra points for it, maybe lose some points because your solution is a bit too complicated (reading the database schema dynamically is not too complicated for example), but you'll never fail. And be sure to argument in your choices.txt why you created that solution and not another (more straight-forward) one. Like I did with my dao factory pattern, because that's also a bit over-engineering for this assignment.

Hopefully this comment was helpful to you and cleared your a bit.

Kind regards,
Roel
 
Carl Jokl
Greenhorn
Posts: 11
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Reading through the comments on the different threads in this group I wonder how much work I may still have to do. I have got the requirements working as such but still have ahead the process of going back through and adding extra comments as needed or fixing any typos in JavaDoc not to mention being sure to write a thorough set of unit tests to make sure every thing works exactly as it is supposed to especially the locking mechanism. It seems to me that the locking mechanism is the hardest part to score highly on but I wonder if with enough hunting I can find out what the ultimate locking solution is. I currently use a Lock class built into Java which if it does what the documentation says it does should do the job but I have to write thorough unit tests to make sure it is working properly.

Locking + RMI could also prove to be a headache. When a request is coming in remotely then it is unknown what thread it will run on on the server side which might prove problematic for locks. This depends if locks are allowed to be unlocked by a different thread from the one which locked it. A very different situation from when multiple threads are trying to access the data code in the same VM.
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic