Archive for the ‘ Object Oriented Principles ’ Category

Interview/Exam tips for Java developers in Australia

I have some modest experience in job searching in Australia as a Senior Java Developer. I would like to share some of my experiences which might help you within similar context. You will need some special considerations when you are trying to get jobs in Australia. Here, market is very much influenced by job agencies.

Within an organization, usually when someone leaves, or company has some new tasks to be done, it looks for the resource who has the specific skill sets. Now, problem is, in reality, you don’t get exactly what you want. And, so it should be OK if someone has most of the skill sets, but one or two is missing. In Australia, job agencies, will be looking for exact match, even though sometimes it is highly unlikely to be found!

This primary filtration which is done by these non-technical (they have no clue about the difference between java and javascript) agents, usually creates a special challenge for the job seekers in Australia. So, what you can do?

Cover Letter
Go through the job description very carefully. Pick ALL the keywords they used to describe the skill sets that they are looking for in prospective candidates. Prepare a cover letter where you will write separate paragraphs for each keyword explaining how much you know and your experience with the technology/tool.

You might also have to re-arrange your CV to highlight your experience on the required skill sets. Now, there is a format for CVs in Australia. Basically, it includes a section where you state your ‘Key Transferable Skills’ – that is something valuable and readily usable by your prospective employer. So, in one job, having experience with ‘Financial technologies’ might be very important to include, where as in another job you might highlight your experience and certifications as SCRUM Master.

Talk and impress
Another important thing is, talk to the agents and better be confident when you do it. It is very important that you impress them first. When they are impressed, only then they will send your CV to the actual clients, otherwise you are not even in competition.
But, if you are applying for jobs which are advertised by the company itself – equation is different. But, still I would suggest to follow the usual rules that I mentioned above.

Now, you got the call. How do you prepare?

1. You should have good understanding of most of the Design Patterns (GOF) and specific experience using a few by yourself. Should be able to explain where and how these patterns have been used in Java ecosystems (within JDK, Spring, Hibernate, etc.) Here is a relevant discussion > What design patterns are used in Spring Framework?

2. Should know some common best practices for OO development. Like SOLID principlesSOLID Principles in Wikipedia

3. Should be able to write code using at least with some common searching and sorting algorithms.

4. Should be able to code without internet but with reasonable references if needed to produce basic things that you claimed in your CV. Like, some crud with an ORM (jpa/hibernate), some rest/web service, etc. It could be some bug fixing as well in a given code base.

5. SQL queries. Like joining (inner or left outer, self-join, etc), performance tuning for SQL, etc.

6. Should be apt on most popular java frameworks like spring and hibernate (yes, I know, you know – these are basics, and that’s why everyone will try judging these skills and you better be prepared well on these). And, for web frameworks ideally you should have experience with Spring MVC, JSF and optionally with Struts.

7. Javascript. Yes, even Java developers should know Javascript. Do not assume you know this language. Do not depend on your copy-paste experience. You should learn it well. Try some advanced topics (i.e., Advanced JavaScript Fundamentals Video) and most importantly try to learn and work with AngularJS 🙂 – it’s a hot cake!

And then, there are some special skills like, Message Queues, JVM tuning, etc. Well, the list is actually endless 😦 ..But, all I wanted to do is to put together that is very common, and if you are prepared with these, you should be benefited almost surely 🙂


What kind of problems are being solved in an Enterprise Application?

And how they are solved?
For a banking application, a bank, account, customer, etc. entities are created to mimic the real world. It is the maker’s duty to simulate the business environment. Entities are the characters. And the actions need to be incorporated by this or that way. Then, users of the application will use it like puppeteers manipulate their puppets. These actions are recorded for calculation and reconciliation. System is there to precisely measure the deals, which are basically measurable human interactions for the sake of economic interchanges. And, essentially system is needed when volume of these interactions are huge. And, huge number of interactions is part of being an institution. Thats why an enterprise application is needed by institutions. So, there are two properties of institution’s actions because of which a system can mimic them and become useful. One, these actions have measurable properties. And, two, number of these actions are huge.
If it is logically expressible it can be replicated in a system. System makers’ task is to extract the necessary entities and right logic of the real world businesses, and write the code which will have the capability to mimic the actions as many times as needed
and produce the measurable effects with accuracy.
Note that, to the System makers, the job do not have any ethical color. Their job may end up helping to do something which will not in favor of the values they have, but that is always an indirect effect. Other than having this separation, the problems they solve
keeps them very busy. Among themselves, they have a competitive energy while solving these pure logical problems. Among the developers, they feel the joy of
being powerful and magical. And, they are well paid.

Like, object oriented programming, if one writing [class] talks about [deals with] more than one topic, then it is breaking a core principle. But, who cares?

Ethics is everywhere. Putting us into positions to be judged. People use it to defend themselves and attack others.

Challenge of an enterprise architect is to mimic the measurable and logical business interactions. And, for this, why transaction script is less useful for complex/bigger business problems and model driven design is more suitable? Why object oriented principles
are most suitable to mimic the business problems? Is it that, object oriented principles are most capable to capture the essential nature of business actions? Probably a philosophical investigation is necessary to justify this assumed claim.
Is it possible to identify different kinds of real world situations where, entities/identities are less important, and instead actions are the main concern [when one wants to simulate that situation] ?
Is it so that enterprise application is to serve self esteemation [to know my profit and loss] and clarification [so that I won’t be caught by the police] for an enterprise? And thats the reason why the design has to be entity-centric? To demarcate and maintain the
responsibilities of identities?
So, it is not the purpose of OOP to have the ability to capture the nature of ‘Business’ philosophically, but to serve the business practically. Here, philosophic is the synonym for better understanding and practical is the synonym for fight for existence.
Where as concepts of cohesion and coupling captures the urges to reflect the nature of identies, inheritance and polymorphism is there to maintain the categories and thus absorbing more control [from a central location?].