Association of Information Management WordPress Blog

Interview with a Refactoring Guru

Posted by: pageman on: December 8, 2009

What IS students are saying about Philip Laureano’s Refactoring Workshop:

“…can this be an alternative class? sayang kasi….you will really learn a lot in this seminar… sana required ang IS students to attend this =( …we must grab the opporunity.” – Jecca Cervero

“…in this seminar, you will learn a lot of things especially about refactoring the code, it will be a great help to a lot of IS students ..I think it should be required!” – Marjorie Buce

“… coding has never been this simple, I now see and write codes from a different angle. This workshop has taught me beyond what I can learn in my programming subjects, such as time management, simplicity and code readability. If it wasn’t for this, I would still have a hard time reading and maintaining codes, even my own.” - Tish Mahtani

“… I’m not really into coding or programming stuffs. That’s why I attended this event to help me gain more knowledge about programming. What I liked most is being able to shorten heavy weight of codes into a very short and readable ones.” – DK Abrenica

“.. the first rule of programming is not to program at all! This seminar taught me the virtue of simplicity and cleanliness in code writing; it surely was a great headstart into the very cumbersome software development field that we IS students are to undertake in the near future. The opportunity of learning from one of the best senior developers and programming mentors in the country lead me to into realizing that the practice of coding need not be so complicated, that the best way is to simplify. Less is more!” – Uij Dollosa

“… When I see codes that are alike, I just usually copy and then paste it. But, does it make me a good programmer? Of course not! It also makes me unprofessional. Good thing, refactoring helps a lot. It makes my codes short, simple, easier to maintain and organized. In addition, I could be proud that I don’t do copy and paste :) When I learned about refactoring, I realized that I don’t have to make myself not love programming due to tons of confusing code lines and time consuming editing the whole program, because there’s a more easy way to understand and do it :) ” – Jill Montano

An interview with Refactoring Guru, Philip Laureano, of CodeLean

Last November 14, 21, 28 and December 8, the Association of Information Management hosted a refactoring workshop for DLS-CSB students and alumni conducted by BSBA-CA Alumni, Philip Laureano, who is now a Technology Evangelist from CodeLean. Here’s an interview by Paul Pajo, faculty adviser of AIM about refactoring.

Philip Laureano on refactoring interview by Paul Pajo

Paul Pajo: From a non-IT person’s point of view, what is code refactoring?

Philip Laureano: Refactoring is the part of a programmer’s job that they never teach you in school. Universities usually teach you how to build software like an engineer, but they don’t teach you how to maintain it once the software is built. In software development, we’re faced with impossible scenarios every day. We’re given deadlines, requirements, and schedules that change on a daily basis. Building the software is only 10% of the overall work involved. The other 90% of the work that is done by software developers is making sure that their applications are flexible enough to meet these seemingly impossible requirements It’s like having a professor who changes their mind every day, and holds you responsible if you’re unable to meet their requirements (no matter how unreasonable they might be). It’s not enough to build the software–you have to actively maintain it so that you’ll be ready to change it once the next requirement comes in

Paul Pajo: So where does or how does refactoring come into play?

Philip Laureano: Refactoring is the art of reorganizing your code so that it’s easier to change, maintain, and understand. This isn’t some new technology–it’s been around for almost four decades now. If you’re a software developer with at least four or five years of experience under your belt, there’s a good chance that you already do this but you probably never thought about it

Paul Pajo: It wasn’t called “refactoring” until fairly recently, was it?

Philip Laureano: I believe it’s been called that for four decades now. Actually, it’s been done for four decades but it really didn’t get much attention until Martin Fowler wrote his book on Refactoring.

Paul Pajo: Okay so, from your experience, why should students or even junior programmers learn refactoring from the get go?

Philip Laureano: It will give them an advantage that many people of their skill level rarely attain. It takes years to learn this stuff. Refactoring is about learning how to improve the quality of the code that you already have. It’s learning how to reshape your software in such a way that you can move faster than the competition because of the quality of your code. I would even say that refactoring should be as natural for a programmer as naturally as a doctor washes his hands before an operation. And from another standpoint, you really don’t get much peer respect from other programmers if you write code that is not refactored. So on one hand, it makes your job as a programmer much easier to do since refactoring makes your code easy to maintain. On the other hand, no programmer would want to work with you unless you can show them that the code you write is clean

Paul Pajo: Am I correct to say that the refactoring workshop you did in CSB is the one of the first if not the first refactoring workshop in the Philippines?

Philip Laureano: Yes, that’s correct. We wanted to see how it would affect people with some rudimentary programming experience. It was a mixed experience, but overall, I’d say the students learned quite a bit from the course.

Paul Pajo: Okay, this begs the question, if refactoring has been around for almost 4 decades and it’s such an important part of programming – why only now?

Philip Laureano: It’s because for the first few decades in software development, the focus has been solely on delivery and construction. But over the past ten years or so, we (as an industry) are slowly starting to realize that our problems are caused by the cost of maintenance, not the cost of construction. So you can come up with the most magnificent specification for software, but it quickly becomes obsolete when the next set of requirements come in and you can’t change your code fast enough to meet those requirements. Big Design Up Front (BDUF), in essence, is practically ineffective

Paul Pajo: There was a Red-Green Refactor: Test-Driven Development with .NET back in October 5 2006 – how is that different from what you’re doing?

Philip Laureano: I focus on the “Refactoring” part. You can’t do TDD without refactoring, and vice-versa. TDD helps you write testable code, but it’s the refactoring part that lets you improve the design of the code that you have already written. In fact, it’s pointless to show people what TDD does if they can’t refactor. They need to understand why their code needs to be clean; otherwise TDD can get messy and very, very, ugly. TDD’s basic concept is that you write the tests first, make the tests pass with the simplest (and even ugliest) code possible, and then you take the “ugliness” out of the code. It’s basically an introductory course. I assume that he doesn’t cover refactoring because it’s either too big of a subject to discuss or perhaps he thinks that enough people know how to refactor their code

Paul Pajo: I searched devpinoy.com – you’re right – refactor seminars/workshops are scarce.

Philip Laureano: You’d be lucky to find a single refactoring course within all of Southeast Asia.

Paul Pajo: How is technical debt related to refactoring and could you explain in layman’s terms what technical debt is?

Philip Laureano: In layman’s terms, technical debt is the kind of debt that you get into when you decide to skip critical development activities in favor of a shorter release cycle. It can be anything from deciding not to refactor or opting not to document everything because you think it takes too much of your time. Like any debt, you’ll eventually have to pay it back; otherwise, your productivity will eventually be crippled by that debt, and you won’t be able to work as efficiently as you did beforehand.

Paul Pajo: So from your experience, how much of a technical debt can be avoided if you refactor from the start?

Philip Laureano: All of it. It takes a lot of discipline, but you can pretty much cut your maintenance work to zero if you keep refactoring early. That’s what we have done with our projects at CodeLean.

Paul Pajo: And you’re saying this from experience? Can you compare your programming experience before and after you became disciplined in refactoring?

Philip Laureano: Yes, I’m saying this from experience. Back in 1999, when I was just starting out as a programmer, I didn’t know what refactoring was, nor did I understand how much the quality of my code had a huge impact on my own job performance. And now, in 2009, after working on dozens of both closed and open source projects, I’d say that refactoring has made my job really easy. I never have to spend more than an hour maintaining my code. Other shops typically would have entire teams looking through thousands of lines of source code to fix a bug. We keep our code so clean that we can spot the bug immediately and fix it. At first, refactoring didn’t make much sense to me–but it made a huge difference when I realized that I spent less and less time on maintenance because of refactoring. It also keeps our developers happy since we never get any complaints about ugly code. It just all works.

Paul Pajo: Can you go back to that “Eureka” moment? Was that a factor in you deciding to be a refactoring evangelist?

Philip Laureano: It wasn’t a “eureka” moment as much as a moment of frustration. I cared deeply about writing good software (even back then), and I couldn’t understand why people didn’t see anything wrong with their code when they decided to “Cut & Paste” it a dozen times over because they didn’t understand the concept of loops. I ran into so many cases where we had to stay overnight and fix a bug that was caused by a programmer who wrote ugly code. So I’ve become a big proponent of refactoring simply because teaching it to other people saves me the headache of having to clean up their code. At the same time, you really can’t get much respect among your peers if you don’t write clean code. Maintaining code is probably one of the most challenging parts about working as a programmer

Paul Pajo: So what exactly do you do now? From what I’ve gathered, it seems to be your dream job. Is this correct?

Philip Laureano: It is my dream job. I started off as a lead developer and CodeLean told me that they needed someone to help them get their shop set up with the best coding practices. So for the first six months, we got everyone setup with TDD, Continuous Integration, Refactoring, and Automated Web Acceptance Testing. Once we were done with the setup, CodeLean decided to focus more on training other developers. Now, I’m going to be a trainer/evangelist. So my job is to write articles, develop my personal projects, and promote the company’s courses with my blog posts and technical articles. It’s a dream come true for me because I get paid to do something I already do as a hobby.

Paul Pajo: That’s awesome! Any last words for students and programmers who might be interested in refactoring?

Philip Laureano: If you’re serious about being a good developer, then you must learn refactoring. It’s a critical skill that determines whether or not you’re a real programmer, or if you’re just someone that happens to write code. Any code monkey can write a program, but it takes a real human to write readable code for other humans. If you want to stand out as a programmer and be counted among the humans, then you definitely need to refactor your code. Always.

If you want to contact Philip Laureano about refactoring and other code-related matters, follow him on twitter.com/philiplaureano

You should add me on Plurk here:

“Due to flooding caused by typhoon Isang, DLS-CSB is suspending classes&work today, 17 July. All campuses except CSB Hotel shall be closed”

got the txt/sms from the IS Chairperson, enjoy the day!

from the De La Salle – College of St. Benilde website:

“This morning, DLS-CSB released an announcement on suspension of classes following the CHED regulation, which was sent to the College at 7:30 am. At 11:30 am, administrators of the College met with DOH officials and were informed of the one confirmed case, which prompted the amendment of the previous announcement.”

stay tuned!

Jilianne Leigh vs. Jericho for the first evar STRAW DRAW World Championship!

Job Opening: Fundraising Officer for WWF Philippines

Posted by: pageman on: January 27, 2009

There’s no Biz like E-BIZ!

Posted by: vinchyvim on: January 27, 2009

ebiz-copy1

Troubleshooting 101: Shoot ‘em Bugs Down!

Posted by: vinchyvim on: January 27, 2009

troubleshooting101-1copy

Learn how to deploy an ecommerce app on Ruby on Rails!

Posted by: pageman on: December 1, 2008

Be a WebDev Hero! Learn Heroku

De La Salle – College of Saint Benilde Information Systems student Arjay “JayThree03″ Orcasitas will be presenting to his peers how to deply Spree, an online commerce app on Ruby on Rails over Heroku on Wednesday, December 3 2008 at CL8, DLS-CSB Main Campus from 1030AM up to 230pm

Check out also the spree-user thread where Spree Sean Schofield becomes interested in Heroku:

“Now you have got me interested in Heroku and Spree :-)
Please do a blog post or something on this so we can all learn what
you did.  I’m also curious how you resolved the Rails 2.1.2 problem?
Did you use an earlier version of Spree or did you just change the
Rails Version in the Spree code?  I bet the current code works with
Rails 2.1.0 if you changed the required Rails version only – but I’m
curious to know for sure.”

If you want a preview of what’s going to happen, check out these screencasts!

Be a WebDev Hero! Learn Heroku

Posted by: pageman on: December 1, 2008

Arjay Orcasitas’ workshop on how deploy the Ruby on Rails online commerce app, Spree, on Heroku

Be WebDev Hero! Learn Heroku

CL8, De La Salle – College of Saint Benilde Main Campus, Taft Ave, Wednesday 1030am-230pm, 3 Dec 2008

Yeah. This is how we roll. Or we role. Not only trying to be role models but ramp models as well.

Belated Happy Birthday to AIM President Uij Dollosa – ask him to add you to his Multiply blog so you can see the other pictures of CHALK’s Style Brigade 2008 in De La Salle – College of Saint Benilde.

Luigi a.k.a. Uij Dollosa at the Chalk Style Brigade 2008 catwalk

RSS HN

  • Browser Pong
    UpA
  • Rackspace Goes Down. Again. Takes The Internet With It. Again.
    Another day, another Rackspace outage. The hosting company had a complete and total failure today that took down a number of big sites on the Internet, including ours. This has been happening all too often in recent months, including downtime just last month. The failure apparently originated in the company’s Dallas-area server farm. But unlike previou […]
  • Bingo Card Creator Annual Report
  • Rackspace Investigating Current Issue
    Posted at 03:48 PM | Permalink Comments
  • W3 gets new Look
    W3C develops technical specifications and guidelines through a process designed to maximize consensus about the content of a technical report, to ensure high technical and editorial quality, and to earn endorsement by W3C and the broader community. W3C provides a number of views of its specifications, including: by technology topic (such as “all the H […]
  • Predictions for 2010
      Sign in   Terms   Report Abuse   Print page  |  Powered by Google Sites Comments
  • DRM Fiasco Ruins James Cameron’s Avatar 3D Preview
    Avatar, the long-awaited science fiction epic from James Cameron will launch this week, but already some lucky individuals have seen the movie. The same cannot be said of attendees at a 3D preview showing in Germany yesterday though. The movie’s DRM ‘protection’ system failed and the video could not be decoded. ‘Avatar’ from Tit […]
  • Death of OS X VLC Exaggerated
    From VideoLAN Wiki 1 VLC for Mac death is "greatly exaggerated" / What is Lunettes? 1.1 VLC for Mac must attract designers. 1.2 VLC for Mac's interface code comes from the 2000s. 1.3 VLC for Mac need a good interface to be the best Video Player. VLC for Mac death is "greatly exaggerated" / What is Lunettes? VLC for Mac is being maint […]
  • ACM trying to subvert open access
    How shellfish saved the human race The Boing Boing 20, pt. 2: the best indie and iPhone games of 2009 Polanski and Kubrick: Two occult tales All you need to know about the Motorola Droid Review: Joey Roth Ceramic Speakers The Forgery of Venus, by Michael Gruber Swell Season on Boing Boing Video Video: man in Japan weds anime game character N.A.S.A. feat. Tom […]
  • C Craft
    I began my journey with BASIC, when I was easily amused: for example, I liked being able to change the colour of the screen with a simple command. A few years later, I heard about C. I followed a poor-quality 14-part tutorial for 14 days. I hated it: there was this extra compilation step, which often produced cryptic error messages. It seemed unnecessarily f […]
  • A programmer's personal story about finding a job in this economy
    So almost two months ago, I found a new job. After I came back home from Seattle, my wife and I stayed at her dad's house - he helped us to get back home, provided a place to stay for us and our children, on the expectation that it would take me around 2 months (in the current economy) to find a job. I looked daily - I started out with a narrow focus, l […]
  • A Gentle Intro to MVC
    A gentle introduction to MVC (part 1) This article was written by nemetral. Voices matter! Please feel free to share your opinion, ask for more explanations or point out divergences using comments. No time to read this now? Bookmark it and come back later.. MVC is certainly the widest spread architectural pattern in today’s webdevelopment landscape. Br […]
  • US Gov Requests Feedback on Open Access – ACM Gets it Wrong (Again)
    By Naty Hoffman In 2008, legislation was passed requiring all NIH-funded researchers to submit their papers to an openly available repository within a year of publication.  Even this modest step towards full open access was immediately attacked by rent-seeking scientific publishers. More recently the White House Office of Science and Technology Policy starte […]
  • Score Two Wins Against Software Patents
  • Twitter app store oneforty gets funded
    Back in June, Twitter app store oneforty became the first TechStars Boston company to get seed funding (just two weeks after presenting). Now it has become the first one to get institutional VC funding, with a small round that was led by Flybridge Capital Partners. According to a regulatory filing, Oneforty has secured $1.62 million of a $2.37 financing with […]
  • A Pattern Language for Parallel Programming
    Read me first! ⇒ Our Pattern Language (notes) (Glossary)(Blogs) (Pattern Template) (Pattern Abstract) (Pattern Workshop) (Pattern in Education) Applications Structural Patterns Computational Patterns Agent and Repository Pipe-and-filter Backtrack Branch and Bound (notes) Monte Carlo Methods(notes) Arbitrary Static Task Graph Process Control Circuits(notes) […]
  • "Google Qualified" Developer Directory
  • Tell HN: The joojoo guy is live on mixergy now
    Add the word Mixergy if you want others to see it.
  • Prague from the TV Tower - 18 Gigapixel Panoramic Photo
    Win $1000 - It's a Treasure Hunt! Yes, it's is a Treasure Hunt! We'll release 30 clues: 10 every day for 3 days, starting this Monday (18.12.2009). If you find all 30 clues and you're the first one to send it to us, you win $1000. Of course it might be easier if you get your friends to help you, but then you might have to share the prize […]
  • EtherPad Open Source Release
    As promised, we hereby release all the source code to EtherPad. http://code.google.com/p/etherpad/ Our goal with this release is to let the world run their own etherpad servers so that the functionality can live on even after we shut down etherpad.com. If you are just interested in running an etherpad server, these instructions should get you up and running. […]

RSS I LOVE TO CODE!

  • Sr. Web Application Developer - Professional Services at RightNow Technologies (Bozeman, MT) December 18, 2009
    Description As a Professional Services Software Developer, you will be part of a team that is engaged in software customization and integration projects for some of the biggest companies in the world. If you want to have a part in helping customers like Sony, Linksys, EA or iRobot to deliver great experiences for their customers by delivering high-quality so […]
  • Embedded Software Engineer at Qualcomm (San Diego, CA / Santa Clara, CA / Boulder, CO) December 18, 2009
    QUALCOMM, ranked #16 by Fortune Magazine's annual '100 Best Companies to Work For' is headquartered in San Diego, California. QUALCOMM CDMA Technologies (QCT) is the largest provider of 3G chipset and software technology in the world, with chipsets shipped to more than 50 customers and powering the majority of all 3G devices commercially avail […]
  • Senior Web Application Developer at RightNow Technologies (Bozeman, MT 59718) December 18, 2009
    Description Do you enjoy solving hard problems that have a real impact? Millions of people use RightNow customer portal software to answer questions and solve problems every day. We take their needs, listen to their ideas, dream up and implement solutions that make their lives easier. We need bright and motivated engineers to help us deliver cool, new, SaaS […]
  • Web / Python / Django Programmer at ShopWiki (New York, NY 10011) December 18, 2009
    ShopWiki.com is an international comparative shopping search engine that accumulates its data from crawling online stores. We are looking for an experienced UI developer to work on our consumer-facing web front end. An ideal candidate will know the web development stack from server-side to javascript, be familiar with Django, understand principles of website […]
  • Development Manager - QA Test Systems at RightNow Technologies (Bozeman, MT 59718) December 18, 2009
    Description The Development Manager – QA Test Systems will lead the creation and implementation of technical white and black box testing across our product suite by leveraging planning, people, infrastructure and processes. The key activities will be organizing and directing multiple teams of Software Engineers to deliver superior quality and on-time p […]
  • Senior Developer - Current Engineering at RightNow Technologies (Bozeman, MT 59718) December 18, 2009
    Description The following position is located at our headquarters offices in beautiful Bozeman, Montana, where the clean air, big sky vistas, world-class outdoor recreation, and small town community feel combine to create an extraordinary living experience. Add in shopping, great schools, parks, world-class museums, family activities, arts and cultural oppor […]
  • Application Engineer at RightNow Technologies (Chicago, IL) December 18, 2009
    Description As a Professional Services Application Engineer, you will be part of a team that is engaged in custom software development, integration, and customization projects for the implementation of the RightNow product line. In addition from time to time you will assist customers in the configuration of RightNow applications. **You can work remotely and […]
  • Manager - Knowledgebase/Search Team at RightNow Technologies (Bozeman, MT 59718) December 18, 2009
    Description Do you enjoy solving hard problems that have a real impact? Millions of people use RightNow software every day to search, answer their questions, and collaborate with others. We try to anticipate their needs and listen to their ideas, in order to dream up and implement solutions that deliver great customer experiences. We need bright and motivate […]
  • Software Developer at Veson Nautical (Boston, MA 02116) December 18, 2009
    As a Veson Nautical software developer, you will help improve, develop and ensure timely delivery of current and new products. You will prepare specifications, design, code, test, document, and support software that makes Veson Nautical stand out from the competition. You will collaborate with QA to develop effective test plans to assure high-quality softwar […]
  • Senior Web Developer at Armor Games (Irvine, CA 92606) December 18, 2009
    Who we are === Armor Games is a online community for casual gamers. We offer an online destination hosting over a thousand flash games with new titles launching every week. We also produce game titles for both the Flash and iPhone platforms. We are a small company of passionate gamers and developers looking to add a few more members to our web development te […]
  • Software Manufacturing Engineer at SILICON LABORATORIES Austin, Texs (Austin, TX 78701) December 18, 2009
    SOFTWARE MANUFACTURING ENGINEER SUMMARY: This is an entry level software engineering position supporting/developing semiconductor manufacturing software tools. Prior Semiconductor expertise is a plus. ESSENTIAL FUNCTIONS: • Collect requirements, develop software projects, and rollout implementation • Extend existing functionality, fix bugs, and m […]
  • System / Network Engineer at MaxPoint Interactive (Austin, TX) December 17, 2009
    MaxPoint Interactive is seeking a highly motivated person for a full-time IT position. The person in this position will define and implement the IT infrastructure. As part of a small fast growing company you will be able to contribute directly in significant ways. Responsibilities: • Design, deploy, test and maintain monitoring systems (both functional […]
  • Senior Java Developer at Acuitus (Palo Alto, CA 94304) December 17, 2009
    Acuitus is looking to fill multiple full-time, junior- to mid-level Java software development positions at its Palo Alto, California headquarters. Background Acuitus is an established, mid-stage startup that is creating the next generation of computer-based tutoring systems. Our success stems from a highly sophisticated approach that bridges many different d […]
  • Multi-Skilled Programmer/Architect/Technologist at LShift Limited (London, United Kingdom) December 17, 2009
    LShift are looking for skilled software engineers to join one of the most interesting technical teams around, how about submitting a CV and some code samples? Our outlook is moulded entirely around the principle of recruiting only candidates who combine breadth and depth of outlook and experience. We do not recruit people to slot into a particular technical […]
  • Flex Developer at Familylink.com, Inc. (Provo, UT 84604) December 16, 2009
    Flex Developer—In house position FamilyLink provides the platform for the family social experience. Family members can create family generated content, preserve interactions, add historical content and communicate across a number of mediums. POSITION DESCRPTION The Flex Developer will program UI components and in Flex, AS3 according to design specs as […]
  • Software Development Team Lead, Control Panel Team at Rackspace (Blacksburg, VA) December 16, 2009
    As the Software Development Team Lead for the Control Panel Team you facilitate the day-to-day tasks of a team of software developers. You work in a fast-paced, Internet-driven industry where you are expected to eat, sleep, and dream about making your team successful, motivated, and engaged to create better products. You provide administrative, technical, an […]
  • London based web developer at mySociety Ltd (London, United Kingdom) December 16, 2009
  • Java Developer at UW IceCube Research Center (Madison, WI 53703) December 16, 2009
    Java Developer IceCube Career and Job Opportunities Where Science and South Pole Meet PVL #62520 Job Requirements * Four or more years experience with Java programming for large distributed software projects in a LINUX computing environment * Two or more years expertise with SQL and programming for database-driven applications * Experience with data manageme […]
  • Senior Systems Engineer at Spot Trading LLC (Chicago, IL) December 16, 2009
    Job Description: The Senior Windows Engineer is responsible for the design, implementation and support of Windows and Virtualization Infrastructure at Spot. The Systems Engineer is charged with the responsibility of ensuring Spot's Microsoft and Virtual Infrastructure is performing at the highest level possible. The SE will be responsible for performanc […]
  • Data Systems Architect at Wireless Generation (Brooklyn, NY 11201) December 16, 2009
    Data Systems Architect Wireless Generation creates innovative tools, systems, and services that help educators teach smarter. With its mobile assessment software, the company invented a better way to give classroom assessments and make data-based instructional decisions. Now Wireless Generation has broken new ground with technology that analyzes student data […]