Link: The Duct Tape Programmer

September 24, 2009

This is a great Article I found on Joel On Software. In this article Joel writes about the concept of the Duct Tape Programmer. This is the programmer who gets things done and doesn’t feel the need to show off their software architect skills by over-engineering software. The Duct Tape Programmer is similar to the fictional developer I called “Jim” in my post A Tale of 2 Developers.

Joel’s rant is truly entertaining and accurate as well. Here’s an example:
“You see, everybody else is too afraid of looking stupid because they just can’t keep enough facts in their head at once to make multiple inheritance, or templates, or COM, or multithreading, or any of that stuff work. So they sheepishly go along with whatever faddish programming craziness has come down from the architecture astronauts who speak at conferences and write books and articles and are so much smarter than us that they don’t realize that the stuff that they’re promoting is too hard for us.”

I highly value the concept of the practical programmer who writes solid code, regardless of the newest programming fad. Give both articles a read, then come back and tell me your thoughts on the matter.

Sphere: Related Content

3

Rework and The Smahing Book Available for Pre-Order

August 25, 2009

Today I am going to recommend 2 new books that have just become available for pre-orders.

rework 150x150 Rework and The Smahing Book Available for Pre OrderThe first is called Rework by Jason Fried and David Heinemeier Hansson of 37Signals. Their first book, Getting Real, is a great read for any Software Development team. It will be out on March 9, 2010, and is only $14.96 for the hardcover version. According to the authors “Everything we know about business is in Rework.” If you’ve ever read or heard Jason Fried speak, that means it will definitely contain a lot of great information.

Second, if you read Smashing Magazine, you probably know their long awaited design book, The Smashing Book is also available for pre-order. Right now they are offering their book for 20% off ($23.90 USD), with free shipping. It will be available sooner that Rework (late September 2009). The early reviews are great, and if its anything like their regular posts, it too be be informative, and a must read. book 3d 320px 150x150 Rework and The Smahing Book Available for Pre Order

Give these a try. If you happen to have a pre-release copy, or have some other reading recommendations, I’d love to hear in the comments.

Sphere: Related Content

Comments Off

Software: 6 Questions to Ask Yourself When Deciding to Build or Buy

July 20, 2009

A common dilemma of many tech managers and businesses in general is when presented with a business problem, do you build your own software or do you buy? For some companies, this is an easy answer. Some development teams are not equipped with the skills to build a particular tool or product. Other companies just do not have any budget available for the product needed, but do have ample resources to work on development. But for the teams and situations that fall in that middle or gray area, what do you do? buildbuy Software: 6 Questions to Ask Yourself When Deciding to Build or Buy

So, how do you decide to build or buy? Through my experiences I have compiled a short list of questions you need to ask yourself as a technology manager.

  1. Do I have a budget to buy this product? – If not, the answer has been made for you. You will need to build a product that does the task, or at least can hold you off until there are available funds for purchase. Beware of the trap of building a ‘good enough’ product that then stays long past its shelf life.
  2. Can my team build this? – This question has a couple of things to consider. Does your team have the skillets to build the product. Development teams have roles, and sometimes its obvious. For example a web team that builds games is just not going to build a billing system for you. Second, do you have the available resources and time? You may have the talent, but will you be able to set aside the right talent for the time required? They may be needed elsewhere.
  3. Does developing in house cost me in other ways? – Once again this speaks to your talent base. Maybe you can put a developer on this application for the time required, but are you missing out on future development opportunities? Is this project so far from their original skills and desires that you will diminish team morale? Less tangible than cost, these are still important to consider.
  4. Will the commercial software suit my needs? – My experience has been that many products have a set fee, but then you need to factor in the additional cost of customizations or additions that will suit your business needs. Or you think you can get away with a basic implementation, but soon need to upgrade, incurring additional costs. Or if you are paying for a subscription model, there may come a time when this may not be cost effective anymore.
  5. What will the cost be to build? – Again there are a couple of things to look at here. First, how many development hours will a project take? To get a good assessment, you need to be skilled at creating project estimates. If done incorrectly you can end up in a losing proposition. Ask yourself, does your company have a history of feature creep? If so, this project will inevitably take much longer than originally thought. Finally, what is your possible productivity loss? Does putting 2 developers on a six month project keep you from developing a new tool that can be monetized? As Opportunity costs are just as important as accounting cost.
  6. Could this be outsourced? – Sometimes the solution is not to build in house, or buy, but rather to have a custom application developed for you. It has been my direct experience that a lot of outsourced code, while possibly cheaper initially has cost more to grow over time. Digging through lines of code to fix bugs or to add a feature ends up wasting a lot of time. If you expect the contracting company to support the product, make sure they have been around awhile, and that you feel confident they will be there in the future. Also make sure their business model allows for incremental updates and support. Many consulting teams work on building and deploying full tools, and are not interested incremental additions.

I have to admit with the increased amount of opensource code in the community and advanced APIs to work with, I tend to build. We can usually find a good opensource product, edit and grow it for our needs, and save a lot of time and headaches. Or we buy a small commercial component that takes care of some aspect of the tool that we could/should not build, then build around that component.

Do you have similar issues? How do you decide whether to build or buy? Maybe you made a decision and wish you had chosen the other? Did I miss a major point in my decision process? I’d love to hear from you. Join the discussion in the comments. We should all learn from each others experiences.

image by msmail

Sphere: Related Content

Comments Off

Web Tools Tips and Talk: #9

July 6, 2009
Tags: , ,

It’s been another 2 weeks (plus holiday weekend), so here is another wrap up of the tools, links, and other sites that came across my various readers, etc… It could be a good resource, an interesting blog post, or anything I found useful since the last Web Tools Tips and Talk, #8. truth 187x300 Web Tools Tips and Talk: #9

NOTE: If you find these useful please note this is not my full list of links, tools and news. As I come across links for use, I add them all to my Effective Development Delicious.com page.
Sometimes I come across a quick link that I don’t want to wait for the Wrap-Up. Those links I send out as I find them on my Twitter account.
Finally, you can always follow my RSS Feed and check out the Tools Tips and Talk Archive.

Feel free to suggest other links in the comments.

Web Tools

  • Colabolo Team Collaboration – I do not use this product but I believe strongly in collaboration software, and I also believe in having choices, so here is one you might want to check out.
  • ICSI Netalyzr – Having trouble with your internet connection? This tool will help you deduce if you are having a firewall problem, or blocked port, etc…
  • pingdom – This site was famous for pinging a site of your choice, and emailing you if it was down. Now they have opened their full site monitoring for free for one site. Great feature at a great deal.

Web Talk/Blogs

Web Tips/Resources

Enjoy, and have a good week.
Post any good resources or links you use in the comments.

image by seanbonner

Sphere: Related Content

1

Using the Basecamp API to Create Project Reports

June 30, 2009
Tags: ,

A few months ago I wrote a post describing the benefits of using project collaboration software. It helps team members communicate, it avoids information hording, and at any time management can check in and see a project’s progress. tpsReport2 220x300 Using the Basecamp API to Create Project Reports

At my job we use BaseCamp. It is a paid product that is extremely powerful and truly helpful. BaseCamp allows you to get projects done, and in my experience does not seem to add a layer of distracting work or complexity. Its features include a wiki, messaging system, a place to store files, and even chat. There is a tool for almost every group’s style. But for my purposes it was lacking some much needed reporting features. This is by design. The creators of BaseCamp felt that instead of developing tons of reports that never to EXACTLY what everyone needs, they would build an API. With the API, you could then in theory build reports that suit your specific needs.

We have a weekly managers meeting where we briefly run down all our open projects and their status. The responsible party can then update and if necessary elaborate briefly on specific items within their project. It is a great meeting to have because it gets all parties from various groups in one room where we quickly keep everyone abreast of the projects being worked on. People in theory can get all the same information from BaseCamp themselves, but reality is this is not always the case. Having the meeting lets us discuss small items with other groups and departments without having to have a longer time consuming meeting.

To create a report for this meeting, I decided to try the BaseCamp API. I figured a quick report that can generate a concise PDF to print out and bring to the meeting will work best. I sat down and used my regular tech community channels to see if anyone has created a BaseCamp API module for ColdFusion. Sure enough, I found baseCamp.cfc from Terrence Ryan. It was exactly what I was looking for. It was written for the older BaseCamp API, so I had to plug in some new methods, but it was a real time saver because it handled all the requests, and parsing of the responses.

I created a report that gathers the list of open projects and their details. First you login with your BaseCamp credentials. Hers is something to take note of. The API code is now logged in as you. If you are creating a report of all the projects to share, then you MUST login as a user who has access to all the projects. It needs to be your account creator, or very high level user. Alternatively, you can simply create a user called reports, and have them automatically added to ALL projects. Then hardcode your API tool to login as this user, and you will have the highest level access to print accurate reports.

Once logged in I grab all the active projects. Then I loop through the project list and make additional API calls to collect the open to-dos and incomplete milestones for each project. Then when I have all my data, I loop through all this information, and format the projects with all their remaining work and due dates.
I also created a longer report that retrieves closed items as well, and adds some more verbose details.

I also had a second need for a report. I have a group of developers that report to me. Each week we go over their assigned tasks and discuss progress. It also gives us a good chance to discuss common problems others may have come across, and share information. The first few weeks after implementing BaseCamp, I was forced to click on every project and then see what was assigned to who, or click on every person and grab their assigned to-do list. The second option was better than the first, but both were little wasteful and time consuming.

Instead, I created a report. First I retrieve all active users from BaseCamp. I display those names as a series of checkboxes. Now any user I csn scroll through the list, and grab the assignments for all the users they checked off at one time. When I loop through the user list, I grab each to-do assigned to them. I can also collect the project information and group the report together by project. So now we can simply review the list of projects and the assignments as a team. It helped keep my meeting organized and productive.

Once I retrieve all the BaseCamp info, parse it, and output it, I have an HTML and PDF view of the reports. Converting output to PDF is extremely simple in ColdFusion, and this gives me great flexibility. Now we can print out a stack of reports when needed, or in the case of my personal group’s meeting, I can simply view it on the computer.

BaseCamp and ColdFusion really paired nicely using the API. I have another report I plan to code soon, involving timesheets. I plan to be able to create timesheets based on project, person, and for various timeframes. I will keep you updated on how it goes.

Does anyone else use the BaseCamp API for their needs? Please share your ideas and experiences in the comments section. I’d love to get new ideas to make BaseCamp even more useful.

image by nataliej

Sphere: Related Content

4

Web Development is a Creative Career

June 23, 2009

Web developers are different breed of technologists. We are increasingly creative. In my experience this comes from a few factors. On smaller agile teams, developers are asked to work on many roles of a project, and in some cases this includes design. Also unlike traditional software not all web developers are solely computer science majors. They may be designers, or business students who have a passion for the web. ascii pi Web Development is a Creative Career

A good web developer is interested in design, performance, user experience – the full range of a tool. They do not code assembly line style. At most shops these days, the same development team that built a tool or product will then maintain it. We live and breath the website and the product. In many cases, the development team is be the group most in tune with the product.

Developers are not always given the credit they deserve from management for being creative. I’ve even seen technical managers who have yet to recognize these facts. They come from an old school mentality, assigning bits and pieces of a web project to their team, having them work in a silo. Their teams are not aware of the bigger business decisions, and feedback is not valued. Their creativity is suppressed, forced to work on implementing mock ups and coding to spec.

Because the actual developer is the one who will work closely with the project, they need to know as much as possible about it, and have the ability to be creative with its individual elements. Like a designer, or writer, developing software is creative, and you need to be passionate about it. It is the developer who should be able to spot the flaw in a design element, and be able to voice their opinion on a replacement. I realize projects have their client requirements, and business elements that are out of our hands. But the creativity of the developer will enable the business requirements to mesh with the real practical aspects of the tool.

Involving developers on a project from its early phases should result in a clean, effective tool that otherwise may not have been achieved by designers and management alone. They can bring a wealth of knowledge to a project both in capabilities and enhancements.

image by jorel314

Sphere: Related Content

Comments Off
Blog Widget by LinkWithin