<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Manjit's Musings on Online Startups and Web Technology</title>
	
	<link>http://www.msjtech.net</link>
	<description>My take on E-Commerce and the Technologies used to enable it</description>
	<lastBuildDate>Wed, 03 Feb 2010 15:21:56 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/ManjitsMeaningfulMeanderings" /><feedburner:info uri="manjitsmeaningfulmeanderings" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>How to be a better programmer</title>
		<link>http://feedproxy.google.com/~r/ManjitsMeaningfulMeanderings/~3/Hel13Pr8DsU/</link>
		<comments>http://www.msjtech.net/be-a-better-programmer/#comments</comments>
		<pubDate>Wed, 03 Feb 2010 15:21:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.msjtech.net/?p=151</guid>
		<description><![CDATA[Becoming a better programmer Following on from my previous article top 8 tips to get a job in programming I’ve decided to look a bit further into what steps you can take to actually become a better programmer. Below I’ve outlined some of the ways you can be transformed from a lowly code monkey to [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<h2>Becoming a better programmer</h2>
<p>Following on from my previous article top 8 tips to get a job in programming I’ve decided to look a bit further into what steps you can take to actually become a better programmer.<span id="more-151"></span> Below I’ve outlined some of the ways you can be transformed from a lowly code monkey to a silverback code gorilla! (Sorry – the jokes don’t get any better)</p>
<h2>Frameworks and other languages</h2>
<p>Learn other frameworks and languages and see how they do approach problems and complete tasks and compare it to the way you currently perform the same tasks. This not only gives you new perspectives but it also prevents your skill set from stagnating and therefore leaving you pigeon holed to a particular skill or technology.</p>
<h2>Sharpening the saw</h2>
<p>Never stop learning and <strong>Sharpening the saw</strong>. Always try and leave some time perhaps daily or weekly to read blogs, websites and books. Continually finding and learning new information is fundamental to being the best programmer you can be.</p>
<h2>Pair programming</h2>
<p>Pair programming is a very good way of seeing how people do things differently to you, whereby allowing you to pinch other people’s good ideas and incorporating them into your own. This is one of my favourite techniques and I’ve had a lot of success with it.</p>
<h2>Read other peoples code</h2>
<p>Reading other peoples code may sound more like a punishment than something you would want to do, but doing it can provide you with great insights into how other people write code and help you improve your own code.</p>
<p>Writing comments and documentation can also be useful &#8211; especially in a commercial environment where writing comments can help people understand the code quicker.</p>
<h2>Teach/Mentor</h2>
<p>Teach/mentor other people, doing this will help consolidate the knowledge that you have and also perhaps highlight areas in which you need to refresh your own knowledge.</p>
<h2>Work on projects that capture your imagination</h2>
<p>At some point we all feel like we’re stuck in a rut, maintaining and debugging the same bit of code day after day. In an ideal world we’d be able to move onto other projects that may interest us more, but that may always not be possible.</p>
<p>I have two suggestions to help for projects to work on:</p>
<p><strong>Get involved in an open source project </strong></p>
<p>Working on open source projects can expose you to new ideas and people that you may never have met normally. It can also help you regain your enthusiasm for working on projects that caputure your interest and your imagination.</p>
<p><strong>Create your own project from scratch</strong></p>
<p>At work you’re often in the situation where you end up working on just one piece of code or you’re used to having the entire infrastructure around you, working on a project from scratch forces you to think about things that you would otherwise take for granted.</p>
<h2>Learn to touch type</h2>
<p>Not necessarily an obvious one but having the ability to touch type actually has a big impact on your programming ability. It makes you much more productive and allows you to cover more ground. Not worrying about which keys you have to press lets you focus on the actual process of programming.</p>
<p>What has become apparent to me is that there are many different ways of improving your programming ability, some obvious and some not so. I believe that fundamentally there has to be a strong desire to want to improve and you have to be prepared to put some real effort in on your own time.</p>


<p>No related posts.</p><img src="http://feeds.feedburner.com/~r/ManjitsMeaningfulMeanderings/~4/Hel13Pr8DsU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.msjtech.net/be-a-better-programmer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.msjtech.net/be-a-better-programmer/</feedburner:origLink></item>
		<item>
		<title>Advantages and Disadvantages of Using Hibernate</title>
		<link>http://feedproxy.google.com/~r/ManjitsMeaningfulMeanderings/~3/8MILflvf5Pc/</link>
		<comments>http://www.msjtech.net/advantages-and-disadvantages-of-hibernate/#comments</comments>
		<pubDate>Wed, 18 Nov 2009 19:08:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.msjtech.net/?p=19</guid>
		<description><![CDATA[In this post I will go over some of the main advantages and disadvantages of using Hibernate. You may be thinking about using it or maybe you’re trying to persuade your manager to let you use it.


No related posts.]]></description>
			<content:encoded><![CDATA[<h2>Some reflections on using Hibernate</h2>
<p>In this post I will go over some of the main advantages and disadvantages of using Hibernate. You may be thinking about using it or maybe you’re trying to persuade your manager to let you use it. Or maybe you’re looking for a way to impress a girl on a date by showing off your Hibernate expertise! Probably not the last one actually…&#8230;<br />
<span id="more-19"></span><br />
<br/></p>
<h2>Advantages of using Hibernate</h2>
<h3>Better than using raw JDBC</h3>
<p>Hibernate provides an easy way of mapping your objects to your tables, so you don’t have to write JDBC calls every time you need something from the database. Instead you get to deal with objects and write nice queries using HQL (Hibernate Query Language) where you write queries using objects instead of tables.<br />
<br/></p>
<h3>Creates a bridge between the objects in your application and the database</h3>
<p>When you&#8217;re programming in Java you are programming in an object orientated manner where every component is viewed as an object. However when dealing with databases you are dealing with a more mathematical model, hence mapping between the two is tricky. This issue is more commonly known as the <strong>object-relational impedance mismatch</strong>.</p>
<p>Hibernate resolves this by allowing the user to think of any persistence related tasks using entities or objects instead of having to think about rows and tables.<br />
<br/></p>
<h3>Layer of abstraction</h3>
<p>Having an extra layer between your database and your application means that if you ever need to change anything database related such as a table name or column you only have to do it one place, that would be much trickier if you had just been using JDBC.<br />
<br/></p>
<h3>The Standard in ORM</h3>
<p>Hibernate is considered to be the accepted standard in object relational mapping and is also an implementation of the Java Persistence API which is a key part of the JEE platform.<br />
<br/></p>
<h3>Established framework</h3>
<p>Hibernate is an open source framework has been around for many years, there is lots of development activity and has been used on many different projects. Hence this reduces the risk that it will become obsolete any time soon and that learning it would have been a waste of time.<br />
<br/></p>
<h2>Disadvantages of using Hibernate</h2>
<h3>Large object graph</h3>
<p>If you&#8217;re not careful you can end up loading a large number of objects from the database which then reside in your memory.</p>
<p>One approach to resolving this is by using lazy loading, which has a few of its own caveats.<br />
<br/></p>
<h3>Can be a pain with complex legacy databases</h3>
<p>Hibernate works best and easiest with a brand new database, attempting to use it on an existing legacy database can be quite a difficult task. You end up having to use composite primary keys and large numbers of native SQL queries.<br />
<br/></p>
<h3>Steep learning curve</h3>
<p>It is quite easy to do the basics in hibernate but to really use hibernate well you need a good knowledge of ORM concepts, the way mappings and the session works and also more advanced concepts such as caching, lazy loading and fetching strategies.<br />
<br/></p>
<h3>Performance optimisation</h3>
<p>Trying to optimise performance at the database level is a bit trickier with Hibernate due to the fact the SQL that is executed is actually generated by Hibernate, hence you are not able to just go in and adjust the SQL accordingly.<br />
<br/></p>
<h3>Issue when using with a Web/MVC application</h3>
<p>Lazy loading is the big gotcha in MVC applications that use Hibernate for their persistence. All you want to do is load a collection of objects and display them on the page, but for some reason you keep getting a LazyInitializationException. The root cause of this is that the logic of the application has completed and session has been closed before the view was completely rendered.<br />
<br/></p>
<h2><strong>Conclusion</strong></h2>
<p>Hibernate is an excellent framework to use for ORM based persistence, but as with everything in life there is a cost involved. Also there are alternatives such as iBatis and Spring’s JDBC framework that are worth looking at.</p>


<p>No related posts.</p><img src="http://feeds.feedburner.com/~r/ManjitsMeaningfulMeanderings/~4/8MILflvf5Pc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.msjtech.net/advantages-and-disadvantages-of-hibernate/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.msjtech.net/advantages-and-disadvantages-of-hibernate/</feedburner:origLink></item>
		<item>
		<title>Benefits of Using JSF</title>
		<link>http://feedproxy.google.com/~r/ManjitsMeaningfulMeanderings/~3/a-frT-NYa1M/</link>
		<comments>http://www.msjtech.net/benefits-of-using-jsf/#comments</comments>
		<pubDate>Fri, 27 Mar 2009 00:43:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[JSF]]></category>
		<category><![CDATA[Web Frameworks]]></category>

		<guid isPermaLink="false">http://www.msjtech.net/?p=130</guid>
		<description><![CDATA[How many Frameworks does it take to change a light bulb&#8230;.. Variety is definitely one word that comes to mind when thinking about Java based Web Frameworks, since the &#8216;pre-historic&#8217; days of Struts there has been an explosion in the number of frameworks available. One of the earliest successors to Struts was JSF. JSF has [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p><strong>How many Frameworks does it take to change a light bulb&#8230;..<br />
</strong><br />
Variety is definitely one word that comes to mind when thinking about Java based Web Frameworks, since the &#8216;pre-historic&#8217; days of Struts there has been an explosion in the number of frameworks available.<br />
<span id="more-130"></span><br />
One of the earliest successors to Struts was JSF. JSF has not had an easy time, for starters there were many issues with the JSP integration and due to the way that the JSF life-cycle worked, templating tools such as Tiles and Sitemesh were incompatible. However JSF came through the  problems and has developed into one of the most mature and complete Web frameworks available, plus with a 2.0 release in the works things are looking pretty good.</p>
<p>Having used JSF in anger on a number of different projects I felt I should write a post discussing some of the things I really liked about the framework  and also some of the areas where it is in need of improvement.</p>
<p><strong>Benefits of JSF </strong></p>
<p>JSF is a standard, it has the backing of the specification JSR &#8211; 127.  Vendors such as Oracle, and IBM have got a lot of incentive to support it. This has lead to the availability of a large number of high quality third party components. It is also worth noting that I have observed considerable JSF adoption in larger companies in particular, despite the overwhelming number of high quality alternatives.</p>
<p>JSF is view independent, therefore you are not tied to just using JSP&#8217;s as your view technology. I believe this has been a tremendous benefit as a newer templating language in the form of Facelets is available, which has made development in JSF much easier.</p>
<p>You can access beans directly by their names as opposed to another more convoluted mechanism.</p>
<p>JSF adopts the POJO model, whereby your bean doesn&#8217;t need to extend any other class, as is the case with Struts. This leads to cleaner more decoupled code.</p>
<p>Validation is very easy to do in JSF. One of my favourite aspects is the generic validation that it offers. For example if you have an age field you can do the following:</p>
<pre class="displaycode">&lt;h:inputText id="age" value="#{UserRegistration.user.age}"&gt;
 &lt;f:validateLongRange maximum="150" minimum="0"/&gt;
&lt;/h:inputText&gt;</pre>
<p>There is a large and active community and numerous components available. RichFaces and Icefaces are particularly notable but there are many others. There is lots of useful reference material available, and many active forums on the subject, most notably the Sun and Javaranch forum.</p>
<p>There are multiple implementations of JSF which means that you are not tied to one implementation.</p>
<p><strong>The Problem with JSF</strong></p>
<p>Having said all of the positive things above there are still many ways in which JSF could be improved:</p>
<p>There is still more XML configuration than I would like, especially when you compare it to some of the newer frameworks such as Wicket and Struts 2.</p>
<p>No support for bookmarking URLs</p>
<p>Creating new components is way too complicated.</p>
<p>Navigation rules are defined in an XML file, which can grow and become fairly complicated and brittle as the application becomes more complex.</p>
<p><strong>So where does that leave us</strong></p>
<p>In conclusion I would say that JSF has come a long way since the release of the first version, and thanks to complimentary tools such as Facelets, and RichFaces it has become a lot easier to use and has gained traction with developers.</p>
<p>As I mentioned earlier, there is a new version of JSF, code named Mojarra, which has a lot of promise. I am currently experimenting with a reference implementation of Mojarra, and will report back on my findings so stay tuned!</p>


<p>No related posts.</p><img src="http://feeds.feedburner.com/~r/ManjitsMeaningfulMeanderings/~4/a-frT-NYa1M" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.msjtech.net/benefits-of-using-jsf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.msjtech.net/benefits-of-using-jsf/</feedburner:origLink></item>
		<item>
		<title>Six Agile Practices to Boost your productivity</title>
		<link>http://feedproxy.google.com/~r/ManjitsMeaningfulMeanderings/~3/crJsS-7047o/</link>
		<comments>http://www.msjtech.net/agile-practices-to-boost-productivity/#comments</comments>
		<pubDate>Tue, 10 Feb 2009 22:54:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[improve]]></category>

		<guid isPermaLink="false">http://www.msjtech.net/?p=23</guid>
		<description><![CDATA[Why Use Agile Practices Agile development has taken off in a big way and there are many notable companies that use it. However there are still those that are stuck in waterfall mode and find it hard to make the transition to Agile development. Here are some of the best Agile practices that I&#8217;ve found [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<h2>Why Use Agile Practices</h2>
<p>Agile development has taken off in a big way and there are many notable companies that use it. However there are still those that are stuck in waterfall mode and find it hard to make the transition to Agile development. Here are some of the best Agile practices that I&#8217;ve found can be incorporated into any team and provide immediate benefits.<span id="more-23"></span></p>
<p><strong>Make it easy to commit code</strong></p>
<p>Make it easy for developers to commit code and try and commit regularly so that your code stays code stays in check. I think merging code that has been worked on for long periods of time is one of the most error prone and time consuming tasks a developer can be faced. The ideal solution is to have your version control system integrated into your IDE, tools such as <a rel="nofollow" href="http://www.eclipse.org/" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.eclipse.org/');">Eclipse</a> and <a rel="nofollow" title="agile technology" href="http://subversion.tigris.org/" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://subversion.tigris.org/');">Subversion</a> make this quite easy to achieve.</p>
<p><strong>Short build cycle</strong></p>
<p>I&#8217;ve come across numerous companies where they are so focused on other issues that they miss this one. Long build cycles mean that a surprisingly large amount of time is wasted when the developer has made a small change and is waiting his code to compile. It can also mean that the developer loses momentum and focus, which in turn means that even more time is lost.</p>
<p>In addition to this you may want to look at <a rel="nofollow" title="agile programming" href="http://www.zeroturnaround.com/javarebel/" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.zeroturnaround.com/javarebel/');">JavaRebel</a> &#8211; which provides a Ruby on Rails like functionality to Java and allows you to make changes to Java classes on the fly.</p>
<p><strong>Test Driven development</strong></p>
<p>Unit testing has become very popular and is probably one of the easiest things to sell to your boss. Adding unit tests to your code provides a number of benefits; it helps find development problems early on and provides developers with more confidence to refactor code, which in turn leads to better, more robust code. For more information on unit testing tools check out my post on <a href="http://www.msjtech.net/top-java-technologies/" >Java Technologies</a>.</p>
<p><strong>Automated build process</strong></p>
<p>There are a number of tools that will allow you to automate your build process <span class="misspell"><a rel="nofollow" href="http://cruisecontrol.sourceforge.net" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://cruisecontrol.sourceforge.net');">CruiseControl</a></span> and <a rel="nofollow" title="agile automation" href="https://hudson.dev.java.net/" onclick="javascript:pageTracker._trackPageview('/outbound/article/https://hudson.dev.java.net/');">Hudson</a> are two of the most popular ones. Build automation gives you immediate feedback on the health of your project, and helps ensure that no bugs or compilation errors are introduced into the build.</p>
<p><strong>Avoid creating silo&#8217;s of knowledge </strong></p>
<p>Try and ensure that knowledge of all parts of your system is spread evenly between your developers. This stops development grinding to a halt when a particular developer is ill or on holiday, it also helps ensure your code is of a higher quality as more people will have worked on a particular component and hence it should be more standardized.</p>
<p><strong>Have a place to share knowledge (informally)</strong></p>
<p>Having a common place where everyone can share knowledge easily, such as a local Wiki can prove invaluable. There is obviously still a place for more formal documents, but a Wiki enables developers to do a brain dump on a particular problem or piece of functionality and store information that may have otherwise been lost.</p>
<p><strong>Conclusion</strong></p>
<p>Some of these agile practices may seem obvious, but committing these thoughts to the net will hopefully give you a chance to think about them. In essence these practices enable your team to work in a more efficient and responsive way, which should not only benefit the customer, but also aid the developer in removing some of the distractions related to development and focus on the core task.</p>
<p>Do you think there are there any that I have forgot? Please feel free to leave a comment below or email me.</p>


<p>No related posts.</p><img src="http://feeds.feedburner.com/~r/ManjitsMeaningfulMeanderings/~4/crJsS-7047o" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.msjtech.net/agile-practices-to-boost-productivity/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.msjtech.net/agile-practices-to-boost-productivity/</feedburner:origLink></item>
		<item>
		<title>Harness the power of innovation in your Business</title>
		<link>http://feedproxy.google.com/~r/ManjitsMeaningfulMeanderings/~3/u8pV8UWpnN0/</link>
		<comments>http://www.msjtech.net/harness-the-power-of-innovation/#comments</comments>
		<pubDate>Thu, 05 Feb 2009 00:52:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Miscellaneous]]></category>
		<category><![CDATA[business]]></category>
		<category><![CDATA[improvement]]></category>
		<category><![CDATA[innovation]]></category>

		<guid isPermaLink="false">http://www.msjtech.net/?p=27</guid>
		<description><![CDATA[Innovation can provide numerous benefits to your company. It stops the company stagnating and it allows you gain an edge over your competitors through staying relevant adapting to new opportunities quicker. All companies have people that are capable of innovation, below are some techniques through which you can promote innovation and benefit from your existing [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p>Innovation can provide numerous benefits to your company. It stops the company stagnating and it allows you gain an edge over your competitors through staying relevant adapting to new opportunities quicker.</p>
<p>All companies have people that are capable of innovation, <span id="more-27"></span>below are some techniques through which you can promote innovation and benefit from your existing resources.<br />
<br/><br />
<strong>Focused Innovation</strong></p>
<p>Try and promote innovation around a particular problem to get everyone focused. It could be said that &#8220;Constraints are the engines for innovation&#8221;. Getting everyone focused on a particular problem also avoids people going off on unproductive tangents or suggesting things that may not be useful or relevant at the present time.<br />
<br/><br />
<strong>Foster a culture that supports and rewards innovation </strong></p>
<p>Highlighting previous ideas that have been successful can be inspirational. It is also worthwhile having a good and generous reward scheme in place to provide incentive for creating new ideas.<br />
<br/><br />
<strong>Encourage Inter-disciplinary Learning </strong></p>
<p>Group together individuals that don&#8217;t normally work together in brainstorming sessions. This cross fertilization will help people gain a different perspective on an idea they had clearly established in their own mind, and hopefully create new ideas and solutions.<br />
<br/><br />
<strong>Include Everyone </strong></p>
<p>Use all members of an organisation. As all those different perspectives could be beneficial. Also there may be certain people who you wouldn&#8217;t expect to have good ideas that do, but no one ever asked them.<br />
<br/><br />
<strong>Use different prompts to facilitate innovation </strong></p>
<p>There are many different tools and techniques that can be used facilitate innovation. Brainstorming is one of the classic techniques, creating mind-maps and setting up a forum where people can post and discuss ideas is also very useful.<br />
<br/><br />
<strong>Get inspiration from other industries </strong></p>
<p>Take a good look at a company that has been successful in another industry and see if there is anything that you can incorporate into your own business.<br />
<br/><br />
<strong>Identify your innovators</strong></p>
<p>Some people tend to be more innovative than others &#8211; try and identify the most innovative people and provide them with the resources and encouragement they require to help them innovate more effectively.<br />
<br/><br />
<strong>Give people &#8220;Innovation Time Off&#8221;</strong></p>
<p>Give people a set amount of time every week where they can let their imaginations run wild where they can work on their own projects.</p>
<p>This may be difficult in today&#8217;s economy, but look at the big picture &#8211; take a look at Google for inspiration. Their AdSense for Content program was developed using &#8220;20% time&#8221;, and it is now clearly established as one of their most profitable revenue streams.</p>


<p>No related posts.</p><img src="http://feeds.feedburner.com/~r/ManjitsMeaningfulMeanderings/~4/u8pV8UWpnN0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.msjtech.net/harness-the-power-of-innovation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.msjtech.net/harness-the-power-of-innovation/</feedburner:origLink></item>
		<item>
		<title>Top 8 tips to get a job in Programming</title>
		<link>http://feedproxy.google.com/~r/ManjitsMeaningfulMeanderings/~3/C1CTe8DXM_Y/</link>
		<comments>http://www.msjtech.net/tips-to-get-programming-job/#comments</comments>
		<pubDate>Fri, 30 Jan 2009 00:44:32 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[blogs]]></category>
		<category><![CDATA[careers]]></category>
		<category><![CDATA[jobs]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://www.msjtech.net/?p=58</guid>
		<description><![CDATA[How easy is it to get a Job as a Programmer? In todays climate there are more people looking for jobs and less and less jobs available. In such competitive times you need to try harder to stand out against the other candidates. Having been in similar situations in the past, I managed to overcome [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<h2>How easy is it to get a Job as a Programmer?</h2>
<p>In todays climate there are more people looking for jobs and less and less jobs available. In such competitive times you need to try harder to stand out against the other candidates. Having been in similar situations in the past, I managed to overcome the odds and not only secure a role, but also have the luxury of being able to choose between different opportunities.</p>
<p><span id="more-58"></span></p>
<p>Below are some of the things you could do to give yourself the best chance possible.</p>
<p><strong>Prerequisites</strong><br />
Before I start I think it&#8217;s worth stating that a real interest in programming is a sort of a prerequisite. As a lot of the advice is will use up fair amount of your spare time, which will be much easier to do if you have an actual interest in this stuff.</p>
<p><strong>1. Best Practices</strong><br />
Learn about Design Patterns and development best practices. The chances are that someone out there has already solved whatever problem or technical requirement you have. Learning about best practices can help you avoid making common mistakes and improve your standard of coding in general.</p>
<p>A good book to learn about design patterns is <a href="http://www.amazon.com/gp/product/0596007124?ie=UTF8&amp;tag=mansmusononls-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0596007124" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.amazon.com/gp/product/0596007124?ie=UTF8&amp;tag=mansmusononls-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0596007124');">Head First Design Patterns</a><img style="border:none !important; margin:0px !important;" src="http://www.assoc-amazon.com/e/ir?t=mansmusononls-20&amp;l=as2&amp;o=1&amp;a=0596007124" border="0" alt="" width="1" height="1" />.</p>
<p><strong>2. Finding Information</strong><br />
Learn how to use google/resources effectively. You might laugh at this one, but knowing the most efficient way of searching on google for help with a problem or for some extra information can be invaluable. Also don&#8217;t be afraid to post to developer forums / mailing lists, or even email the people in charge of a project for some help.</p>
<p>Two newer websites that are also useful for helping with programming problems are <a title="Latest programming information" rel="nofollow" href="http://www.dzone.com" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.dzone.com');">dzone </a>and <a rel="nofollow" href="http://stackoverflow.com" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://stackoverflow.com');">stackoverflow</a></p>
<p><strong>3. Accreditation</strong><br />
Gain a widely recognised accreditation. For Java my personal recommendation would be The <a title="Programming tip" rel="nofollow" href="http://www.sun.com/training/certification/java/scjp.xml" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.sun.com/training/certification/java/scjp.xml');">Sun Certified Java Programmer</a> program &#8211; it would help give potential employees some reassurance with regards what your current standard of programming is.</p>
<p><strong>4. Agile</strong><br />
Learn about Agile software development &#8211; I believe that an Agile approach is the the best way to produce software, and even if you don&#8217;t end up using it, you could incorporate some of the best practices into your new role and impress your new boss. Check out my post on <a title="agile programming practices" href="http://www.msjtech.net/agile-practices-to-boost-productivity/" >Agile Best Practices</a> for further information.</p>
<p><strong>5. Join an Open Source Project</strong><br />
Join and contribute to an open source project &#8211; preferably something that has a fair amount of developer activity and something that you find interesting. Some suggestions would be <a title="database programming tool" rel="nofollow" href="http://hibernate.org" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://hibernate.org');">Hibernate</a>, The <a title="Java based Inversion of control technology" rel="nofollow" href="http://springframework.org" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://springframework.org');">Spring Framework</a>, <a title="testing tool for web developers" rel="nofollow" href="http://seleniumhq.org/" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://seleniumhq.org/');">Selenium</a>.</p>
<p><strong>6. Write a blog</strong><br />
I think this would score a lot of brownie points with potential employees. Starting a blog also has a number of other benefits, such as building relationships with other people in the industry and increasing your level of visibility.</p>
<p><strong>7. Learn Learn Learn</strong><br />
Keep up to date with the latest development related news and learn and experiment with new technologies. See my <a title="Programming resources" href="http://www.msjtech.net/links" > links</a> section for more places to find information.</p>
<p><strong>8. Improve your C.V </strong><br />
Your C.V is effectively your sales pitch to your potential employers &#8211; spend time on making it as clear and concise as possible. Also ensure that your strengths and full range of technical skills are adequately highlighted.</p>


<p>No related posts.</p><img src="http://feeds.feedburner.com/~r/ManjitsMeaningfulMeanderings/~4/C1CTe8DXM_Y" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.msjtech.net/tips-to-get-programming-job/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.msjtech.net/tips-to-get-programming-job/</feedburner:origLink></item>
		<item>
		<title>My Top Java Technologies</title>
		<link>http://feedproxy.google.com/~r/ManjitsMeaningfulMeanderings/~3/Fvqbe7Lg-NM/</link>
		<comments>http://www.msjtech.net/top-java-technologies/#comments</comments>
		<pubDate>Thu, 29 Jan 2009 23:44:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[hibernate]]></category>
		<category><![CDATA[hudson]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[review]]></category>
		<category><![CDATA[spring]]></category>
		<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://www.msjtech.net/?p=66</guid>
		<description><![CDATA[One of the best things about working in Java development is the vast amount of choice that is available for whatever your technical problem or requirement is. All this choice can sometimes be a bit overwhelming, so I have decided to put together a list of the technologies that I have found to be most [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p>One of the best things about working in Java development is the vast amount of choice that is available for whatever your technical problem or requirement is. All this choice can sometimes be a bit overwhelming, so I have decided to put together a list of the technologies that I have found to be most useful.</p>
<p><span id="more-66"></span></p>
<p><strong>The Spring Framework</strong><br />
Spring is the original framework that started the movement away from EJB&#8217;s and promoted a new more light-weight way of doing things in the form of Inversion of Control. At its core Spring frees you from having to write repetitive plumbing code and leaves you free to focus on coding business logic. There are also a number of useful additional modules that are provided &#8211; such as one for AOP, JDBC and a request based MVC framework.</p>
<p><strong>Hibernate</strong><br />
Hibernate is the most popular object relational mapping tool. Using Hibernate frees you from having to write low level JDBC code and enables you to deal with objects instead of tables.</p>
<p><strong>JSF</strong><br />
JSF in my opinion is one of the main frameworks that is having the most success in taking over from Struts. It is a lot more light weight and promotes a more flexible approach to development. JSF is component-centric which makes it very easy to create pages with a number of different inputs. RichFaces is a good example of a popular suite of components that are available. While it had teething problems early on especially with JSP integration, it has now matured into a much improved product.</p>
<p><strong>Tomcat </strong><br />
Is a lightweight server (servlet container) that can be used to deploy web applications (WAR&#8217;s) onto. Jetty is one of its main rivals, which many would argue is faster.</p>
<p><strong>Eclipse</strong><br />
Eclipse is arguably the best IDE out there for Java Development, it is very stable, fast and easy to use. It also has a thriving developer community around it, with many useful plugins available.</p>
<p><strong>JUNIT</strong><br />
JUnit is a very popular framework for developing unit tests for Java classes. Tests are created by extending the base TestCase class and there is an assertion library for verifying the results.</p>
<p><strong>Maven</strong><br />
Is a build automation tool that has been built on top of Ant. One of the key differences is that Maven manages your dependencies for you, which makes development a lot easier for large teams. It also generates some very useful project metrics and a wealth of documentation.</p>
<p><strong>Hudson</strong><br />
Is a new build automation server that I would say is the main sucessor from the original CruiseControl. Hudson provides the ability to automatically check out code, build and test it and then produce a report based on the outcome. Hudson provides some very useful additional functionality, such as change set support and distributed builds.</p>
<p><strong>Subversion</strong><br />
Is a version control system that is a successor to CVS. Subversion has a number of improvements over CVS, such as moving files is a lot easier, branching is straightforward, and the logging mechanisms are much better.</p>
<p><strong>Selenium </strong><br />
Allows you to create and easily execute automated tests against an actual browser. There is an IDE version that is a plugin for FireFox that allows you to actually record your interaction with the browser and replay it back. There is also a core version through which you can write tests in Java which is also quite easy to use. I find writing Java based tests is much easier and at a more comforable level of granularity than HTMLUnit.</p>
<p><strong>Grinder</strong><br />
Scalability and performance optimisation are crucial requirements for todays Web apps &#8211; Grinder is one of the best open source tools out there to help you test and refine the capabilites of your application. Grinder has a simple and easy to use UI with a scripting language in Jython to produce more complex tests. JMeter from Apache is also a very good related product.</p>
<p>Feel free to leave any comments if you think I have missed any of your favourite technologies.</p>


<p>No related posts.</p><img src="http://feeds.feedburner.com/~r/ManjitsMeaningfulMeanderings/~4/Fvqbe7Lg-NM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.msjtech.net/top-java-technologies/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.msjtech.net/top-java-technologies/</feedburner:origLink></item>
		<item>
		<title>Top User Interface Design Tips</title>
		<link>http://feedproxy.google.com/~r/ManjitsMeaningfulMeanderings/~3/O3t6M1eSQuY/</link>
		<comments>http://www.msjtech.net/top-user-interface-design-tips/#comments</comments>
		<pubDate>Fri, 16 Jan 2009 13:31:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[ui]]></category>

		<guid isPermaLink="false">http://www.msjtech.net/?p=32</guid>
		<description><![CDATA[Why Should I care about User Interface Design? The usability of your website is one of the key factors in determining its success. I have put together a list of  best practices that should help you increase how user friendly your website is. Consistency Having consistency in your user interface enables users to apply their [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<h2>Why Should I care about User Interface Design?</h2>
<p>The usability of your website is one of the key factors in determining its success. I have put together a list of  best practices that<strong> </strong>should help you increase how user friendly your website is.</p>
<p><span id="more-32"></span></p>
<ul>
<li><strong>Consistency</strong></li>
<p>Having consistency in your user interface enables users to apply their existing knowledge of previous applications in understanding and building up an accurate mental model of your application. Accurate mental models lead to less support and training being required.</p>
<li><strong>Feedback</strong></li>
<p>The system should keep users informed of actions or events, such as errors and state changes that are relevant to the user. This helps provide the user with a greater sense of engagement with the application.</p>
<li><strong>Simplicity </strong></li>
<p>Tasks that the user is likely to do often should be simple and straightforward to do. The interface should be clean and simple with only useful and relevant information and components displayed.</p>
<li><strong>Navigation</strong></li>
<p>In Western societies, people read left to right and top to bottom. Therefore to complement the users existing knowledge and expectations, screens designs should also be organized from left to right and top to bottom.</p>
<li><strong>Tolerance</strong></li>
<p>Mistakes are easily made. The user interface should be able to handle misuse and mistakes by allowing the user to undo and redo operations wherever possible. A level of verification of the user’s input prior to any action is also encouraged.</ul>
<p>Keeping these points in mind will help ensure that your user interface is as &#8216;user friendly&#8217; as possible. Feel free to let me know if you think I&#8217;ve forgotten anything.</p>


<p>No related posts.</p><img src="http://feeds.feedburner.com/~r/ManjitsMeaningfulMeanderings/~4/O3t6M1eSQuY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.msjtech.net/top-user-interface-design-tips/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.msjtech.net/top-user-interface-design-tips/</feedburner:origLink></item>
		<item>
		<title>Welcome to my blog!</title>
		<link>http://feedproxy.google.com/~r/ManjitsMeaningfulMeanderings/~3/YhbtjcCzxXs/</link>
		<comments>http://www.msjtech.net/hello-world/#comments</comments>
		<pubDate>Sun, 11 Jan 2009 18:25:19 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Miscellaneous]]></category>
		<category><![CDATA[introduction]]></category>
		<category><![CDATA[me]]></category>

		<guid isPermaLink="false">http://www.msjtech.net/?p=1</guid>
		<description><![CDATA[Hi, welcome to my website, this is the first post on my new blog. Guess I should probably start with a little introduction. The best way to describe myself as an Entreprenurial Web Technologist. I have a background in Web based Software Development and have spent many years working with a variety of different companies [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p>Hi, welcome to my website, this is the first post on my new blog.</p>
<p>Guess I should probably start with a little introduction. The best way to describe myself as an Entreprenurial Web Technologist.</p>
<p><span id="more-1"></span></p>
<p>I have a background in Web based Software Development and have spent many years working with a variety of different companies on various applications. Aside from development I also have experience and a keen interest in the more commercial aspects of the Web &#8211; specifically Online Marketing, Web Analytics, Search Engine Optimisation and Social Media.</p>
<p>I am also interested in creativity and innovation and ways in which they can be enhanced/refined.</p>
<p>I plan to blog on a variety of subjects but the central theme will be around development technologies and how to build a successful online business. </p>


<p>No related posts.</p><img src="http://feeds.feedburner.com/~r/ManjitsMeaningfulMeanderings/~4/YhbtjcCzxXs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.msjtech.net/hello-world/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.msjtech.net/hello-world/</feedburner:origLink></item>
	</channel>
</rss>
