<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://devpinoy.org/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">brewing up java stuff pinoy style</title><subtitle type="html" /><id>http://devpinoy.org/blogs/barakoboy/atom.aspx</id><link rel="alternate" type="text/html" href="http://devpinoy.org/blogs/barakoboy/default.aspx" /><link rel="self" type="application/atom+xml" href="http://devpinoy.org/blogs/barakoboy/atom.aspx" /><generator uri="http://communityserver.org" version="4.0.30417.1769">Community Server</generator><updated>2007-03-30T11:12:00Z</updated><entry><title>do you have to know everything all the time?</title><link rel="alternate" type="text/html" href="/blogs/barakoboy/archive/2008/02/08/do-you-have-to-know-everything-all-the-time.aspx" /><id>/blogs/barakoboy/archive/2008/02/08/do-you-have-to-know-everything-all-the-time.aspx</id><published>2008-02-08T02:04:00Z</published><updated>2008-02-08T02:04:00Z</updated><content type="html">&lt;p&gt;i don&amp;#39;t know about you guys but i&amp;#39;m starting to get mentally exhausted at the rate technology has been changing in recent years.&amp;nbsp; how many java web frameworks are out there today? 60? 70? 100?&amp;nbsp; and the list keeps on getting LONGER.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;here&amp;#39;s a bit of &lt;a href="http://www.codinghorror.com/blog/archives/000575.html" title="Keeping Up and &amp;quot;Just In Time&amp;quot; Learning"&gt;soothing salve to remedy that big headache of yours&lt;/a&gt;:&lt;/p&gt;&lt;p&gt;Do you ever feel like &lt;b&gt;you&amp;#39;re buried under umpteen zillion backlogged emails, feeds, books, articles, journals, magazines, and printouts?&lt;/b&gt;
Do you ever feel that you&amp;#39;re hopelessly behind, with so much new stuff
created every day that you can never possibly hope to keep up?
&lt;/p&gt;&lt;p&gt;
Well, you&amp;#39;re not alone.
&lt;/p&gt;&lt;p&gt;
Via &lt;a href="http://secretgeek.net/inadequate.asp"&gt;SecretGeek&lt;/a&gt;:
&lt;/p&gt;&lt;p&gt;
&lt;i&gt;
&lt;/i&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;You do NOT have to refactor all your code.
&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;You do NOT have to keep up with the latest news from
microsoft, and know everythnig there is to know about longhorn,
whidbey, avalon, XAML, indigo and star wars III.
&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;You do not have to have perfectly de-coupled tiers in your technology independent SOA software.
&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt; You do not have to comply to every standard, achieve
the perfect balance between maintainability and performance. Usability
and familiarity.
&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;You don&amp;#39;t have to do &amp;quot;first things first every day&amp;quot;
&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;You DO NOT have to memorize and understand every patten the gang of four have catalogued.
&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;You do NOT have to read every technical blog, print out
every technical article and learn every technical thing there is to
learn.
&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;You are beautiful just the way you are.
&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;You are brilliant, interesting, wise and fun to be around.
&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;You rock.
&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://devpinoy.org/aggbug.aspx?PostID=16792" width="1" height="1"&gt;</content><author><name>barakoboy</name><uri>http://devpinoy.org/members/barakoboy/default.aspx</uri></author></entry><entry><title>Prefer Broad Design Skills over Platform Knowledge</title><link rel="alternate" type="text/html" href="/blogs/barakoboy/archive/2008/02/08/prefer-broad-design-skills-over-platform-knowledge.aspx" /><id>/blogs/barakoboy/archive/2008/02/08/prefer-broad-design-skills-over-platform-knowledge.aspx</id><published>2008-02-08T01:58:00Z</published><updated>2008-02-08T01:58:00Z</updated><content type="html">&lt;p&gt;link: &lt;a href="http://www.infoq.com/news/2008/01/prefere-broad-design-skills"&gt;http://www.infoq.com/news/2008/01/prefere-broad-design-skills&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Building a team is always a tricky task since it is pretty unlikely to&lt;br /&gt;
find people who would fit all the criteria of the ideal candidate.&lt;br /&gt;
Trade-offs are inevitable and, in this context, it is crucial to&lt;br /&gt;
determine priorities. Broad skills, in terms of software design but&lt;br /&gt;
not only, this is what really matters for Martin Fowler.&lt;br /&gt;
&lt;br /&gt;
He asserts in his latest article, that if he had to choose between&lt;br /&gt;
someone who knows very well the platform used but has limited&lt;br /&gt;
knowledge about design and someone else who has broad design skills&lt;br /&gt;
but knows nothing about the specific technology used on the project,&lt;br /&gt;
he would choose the latter. He argues, indeed, that even though design&lt;br /&gt;
skills are not fully portable from one technology to another and&lt;br /&gt;
cannot be replicated blindly, great part of them can carry over not&lt;br /&gt;
only among similar technologies but also from curly-brace languages to&lt;br /&gt;
Ruby, for example.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://devpinoy.org/aggbug.aspx?PostID=16791" width="1" height="1"&gt;</content><author><name>barakoboy</name><uri>http://devpinoy.org/members/barakoboy/default.aspx</uri></author></entry><entry><title>the hardest questions to answer when you're a software developer</title><link rel="alternate" type="text/html" href="/blogs/barakoboy/archive/2007/09/06/the-hardest-questions-to-answer-when-you-re-a-software-developer.aspx" /><id>/blogs/barakoboy/archive/2007/09/06/the-hardest-questions-to-answer-when-you-re-a-software-developer.aspx</id><published>2007-09-06T12:53:25Z</published><updated>2007-09-06T12:53:25Z</updated><content type="html">&lt;ol&gt; &lt;li&gt;&lt;font face="Verdana" size="2"&gt;&lt;em&gt;gaano katagal pa yan?&lt;/em&gt;&amp;nbsp; &lt;/font&gt;&lt;/li&gt; &lt;li&gt;&lt;font face="Verdana" size="2"&gt;&lt;em&gt;malapit na ba matapos?&lt;/em&gt;&lt;/font&gt;&amp;nbsp;&lt;/li&gt;&lt;/ol&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://devpinoy.org/aggbug.aspx?PostID=13552" width="1" height="1"&gt;</content><author><name>barakoboy</name><uri>http://devpinoy.org/members/barakoboy/default.aspx</uri></author></entry><entry><title>Scorn Globally, Act Locally</title><link rel="alternate" type="text/html" href="/blogs/barakoboy/archive/2007/08/16/scorn-globally-act-locally.aspx" /><id>/blogs/barakoboy/archive/2007/08/16/scorn-globally-act-locally.aspx</id><published>2007-08-16T04:30:47Z</published><updated>2007-08-16T04:30:47Z</updated><content type="html">&lt;p&gt;in an ideal world, all&amp;nbsp;projects we handle have source code that&amp;nbsp;are so beautifully crafted that merely reading them gives you a sense of&amp;nbsp;enlightenment and&amp;nbsp;makes you marvel at the simplicity of the code (and for a few gives you that warm fuzzy feeling ... ).&amp;nbsp; in reality, well ...&amp;nbsp;*sigh*&amp;nbsp; =)&lt;/p&gt; &lt;p&gt;for those of us who maintain other people&amp;#39;s code for a living, here&amp;#39;s something to ponder over while you&amp;#39;re pulling your hair and pounding on that wall or table in frustration from trying to understand what the hell that other person was thinking when he/she wrote that bit of code you&amp;#39;re trying to debug.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.artima.com/weblogs/viewpost.jsp?thread=212350"&gt;Beautiful Code in the Real World - Part II: Scorn Globally, Act Locally&lt;/a&gt;&lt;br /&gt;by Alberto Savoia&lt;br /&gt;August 14, 2007 &lt;/p&gt; &lt;p&gt;&lt;b&gt;Summary&lt;/b&gt;&lt;br /&gt;How to inject beauty in a coyote ugly code base. &lt;/p&gt; &lt;p&gt;In Part I, I mentioned one of the dilemmas voiced by developers who want to inject some beautiful code in their day-to-day activities:  &lt;blockquote&gt;“I am maintaining a steaming pile of legacy code that I have inherited. I can barely keep the code base working – sort of. I would love to write some beautiful code, but have no time to think about beauty as long as I am saddled with this ugly code base.”&lt;/blockquote&gt; &lt;p&gt;This is a very common situation. Most developers spend most of their time maintaining/enhancing code that they did not write and, more often than not, that code base is not just ugly, but &lt;em&gt;coyote ugly&lt;/em&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://devpinoy.org/aggbug.aspx?PostID=12892" width="1" height="1"&gt;</content><author><name>barakoboy</name><uri>http://devpinoy.org/members/barakoboy/default.aspx</uri></author></entry><entry><title>argh ... deadlock</title><link rel="alternate" type="text/html" href="/blogs/barakoboy/archive/2007/08/03/argh-deadlock.aspx" /><id>/blogs/barakoboy/archive/2007/08/03/argh-deadlock.aspx</id><published>2007-08-03T02:36:00Z</published><updated>2007-08-03T02:36:00Z</updated><content type="html">&lt;p&gt;just when we were starting to feel really good about our chances of delivering a working and performant system, i get an email from the stress test guy of our client saying our transactions are causing table locks left and right.&lt;/p&gt; &lt;p&gt;what the ..... &lt;/p&gt; &lt;p&gt;&lt;a href="http://devpinoy.org/blogs/barakoboy/WindowsLiveWriter/argh.deadlock_10557/image.png"&gt;&lt;img src="http://devpinoy.org/blogs/barakoboy/WindowsLiveWriter/argh.deadlock_10557/image_thumb.png" style="border-width:0px;" alt="image" border="0" height="92" width="240" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;now i don&amp;#39;t remember any process that involved locking tables or anything close to that.&amp;nbsp; no one in the team has any knowledge of that either.&amp;nbsp; &lt;/p&gt; &lt;p&gt;whipped out &lt;a href="http://jakarta.apache.org/jmeter/"&gt;jmeter&lt;/a&gt; and started running some long running tests to try to pop the sucker out. the script was simple:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;login  &lt;/li&gt;&lt;li&gt;create a record  &lt;/li&gt;&lt;li&gt;save the record  &lt;/li&gt;&lt;li&gt;delete the record  &lt;/li&gt;&lt;li&gt;logout&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;after 3 minutes of continuously running the script, we were able to replicate the bugger.&lt;/p&gt; &lt;p&gt;&lt;i&gt;%#$%, something was locking the tables.&lt;/i&gt;&lt;/p&gt; &lt;p&gt;after a lot of frantic google and hibernate forum searching, we come across this:&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.archaebacteria.net/?p=21" title="http://www.archaebacteria.net/?p=21"&gt;http://www.archaebacteria.net/?p=21&lt;/a&gt;&lt;/p&gt; &lt;p&gt;and got this from my boss:&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.mail-archive.com/hibernate-devel@lists.sourceforge.net/msg05495.html" title="http://www.mail-archive.com/hibernate-devel@lists.sourceforge.net/msg05495.html"&gt;http://www.mail-archive.com/hibernate-devel@lists.sourceforge.net/msg05495.html&lt;/a&gt;&lt;/p&gt; &lt;p&gt;in a nutshell, from &lt;a href="http://www.archaebacteria.net/"&gt;lukas barton&amp;#39;s blog&lt;/a&gt;:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;i&gt;If an index exists on the foreign key column of the child table, no DML locks, other than a lock over the rows being modified, are required.&lt;/i&gt;  &lt;/p&gt;&lt;p&gt;&lt;i&gt;If the index is not created, a share lock is taken out on the child table for the duration of the transaction.&lt;/i&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;woopeedoo.&amp;nbsp; created the indices, deployed update @ client, resumed testing ...&lt;/p&gt; &lt;p&gt;... so far so good.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://devpinoy.org/aggbug.aspx?PostID=12331" width="1" height="1"&gt;</content><author><name>barakoboy</name><uri>http://devpinoy.org/members/barakoboy/default.aspx</uri></author></entry><entry><title>101 Ways To Know Your Software Project Is Doomed</title><link rel="alternate" type="text/html" href="/blogs/barakoboy/archive/2007/07/19/101-ways-to-know-your-software-project-is-doomed.aspx" /><id>/blogs/barakoboy/archive/2007/07/19/101-ways-to-know-your-software-project-is-doomed.aspx</id><published>2007-07-19T10:54:36Z</published><updated>2007-07-19T10:54:36Z</updated><content type="html">&lt;p&gt;got this from my boss today.&amp;nbsp; my personal favorites: 17, 36, and &lt;strong&gt;100&lt;/strong&gt; (best of the lot)&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Management has renamed its Waterfall process to Agile Waterfall  &lt;li&gt;You start hiring consultants so they can take the blame  &lt;li&gt;The Continuous Integration server has returned the error message “*** it, I give up”  &lt;li&gt;You have implemented your own Ruby framework that uses XML configuration files  &lt;li&gt;Your eldest team member references &lt;a href="http://www.martinfowler.com/"&gt;Martin Fowler&lt;/a&gt; as a ’snot-nosed punk’  &lt;li&gt;Your source code control system is a series of folders on a shared drive  &lt;li&gt;Allocated QA time is for Q and A why your crap is broken  &lt;li&gt;All of your requirements are written on a used cocktail napkin  &lt;li&gt;You start considering a new job so you don’t have to maintain the application you are building  &lt;li&gt;The lead web developer thinks the X in XHTML means ‘extreme’  &lt;li&gt;Ever iteration meeting starts with “Do you want the good news or the bad news…”  &lt;li&gt;Your team still gives a crap about its &lt;a href="http://en.wikipedia.org/wiki/Capability_Maturity_Model"&gt;CMM Level&lt;/a&gt;  &lt;li&gt;Progress is now measured by the number of fixed bugs and not completed features  &lt;li&gt;Continuous Integration is getting new employees to read the employee handbook  &lt;li&gt;You are friends with the janitor  &lt;li&gt;The SCRUM master doesn’t really care what you did yesterday or what you will do today  &lt;li&gt;Every milestone ends in a dead sprint  &lt;li&gt;Your best developer only has his A+ Certification  &lt;li&gt;You do not understand the acronyms DRY, YAGNI, or KISS; but you do understand WTF, PHB, and FUBAR  &lt;li&gt;Your manager could be replaced by an email redirection batch file  &lt;li&gt;The only certification your software process has is ISO 9001/2000  &lt;li&gt;Your manager thinks ‘Metrics’ is a type of protein drink  &lt;li&gt;Every bug is prioritized as &lt;em&gt;Critical&lt;/em&gt;  &lt;li&gt;Every feature is prioritized as &lt;em&gt;Trivial&lt;/em&gt;  &lt;li&gt;Project estimates magically match the budget  &lt;li&gt;Developers use the excuse of ’self documenting code’ for no comments  &lt;li&gt;Your favorite software pattern is &lt;a href="http://en.wikipedia.org/wiki/God_object"&gt;God Object&lt;/a&gt;  &lt;li&gt;You still believe compiling is a form of testing  &lt;li&gt;Developers still use Notepad as an IDE  &lt;li&gt;Your manager wastes 7 hours a week asking for progress reports (true story)  &lt;li&gt;You do not have your own machine and you are not doing pair programming  &lt;li&gt;Team Rule - No meetings until 10 AM since we were all here until 2 AM  &lt;li&gt;Your team believes ORM is a ‘fad’  &lt;li&gt;Your team believes the transition from VB6 to VB.NET will be ’seamless’  &lt;li&gt;Your manager thinks MS Project is the best management tool the market offers  &lt;li&gt;Your spouse only gets to see you on a webcam  &lt;li&gt;None of your unit tests have asserts in them  &lt;li&gt;FrontPage is your web page editor of choice  &lt;li&gt;You get into flame wars if { should be on new line, but you are impartial to patterns such as MVC  &lt;li&gt;The company motto is ‘Do more with less’  &lt;li&gt;The phrase ‘It works on my machine’ is heard more than once a day  &lt;li&gt;The last conference your .NET team attended was Apple WWDC 2000  &lt;li&gt;Your manager insists that you track all activity but never uses the information to make decisions  &lt;li&gt;All debugging occurs on the live server  &lt;li&gt;Your manager does not know how to check email  &lt;li&gt;Your manager thinks being &lt;a href="http://en.wikipedia.org/wiki/Sarbanes-Oxley_Act"&gt;SOX&lt;/a&gt; compliant means not working on baseball nights  &lt;li&gt;The company hires &lt;a href="http://en.wikipedia.org/wiki/Series_of_tubes"&gt;Senetor Ted Stevens&lt;/a&gt; to give your project kick-off inspiration speech  &lt;li&gt;The last book you read - Visual InterDev 6 Bible  &lt;li&gt;The overall budget is mistaken for your weekly Mountain Dew bill  &lt;li&gt;Your manager spends his lunch hour crying in his car (another true story)  &lt;li&gt;Your lead web developer defines AJAX as a cleaning product  &lt;li&gt;Your boss expects you to spend the next 2 days creating a purchase request for a $50 component  &lt;li&gt;The sales team decreased your estimates because they believe you can work faster  &lt;li&gt;Requirement - Rank #1 on Google  &lt;li&gt;Everyday you work until Midnight, everyday your boss leaves at 4:30  &lt;li&gt;Your manager loves to say “Why do the developers care? They get paid by the hour.”  &lt;li&gt;The night shift at Starbucks knows you by name  &lt;li&gt;Management can not understand why anyone needs more than a single monitor  &lt;li&gt;Your development team only uses source control as a power failure backup system  &lt;li&gt;Developers are not responsible for any testing  &lt;li&gt;The team does not use SVN because they believe the merge algorithms are black voodoo magic  &lt;li&gt;Your white boards are mostly white (&lt;a href="http://www.versionone.net/Resources/AreYouAgile.asp"&gt;VersionOne&lt;/a&gt;)  &lt;li&gt;The client continually mistakes your burn-down chart for a burn-up chart  &lt;li&gt;The project code name is renamed to ‘The Death March’  &lt;li&gt;Now it physically pains you to say the word - Yes  &lt;li&gt;Your teammates don’t refactor, they &lt;a href="http://waterfall2006.com/gorman.html"&gt;refuctor&lt;/a&gt;  &lt;li&gt;To reward you for all of your overtime your boss purchases a new coffee maker  &lt;li&gt;Your project budget is entered in the company ledger as ‘Corporate Overhead’  &lt;li&gt;You secretly outsource pieces of the project so you can blog at work  &lt;li&gt;A Change Control Board is created and your product isn’t even its first alpha version  &lt;li&gt;Daily you consider breaking your fingers for the short term disability check  &lt;li&gt;The deadline has been renamed a ‘milestone’…just like the last ‘milestone’  &lt;li&gt;Your project managers ‘open door’ policy only applies between 5:01 PM - 7:59 AM  &lt;li&gt;Your boss argues “Why buy it when we can built it!”  &lt;li&gt;You bring beer to the office during your 2nd shift  &lt;li&gt;The project manager is spotted consulting a Ouija board  &lt;li&gt;You give misinformation to your teammates so you look better on your personal review  &lt;li&gt;All code reviews are scheduled a week before product launch  &lt;li&gt;Budget for testing exists as “if we have time”  &lt;li&gt;The client will only talk about the requirements after they receive a fixed estimation  &lt;li&gt;The boss does not find the humor in Dilbert  &lt;li&gt;You start noticing your boss’s poker tells during &lt;a href="http://planningpoker.com/"&gt;planning poker&lt;/a&gt;  &lt;li&gt;You start wondering if working 2 shifts at Pizza Hut is a better career alternative  &lt;li&gt;All performance issues are resolved by getting larger machines  &lt;li&gt;The project has been demoted to being released as a permanent ‘Beta’ version  &lt;li&gt;Your car is towed from the office parking lot as it was thought to be abandoned  &lt;li&gt;The project manager likes to doodle during requirements gathering meetings  &lt;li&gt;Your SCRUM team consists of 1  &lt;li&gt;Your timesheet looks like a Powerball ticket  &lt;li&gt;The web developer thinks being 508 means looking good in her Levi Red Tabs  &lt;li&gt;You think you need Multiple Personality Disorder medication because you are &lt;a href="http://www.nikhilk.net/Personas.aspx"&gt;Mort, Elvis, and Einstein&lt;/a&gt;  &lt;li&gt;Your manager substitutes professional consultant advice for a Magic 8 Ball  &lt;li&gt;You know &lt;em&gt;exactly&lt;/em&gt; how many compile warnings cause an ‘Out of Memory’ exception in your IDE  &lt;li&gt;I have used IDE twice in this list and you still don’t know what it stands for  &lt;li&gt;You have cut and pasted code from &lt;a href="http://worsethanfailure.com/"&gt;The Daily WTF&lt;/a&gt;  &lt;li&gt;Broken unit tests are deleted because they are obviously out of date  &lt;li&gt;You are sent to a conference to learn, but you skip sessions to go hunting for swag  &lt;li&gt;QA has nicknamed you Chief Off-By-One  &lt;li&gt;&lt;a href="http://www.codesqueeze.com/happy-numbers-sharepoint-the-silent-killer/"&gt;You are using MOSS 2007&lt;/a&gt;  &lt;li&gt;You have been 90% complete 90% of the time  &lt;li&gt;“Oh, oh, and I almost forgot. Ahh, I’m also gonna need you to go ahead and come in on Sunday, too… thanks” &lt;/li&gt;&lt;/ol&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://devpinoy.org/aggbug.aspx?PostID=11773" width="1" height="1"&gt;</content><author><name>barakoboy</name><uri>http://devpinoy.org/members/barakoboy/default.aspx</uri></author></entry><entry><title>the real deal transformer</title><link rel="alternate" type="text/html" href="/blogs/barakoboy/archive/2007/07/18/the-real-deal-transformer.aspx" /><id>/blogs/barakoboy/archive/2007/07/18/the-real-deal-transformer.aspx</id><published>2007-07-18T06:50:00Z</published><updated>2007-07-18T06:50:00Z</updated><content type="html">&lt;p&gt;coming soon to a store near you &lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://video.google.com/videoplay?docid=2688697641144186583&amp;amp;hl=en"&gt;CLICK ME&amp;nbsp;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://devpinoy.org/aggbug.aspx?PostID=11719" width="1" height="1"&gt;</content><author><name>barakoboy</name><uri>http://devpinoy.org/members/barakoboy/default.aspx</uri></author></entry><entry><title>Teach Yourself Programming in Ten Years</title><link rel="alternate" type="text/html" href="/blogs/barakoboy/archive/2007/07/17/teach-yourself-programming-in-ten-years.aspx" /><id>/blogs/barakoboy/archive/2007/07/17/teach-yourself-programming-in-ten-years.aspx</id><published>2007-07-17T09:34:57Z</published><updated>2007-07-17T09:34:57Z</updated><content type="html">&lt;p&gt;link: &lt;a title="http://www.norvig.com/21-days.html" href="http://www.norvig.com/21-days.html"&gt;http://www.norvig.com/21-days.html&lt;/a&gt;&lt;/p&gt; &lt;p&gt;as one of my former PE teachers used to say, &amp;quot;&lt;em&gt;good practice makes good perfect&lt;/em&gt;&amp;quot;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;hr /&gt;  &lt;h4&gt;&lt;strong&gt;Teach Yourself Programming in Ten Years&lt;/strong&gt;&lt;/h4&gt; &lt;h5&gt;by Peter Norvig&lt;/h5&gt; &lt;h4&gt;&lt;strong&gt;Why is everyone in such a rush?&lt;/strong&gt;&lt;/h4&gt;Walk into any bookstore, and you&amp;#39;ll see how to &lt;i&gt;Teach Yourself Java in 7 Days&lt;/i&gt; alongside endless variations offering to teach Visual Basic, Windows, the Internet, and so on in a few days or hours. I did the following &lt;a href="http://www.amazon.com/exec/obidos/tg/browse/-/468558/104-5938873-6579160"&gt;power search&lt;/a&gt; at &lt;a href="http://www.amazon.com"&gt;Amazon.com&lt;/a&gt;: &lt;pre&gt;     &lt;a href="http://www.amazon.com/exec/obidos/search-handle-url/ix=books&amp;amp;rank=%2Bfeaturedrank&amp;amp;fqp=power%01pubdate%3A%20after%201992%20and%20title%3A%20days%20and%0D%20%28title%3A%20learn%20or%20title%3A%20teach%20yourself%29&amp;amp;sz=25&amp;amp;pg=1/ref=s_b_np"&gt;pubdate: after 1992 and title: days and&lt;/a&gt;
      &lt;a href="http://www.amazon.com/exec/obidos/search-handle-url/ix=books&amp;amp;rank=%2Bfeaturedrank&amp;amp;fqp=power%01pubdate%3A%20after%201992%20and%20title%3A%20days%20and%0D%20%28title%3A%20learn%20or%20title%3A%20teach%20yourself%29&amp;amp;sz=25&amp;amp;pg=1/ref=s_b_np"&gt;(title: learn or title: teach yourself)&lt;/a&gt;&lt;/pre&gt;and got back 248 hits. The first 78 were computer books (number 79 was &lt;a href="http://www.amazon.com/exec/obidos/ASIN/0781802245/"&gt;&lt;i&gt;Learn Bengali in 30 days&lt;/i&gt;&lt;/a&gt;). I replaced &amp;quot;days&amp;quot; with &lt;a href="http://www.amazon.com/exec/obidos/search-handle-url/ix=books&amp;amp;rank=%2Bfeaturedrank&amp;amp;fqp=power%01pubdate%3A%20after%201992%20and%20title%3A%20hours%20and%0D%20%28title%3A%20learn%20or%20title%3A%20teach%20yourself%29&amp;amp;sz=25&amp;amp;pg=3/ref=s_b_np"&gt;&amp;quot;hours&amp;quot;&lt;/a&gt; and got remarkably similar results: 253 more books, with 77 computer books followed by &lt;a href="http://www.amazon.com/exec/obidos/ASIN/0028638999/"&gt;&lt;i&gt;Teach Yourself Grammar and Style in 24 Hours&lt;/i&gt;&lt;/a&gt; at number 78. Out of the top 200 total, 96% were computer books. 
&lt;p&gt;The conclusion is that either people are in a big rush to learn about computers, or that computers are somehow fabulously easier to learn than anything else. There are no books on how to learn Beethoven, or Quantum Physics, or even Dog Grooming in a few days. 
&lt;p&gt;Let&amp;#39;s analyze what a title like &lt;i&gt;&lt;a href="http://www.amazon.com/exec/obidos/ISBN=1556225679/4094-7934802-027992"&gt;Learn Pascal in Three Days&lt;/a&gt;&lt;/i&gt; could mean: 
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Learn:&lt;/b&gt; In 3 days you won&amp;#39;t have time to write several significant programs, and learn from your successes and failures with them. You won&amp;#39;t have time to work with an experienced programmer and understand what it is like to live in that environment. In short, you won&amp;#39;t have time to learn much. So they can only be talking about a superficial familiarity, not a deep understanding. As Alexander Pope said, a little learning is a dangerous thing. 
&lt;li&gt;&lt;b&gt;Pascal:&lt;/b&gt; In 3 days you might be able to learn the syntax of Pascal (if you already knew a similar language), but you couldn&amp;#39;t learn much about how to use the syntax. In short, if you were, say, a Basic programmer, you could learn to write programs in the style of Basic using Pascal syntax, but you couldn&amp;#39;t learn what Pascal is actually good (and bad) for. So what&amp;#39;s the point? &lt;a href="http://www-pu.informatik.uni-tuebingen.de/users/klaeren/epigrams.html"&gt;Alan Perlis&lt;/a&gt; once said: &amp;quot;A language that doesn&amp;#39;t affect the way you think about programming, is not worth knowing&amp;quot;. One possible point is that you have to learn a tiny bit of Pascal (or more likely, something like Visual Basic or JavaScript) because you need to interface with an existing tool to accomplish a specific task. But then you&amp;#39;re not learning how to program; you&amp;#39;re learning to accomplish that task. 
&lt;li&gt;&lt;b&gt;in Three Days:&lt;/b&gt; Unfortunately, this is not enough, as the next section shows. &lt;/li&gt;&lt;/ul&gt;
&lt;h4&gt;&lt;strong&gt;Teach Yourself Programming in Ten Years&lt;/strong&gt;&lt;/h4&gt;Researchers (&lt;a href="http://www.amazon.com/exec/obidos/ASIN/0805803092"&gt;Hayes&lt;/a&gt;, &lt;a href="http://www.amazon.com/exec/obidos/ASIN/034531509X/"&gt;Bloom&lt;/a&gt;) have shown it takes about ten years to develop expertise in any of a wide variety of areas, including chess playing, music composition, painting, piano playing, swimming, tennis, and research in neuropsychology and topology. There appear to be no real shortcuts: even Mozart, who was a musical prodigy at age 4, took 13 more years before he began to produce world-class music. In another genre, the Beatles seemed to burst onto the scene with a string of #1 hits and an appearance on the Ed Sullivan show in 1964. But they had been playing small clubs in Liverpool and Hamburg since 1957, and while they had mass appeal early on, their first great critical success, &lt;i&gt;Sgt. Peppers&lt;/i&gt;, was released in 1967. Samuel Johnson thought it took longer than ten years: &amp;quot;Excellence in any department can be attained only by the labor of a lifetime; it is not to be purchased at a lesser price.&amp;quot; And Chaucer complained &amp;quot;the lyf so short, the craft so long to lerne.&amp;quot; 
&lt;p&gt;Here&amp;#39;s my recipe for programming success: 
&lt;ul&gt;
&lt;li&gt;Get interested in programming, and do some because it is fun. Make sure that it keeps being enough fun so that you will be willing to put in ten years. 
&lt;li&gt;Talk to other programmers; read other programs. This is more important than any book or training course. 
&lt;li&gt;Program. The best kind of learning is &lt;a href="http://www.engines4ed.org/hyperbook/nodes/NODE-120-pg.html"&gt;learning by doing&lt;/a&gt;. To put it more technically, &amp;quot;the maximal level of performance for individuals in a given domain is not attained automatically as a function of extended experience, but the level of performance can be increased even by highly experienced individuals as a result of deliberate efforts to improve.&amp;quot; &lt;a href="http://www2.umassd.edu/swpi/DesignInCS/expertise.html"&gt;(p. 366)&lt;/a&gt; and &amp;quot;the most effective learning requires a well-defined task with an appropriate difficulty level for the particular individual, informative feedback, and opportunities for repetition and corrections of errors.&amp;quot; (p. 20-21) The book &lt;i&gt;&lt;a href="http://www.amazon.com/exec/obidos/ASIN/0521357349"&gt;Cognition in Practice: Mind, Mathematics, and Culture in Everyday Life&lt;/a&gt;&lt;/i&gt; is an interesting reference for this viewpoint. 
&lt;li&gt;If you want, put in four years at a college (or more at a graduate school). This will give you access to some jobs that require credentials, and it will give you a deeper understanding of the field, but if you don&amp;#39;t enjoy school, you can (with some dedication) get similar experience on the job. In any case, book learning alone won&amp;#39;t be enough. &amp;quot;Computer science education cannot make anybody an expert programmer any more than studying brushes and pigment can make somebody an expert painter&amp;quot; says Eric Raymond, author of &lt;i&gt;The New Hacker&amp;#39;s Dictionary&lt;/i&gt;. One of the best programmers I ever hired had only a High School degree; he&amp;#39;s produced a lot of &lt;a href="http://www.xemacs.org"&gt;great&lt;/a&gt; &lt;a href="http://www.mozilla.org"&gt;software&lt;/a&gt;, has his own &lt;a href="http://groups.google.com/groups?q=alt.fan.jwz&amp;amp;meta=site%3Dgroups"&gt;news group&lt;/a&gt;, and made enough in stock options to buy his own &lt;a href="http://en.wikipedia.org/wiki/DNA_Lounge"&gt;nightclub&lt;/a&gt;. 
&lt;li&gt;Work on projects with other programmers. Be the best programmer on some projects; be the worst on some others. When you&amp;#39;re the best, you get to test your abilities to lead a project, and to inspire others with your vision. When you&amp;#39;re the worst, you learn what the masters do, and you learn what they don&amp;#39;t like to do (because they make you do it for them). 
&lt;li&gt;Work on projects &lt;i&gt;after&lt;/i&gt; other programmers. Be involved in understanding a program written by someone else. See what it takes to understand and fix it when the original programmers are not around. Think about how to design your programs to make it easier for those who will maintain it after you. 
&lt;li&gt;Learn at least a half dozen programming languages. Include one language that supports class abstractions (like Java or C++), one that supports functional abstraction (like Lisp or ML), one that supports syntactic abstraction (like Lisp), one that supports declarative specifications (like Prolog or C++ templates), one that supports coroutines (like Icon or Scheme), and one that supports parallelism (like Sisal). 
&lt;li&gt;Remember that there is a &amp;quot;computer&amp;quot; in &amp;quot;computer science&amp;quot;. Know how long it takes your computer to execute an instruction, fetch a word from memory (with and without a cache miss), read consecutive words from disk, and seek to a new location on disk. (&lt;a href="http://www.norvig.com/21-days.html#answers"&gt;Answers here.&lt;/a&gt;) 
&lt;li&gt;Get involved in a language standardization effort. It could be the ANSI C++ committee, or it could be deciding if your local coding style will have 2 or 4 space indentation levels. Either way, you learn about what other people like in a language, how deeply they feel so, and perhaps even a little about why they feel so. 
&lt;li&gt;Have the good sense to get off the language standardization effort as quickly as possible. &lt;/li&gt;&lt;/ul&gt;With all that in mind, its questionable how far you can get just by book learning. Before my first child was born, I read all the &lt;i&gt;How To&lt;/i&gt; books, and still felt like a clueless novice. 30 Months later, when my second child was due, did I go back to the books for a refresher? No. Instead, I relied on my personal experience, which turned out to be far more useful and reassuring to me than the thousands of pages written by experts. 
&lt;p&gt;Fred Brooks, in his essay &lt;i&gt;&lt;a href="http://citeseer.nj.nec.com/context/7718/0"&gt;No Silver Bullets&lt;/a&gt;&lt;/i&gt; identified a three-part plan for finding great software designers: 
&lt;ol&gt;
&lt;li&gt;Systematically identify top designers as early as possible. 
&lt;li&gt;Assign a career mentor to be responsible for the development of the prospect and carefully keep a career file. 
&lt;li&gt;Provide opportunities for growing designers to interact and stimulate each other. &lt;/li&gt;&lt;/ol&gt;This assumes that some people already have the qualities necessary for being a great designer; the job is to properly coax them along. &lt;a href="http://www-pu.informatik.uni-tuebingen.de/users/klaeren/epigrams.html"&gt;Alan Perlis&lt;/a&gt; put it more succinctly: &amp;quot;Everyone can be taught to sculpt: Michelangelo would have had to be taught how not to. So it is with the great programmers&amp;quot;. 
&lt;p&gt;So go ahead and buy that Java book; you&amp;#39;ll probably get some use out of it. But you won&amp;#39;t change your life, or your real overall expertise as a programmer in 24 hours, days, or even months. &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://devpinoy.org/aggbug.aspx?PostID=11671" width="1" height="1"&gt;</content><author><name>barakoboy</name><uri>http://devpinoy.org/members/barakoboy/default.aspx</uri></author></entry><entry><title>The seven sins of programmers</title><link rel="alternate" type="text/html" href="/blogs/barakoboy/archive/2007/07/12/the-seven-sins-of-programmers.aspx" /><id>/blogs/barakoboy/archive/2007/07/12/the-seven-sins-of-programmers.aspx</id><published>2007-07-12T10:43:43Z</published><updated>2007-07-12T10:43:43Z</updated><content type="html">&lt;p&gt;By Steve Goodwin  &lt;p&gt;link: &lt;a title="http://www.freesoftwaremagazine.com/articles/the_seven_sins_of_programmers" href="http://www.freesoftwaremagazine.com/articles/the_seven_sins_of_programmers"&gt;http://www.freesoftwaremagazine.com/articles/the_seven_sins_of_programmers&lt;/a&gt;  &lt;p&gt;&lt;i&gt;Online on: 2007-04-11&lt;/i&gt;  &lt;p&gt;Programmers. The system administrators worship their bit twiddling capabilities. The users exchange vast quantities of beer for new features and tools. And the project managers sell their souls when they make the magic work. But inside the average programmer’s psyche are several demons that need exorcising.  &lt;h5&gt;&lt;strong&gt;Pride&lt;/strong&gt;&lt;/h5&gt; &lt;p&gt;This is all too common in programmers. Instead of asking whether a particular function exists, or for the best way to retrieve data from the system, a proud programmer is likely to write their own. Especially when faced with a large, or unfamiliar, code base. By re-inventing the wheel there are now two very similar routines. Not only does this increase the code size, it doubles the amount of maintenance required, creates another opportunity for bugs, and adds inconsistency. Later, when another programmer sees these two functions, they will have to choose between them. Which one will depend on their mood (are they also too proud to seek help?), who’s on holiday or who’s outside smoking, at the time! This can equally be applied to duplicate constants, member variables or structures.  &lt;p&gt; &lt;p&gt;&lt;em&gt;Code reviews... must focus on the code, not the coder&lt;/em&gt;  &lt;p&gt; &lt;p&gt;Code reviews with a senior team member can help quell a developer’s pride, and guide the other developers in the appropriate direction. This is basic employee training, and one that is simple to implement. Reviews also force the developer to reason each decision made, and justify the creation of new utility routines, perhaps explaining to the lead why existing standard code was not used. To be constructive the review must focus on the code, not the coder, and support free flowing ideas, regardless of the relative seniority of the reviewers. Remember that if the developer is too proud they’ll be closed to ideas, or won’t suggest improvements.  &lt;h5&gt;&lt;strong&gt;Envy&lt;/strong&gt;&lt;/h5&gt; &lt;p&gt;Programmers should improve themselves by learning from others, not blindly emulating them. All coding methodologies (be they syntactical or design-based) come with caveats. A programmer might inline a function with the pre-processor because he’s seen it done elsewhere, unaware of potential side effects, as in this classic example.&lt;pre&gt;#define SQUARE(x)	x*x
&lt;/pre&gt;
&lt;p&gt;Similar evils occur when programmers move between languages. An experienced developer will typically have a specific style that he tries to crowbar into every other language. Perl written like C. Java written like Ruby. We’ve all seen the examples. Naturally, you should use the best tool for the job, and work to the strengths of that language. By trying to fit idioms from one language into another highlights the fact you understand neither. It’s a development fact of life that some languages are better suited to some tasks, so adapt to it, and close those envious eyes that look at the language you’d rather use. Remember the oft-quoted saying, “When all you have is a hammer, everything looks like a nail”. 
&lt;h5&gt;&lt;strong&gt;Gluttony&lt;/strong&gt;&lt;/h5&gt;
&lt;p&gt;Not an evening at the all-you-can-eat buffet, but the problem of writing too much code. Every hour spent coding will require an extra hour of testing, and possibly two more of maintenance. And guess who gets lumbered with the maintenance? 
&lt;p&gt;Worse still, this does not scale. A two-minute feature (or one line bug fix) may also take an hour to test. Whatever your gluttonous reasons are—attempts to impress, an under-staffed team, late night camaraderie, or personal pride—curb them. Spending the whole morning trying to unravel last nights two-minute feature is like the buffet—you get stuffed afterwards! 
&lt;h5&gt;&lt;strong&gt;Lust&lt;/strong&gt;&lt;/h5&gt;
&lt;p&gt;Programmers crave pleasure; they love to “scratch their own itches”. If unchecked, some developers will write fantastic, innovative, original... and completely unnecessary, code. It could be a new graphics shader, a faster search algorithm or an entire processing engine! If you’re working on anything other than a pet project, you will probably have a schedule that must be adhered to, and a set of pre-determined priorities. These affect the whole project, and not just the wanton lust of an individual developer. Unless you are called Spock, the needs of the many, outweigh the needs of the few... or the one. 
&lt;p&gt;Make sure any code written is actually needed. Will it get used? Or will it distract the users who, in turn, add a new plug-in system, just to make use of the code? One very common example of this is premature optimization. Without profiling the code it is impossible to tell exactly where the bottlenecks will occur. Granted, most developers can look at a function and give several reasons why it is slower than it could be, but very few can tell you want percentage of the total running time that function will occupy. Unless it’s known to be on the critical path, then it’s probably not worth optimizing at this time. 
&lt;p&gt;The desire to write new code can also exclude the possibility of introducing middleware as a viable solution. The cliché chant is then of “Not Invented Here”. Programmer X once said, 
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“I’m not using middleware since I don’t understand it; it’ll be just as quick to write it myself. How can I be expected to maintain something I don’t understand?”&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;He was erroneous for many reasons. Firstly, the initial period of evaluation would give him experience with the code base, and should be a pre-requisite when introducing any new code to a project. Secondly, he’s only considered the development time in terms of coding, when in actuality much of it is taken up with testing—something any sensible middleware product would have in abundance—and as we’ve already seen, writing code doesn’t scale to the subsequent testing and maintenance phases. And finally, there are other trade-offs between write and buy, such as access to other developer forums, paid consultancy, and third party contracts which determine whether the purchase of middleware is a good idea &lt;em&gt;for your specific project&lt;/em&gt;. 
&lt;p&gt;Curbing programmer lust in this way allows more time spent on the important tasks. This would include writing original, novel, parts of the software and learning the middleware solution itself. After all, it is usually quicker to read, than to write. 
&lt;h5&gt;&lt;strong&gt;Anger&lt;/strong&gt;&lt;/h5&gt;
&lt;p&gt;Do not code out of anger. Do not ignore good ideas, regardless from where they come. If a more junior programmer has a solution to the problem in hand—discuss it. If it works—use it! The engine programmer should not be allowed to implement his own solution just because “He’s the engine programmer”. 
&lt;p&gt;
&lt;p&gt;&lt;em&gt;Anger leads to hate. Hate leads to suffering. To bad code does that lead&lt;/em&gt; 
&lt;p&gt;
&lt;p&gt;Do not code out of spite. Lead programmers: love your coders. Code reviews, for example, should raise the ability of the whole team, and not be used for leads to show off, introduce new jargon, demonstrate obfuscated syntax or exhibit other prima donna characteristics. 
&lt;p&gt;Do not code out of fury. Programmers: love your leads. They distribute work because it needs doing. Don’t work on somebody else’s tasks because you’re more suited, or believe it should have been yours. If you want to move into other areas of programming, talk to your lead. Develop prototypes at home. Employing enthusiasm in this manner will win more brownie points than ignoring the task list and schedule. 
&lt;h5&gt;&lt;strong&gt;Sloth&lt;/strong&gt;&lt;/h5&gt;
&lt;p&gt;Don’t procrastinate! If a particular piece of code is uninteresting or difficult (like an obscure crash bug), more interesting tasks should be available to compensate. Look forward to those tasks, but don’t daydream about them. If you stop every five minutes for a coffee and chat (or more likely, a whinge) then the task will take much longer, and it will become a self-fulfilling prophecy. Instead, begin with a cup of coffee, a bag of sweets, and your favorite MP3s. Then lose yourself and knuckle down to the task in hand. It won’t be as bad as you think as even dull work makes time pass quickly if you become engrossed in it. 
&lt;p&gt;Also, make sure all the tasks are clear, consistent and given from one manager. Opposing requests from different managers will make one of them unhappy, and starting such a doomed task is no fun for anybody. 
&lt;h5&gt;&lt;strong&gt;Greed&lt;/strong&gt;&lt;/h5&gt;
&lt;p&gt;There are a couple of places where developers suffer greed. We have already touched on one, and this is a programmer’s innate desire to do too much. The proverbial “biting off more than you can chew” scenario leads to an exponential increase in testing, and a swell of code paths to verify. It can also lead to a lower quality of code since the problem domain may not be well understood by the developer assigned, and the increased workload limits their opportunity to learn. 
&lt;p&gt;The final greedy point is directed more towards management, as everyone should feel valued—financially and metaphorically. This is especially true during crunch-time, when even the most junior programmer can work out that their hourly pay packet could be improved by working on the cold meat counter at Tesco! Paying for late night food goes without saying (I hope!), but an occasional pub evening also helps. This gets everyone out the office, and shows that management aren’t greedy with an employee’s time, either. Many ambitious people, regardless of salary, always want more. So even the lead programmer will start questioning their role and think “I’m worth more than this” when they feel unappreciated. How many times do you hear “I’m so overpaid”, compared to “I’m so underpaid”? 
&lt;p&gt;Leads should check for warning signs, like “funny” comments in the code—“I’ll do this properly when I get a fscking pay rise!!!”. Management should be wary of stopping or limiting low-cost company perks (such as free soda) since the loss in productivity and willingness to do overtime is undoubtedly greater than the few dollars spent. Follow Dilbert. Less money for staff does not mean more for management. 
&lt;p&gt;Naturally, the lead programmer should help prevent such sinful practices. But as responsible professionals, we should all try and curb the devil inside first. Of course, not everyone is Beelzebub incarnate, so score yourself honestly out of ten for each category, and ask a colleague to do the same for you. Then compare. I score 4, 2, 6, 1, 1, 2 and 3 on the categories above, but pride prevents me from letting you in on which scores are for which categories...&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://devpinoy.org/aggbug.aspx?PostID=11531" width="1" height="1"&gt;</content><author><name>barakoboy</name><uri>http://devpinoy.org/members/barakoboy/default.aspx</uri></author></entry><entry><title>everybody loves the paperclip</title><link rel="alternate" type="text/html" href="/blogs/barakoboy/archive/2007/04/13/everybody-loves-the-paperclip.aspx" /><id>/blogs/barakoboy/archive/2007/04/13/everybody-loves-the-paperclip.aspx</id><published>2007-04-13T12:02:00Z</published><updated>2007-04-13T12:02:00Z</updated><content type="html">&lt;br&gt;
&lt;a href="http://www.funnyjunk.com"&gt;&lt;img src="http://newmedia.funnyjunk.com/pictures/0188.gif" alt="Funny Pictures" border="0"&gt;&lt;/a&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://devpinoy.org/aggbug.aspx?PostID=8876" width="1" height="1"&gt;</content><author><name>barakoboy</name><uri>http://devpinoy.org/members/barakoboy/default.aspx</uri></author></entry><entry><title>project muni-muni</title><link rel="alternate" type="text/html" href="/blogs/barakoboy/archive/2007/03/30/project-muni-muni.aspx" /><id>/blogs/barakoboy/archive/2007/03/30/project-muni-muni.aspx</id><published>2007-03-30T02:12:00Z</published><updated>2007-03-30T02:12:00Z</updated><content type="html">&lt;font face="Verdana"&gt;we delivered the software with an hour to spare.&amp;nbsp; software development projects just aren't as fun and exciting if you don't&amp;nbsp; let murphy impose his law upon it.&lt;br&gt;&lt;br&gt;it has been said hundreds of times before, and yes i will say it again: PEOPLE, NOT TOOLS, MAKE GOOD SOFTWARE.&amp;nbsp; and for this project i have been blessed with a great team, one with people with the right attitude, work ethics, and dedication to quality.&amp;nbsp; &lt;br&gt;&lt;br&gt;i'm not saying that tools aren't necessary.&amp;nbsp; on the contrary, having the right tools can and will make your life easier.&amp;nbsp; it just saddens me that some companies would rather invest in tools (or in all that cmm certification crap) than in their people, and this mentality seems to abound in our country.&amp;nbsp; &lt;br&gt;&lt;br&gt;on my way home last night i went over the right decisions that were made (by me or my company) during the course of the project&amp;nbsp; that helped us deliver what was required.&amp;nbsp; here are some of those:&lt;br&gt;&lt;br&gt;1. we used &lt;a href="http://appfuse.org/"&gt;appfuse&lt;/a&gt;&lt;br&gt;&lt;br&gt;yes, &lt;a href="http://www.hibernate.org/"&gt;hibernate&lt;/a&gt; was great.&amp;nbsp; yes, &lt;a href="http://springframework.org/"&gt;spring&lt;/a&gt; was a big help.&amp;nbsp; yes, &lt;a href="http://displaytag.sourceforge.net/11/"&gt;displaytag&lt;/a&gt; saved us a lot of time.&amp;nbsp; yes &lt;a href="http://xfire.codehaus.org/"&gt;xfire&lt;/a&gt; kicks ass. but at the end of the day, if you can't bind them all seamlessly together then you may have a lot of work in your hands in the future.&amp;nbsp; appfuse just takes all of these integration concerns out of your hands and lets you focus more on the business requirements.&amp;nbsp; after all, at the end of the day the client isn't at all concerned if you used the latest and greatest version of ABC framework or XYZ library.&amp;nbsp; what they want to see is a product that does what they said it should do.&lt;br&gt;&lt;br&gt;you may have the best technologies in your project, but if you can't deliver what is expected then you don't have much.&lt;br&gt;&lt;br&gt;making a new module? no problem.&amp;nbsp; make your domain objects, put the necessary xdoclet tags (we weren't using the latest version of appfuse so annotations weren't supported yet), run the code generator, and you're done.&amp;nbsp; DAOs, configuration files, database tables, and all the other necessary classes are automagically created for you.&amp;nbsp; tweak it a bit to suit your taste and you have the baseline of your module.&amp;nbsp; &lt;br&gt;&lt;br&gt;2. we used &lt;a href="http://www.atlassian.com/software/jira/"&gt;jira&lt;/a&gt;&lt;br&gt;&lt;br&gt;jira, by leaps and bounds, is the best issue tracking system i have used ... EVER.&amp;nbsp; bugs are a fact of life in software development, and managing these can make or break a project if you let them run amuck.&lt;br&gt;&lt;br&gt;jira makes tracking all of these extremely easy, and creating tickets would take just a couple of seconds of your time.&amp;nbsp; found a bug? then make an entry!&amp;nbsp; i've experienced using a crappy bug tracking system that took almost 2 minutes to create a record, and in the end i ended up just using a spreadsheet or verbally telling someone that something was wrong.&amp;nbsp; tools are supposed to make your life easier, not make it more complicated.&lt;br&gt;&lt;br&gt;3. we used &lt;a href="http://luntbuild.javaforge.com/"&gt;luntbuild&lt;/a&gt;&lt;br&gt;&lt;br&gt;continuous integration is essential in any software development endeavor.&amp;nbsp; i've used &lt;a href="http://cruisecontrol.sourceforge.net/"&gt;cruisecontrol&lt;/a&gt; in the past and it did the job.&amp;nbsp; it was, however,&amp;nbsp; a pain to configure.&amp;nbsp; luntbuild lets you configure everything from a web interface within a couple of minutes.&lt;br&gt;&lt;br&gt;i've read that &lt;a href="https://hudson.dev.java.net/"&gt;hudson&lt;/a&gt; is even simpler to use.&amp;nbsp; haven't used it but am extremely interested in giving it a test drive.&lt;br&gt;&lt;br&gt;off the top of my head those were the essential things that went well.&amp;nbsp; there are probably some more but i'm too lazy to list all of them down.&amp;nbsp; maybe i'll mention some of them in future posts.&lt;br&gt;&lt;/font&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://devpinoy.org/aggbug.aspx?PostID=8737" width="1" height="1"&gt;</content><author><name>barakoboy</name><uri>http://devpinoy.org/members/barakoboy/default.aspx</uri></author><category term="xfire" scheme="http://devpinoy.org/blogs/barakoboy/archive/tags/xfire/default.aspx" /><category term="bug tracking system" scheme="http://devpinoy.org/blogs/barakoboy/archive/tags/bug+tracking+system/default.aspx" /><category term="luntbuild" scheme="http://devpinoy.org/blogs/barakoboy/archive/tags/luntbuild/default.aspx" /><category term="appfuse" scheme="http://devpinoy.org/blogs/barakoboy/archive/tags/appfuse/default.aspx" /><category term="cruisecontrol" scheme="http://devpinoy.org/blogs/barakoboy/archive/tags/cruisecontrol/default.aspx" /><category term="spring" scheme="http://devpinoy.org/blogs/barakoboy/archive/tags/spring/default.aspx" /><category term="hibernate" scheme="http://devpinoy.org/blogs/barakoboy/archive/tags/hibernate/default.aspx" /><category term="hudson" scheme="http://devpinoy.org/blogs/barakoboy/archive/tags/hudson/default.aspx" /><category term="java" scheme="http://devpinoy.org/blogs/barakoboy/archive/tags/java/default.aspx" /><category term="displaytag" scheme="http://devpinoy.org/blogs/barakoboy/archive/tags/displaytag/default.aspx" /><category term="jira. continuos integration" scheme="http://devpinoy.org/blogs/barakoboy/archive/tags/jira.+continuos+integration/default.aspx" /><category term="tools" scheme="http://devpinoy.org/blogs/barakoboy/archive/tags/tools/default.aspx" /></entry></feed>