archives
- June 2009 (2)
- May 2009 (11)
- April 2009 (5)
- March 2009 (4)
- February 2009 (3)
- January 2009 (5)
- December 2008 (1)
- November 2008 (2)
- October 2008 (4)
- September 2008 (2)
- August 2008 (4)
- July 2008 (10)
- June 2008 (5)
- May 2008 (5)
- April 2008 (10)
- March 2008 (13)
- February 2008 (3)
- January 2008 (7)
- December 2007 (7)
- November 2007 (9)
- October 2007 (10)
- September 2007 (1)
blogroll
As an undergraduate, one of my favorite classes was Software Engineering. It was in that class, I learned about applying Computer Science theories to the “real world”. We learned about things such as CVS, Cron, Python, UML, etc…
One of the books that was recommended reading, and remains in my library, was The Pragmatic Programmer: From Journeyman to Master. Chapter 3 talks about the basic tools needed for any programmer. Here is a review and description of the tools I use and consider fundamental.
1. Plain Text
There are many advantages to using plain text as the format of choice for programming. The keys for me are: readability, easy manipulation and portability.
I prefer to use XML based formats (XHTML being the primary format) for much of what I do, since primarily I program web applications. I also use YAML for configuration files, mainly using Symfony.
2. Shell
My development environment of choice has always been within a Linux distribution. Starting with Red Hat, then Gentoo and now Ubuntu. The Bash Shell has been my constant companion in the terminal in each distribution. When I must work on a Windows machine, then it’s Bash via Cygwin.
To save countless hours and improve your productivity tremendously, invest some time daily into learning more about how to use the shell. Here are a few resources to get you started:
- BASH Programming – Introduction HOW-TO
- Advanced Bash-Scripting HOWTO
- Bash by example, Part 1
- Bash by example, Part 2
3. Editor
I started with Emacs, then converted to the darkside (Vi). I now use the Eclipse editor mostly. When I’m living in the terminal it’s Vi or Vim for me. As with your shell, time spent learning about how to use your editor will yield massive dividends.
4. Source Code Version Control
If you are not using some form of version control, you are seriously living on the edge! I started out using CVS (or as one professor said, “Save Your Ass”), but then graduated to SVN. You will also want to spend consistent time learning how to properly use the version control system.
Another reason text formats are so useful is that changes are easily tracked using version control.
5. Debugging
In my C++ days, GDB saved me many hours of painful bug chasing. Now, working mostly in PHP/Javascript environments, I use Firebug, the built in Symfony tools and Xdebug. When in Python, I just use the Python Debugger.
6. Text Manipulators
Now that you have all those text based files, you need to be able to quickly manipulate them. You will want to spend some learning about regular expressions. Most of the tools dealing with text manipulation use regular expressions. I prefer to use Python as my tool of choice (sorry Larry). Take the time to study the tools mentioned here.
7. Code Generators
The code generator I use most often is the one Symfony provides. Otherwise, I use Python to create scripts, that given certain parameters or configuration files, pre-generates some template code.
8. Testing Framework
I have just started to incorporate unit tests into my projects using Lime within Symfony. Before, I would write out the results that were expected by various inputs and run those tests manually. Our development group is now implementing the “build the test framework first” strategy into our agile methods.
What are your essential tools?
about
Find out more about the author here.
categories
- Blogging (5)
- Business (48)
- Design (3)
- Django (1)
- FireFox 3 (2)
- General (4)
- GTD (2)
- Holiday (3)
- IE 8 (1)
- iTouch (2)
- Life 3.0 (2)
- Life Hacks (37)
- Management (2)
- Marketing (10)
- Mobile (1)
- offbeat (3)
- Outlook (1)
- Personal Development (16)
- Podcasting (1)
- Productivity (24)
- Programming (13)
- Project Management (1)
- Python (1)
- Reviews (2)
- Sales (6)
- Social Networking (12)
- Symfony (1)
- Systems (2)
- Travel (1)
- Twitter (2)
- Ubuntu (7)
- Video (4)
- Web Design (1)
- Windows 7 (1)
- Windows Vista (1)
- Windows XP (1)
- xv6800 (1)
members
most commented post
- » Managing Your Life With GTD, Online Tools and a File Cabinet - 20
- » How To Download Ustream.tv Videos - 15
- » Get Symfony Installed in 20 Minutes on Vista - 13
- » Plurk Unleashed! - 12
- » Using The Web To Save on Holiday Gifts - 12
- » What Online Social Media Networks Do You Participate In? - 11
- » 19 Secrets From LA's Top SEO Firm - 10
- » The Story Behind iPhone.com - 10
- » Running Microsoft Office 2007 Under Wine 1.0 in Ubuntu Hardy Heron 8.04 - 8
- » CSS Equivalent of Prototype? - 7
recent entries
- Effective Meetings on a Budget
- Internet Marketing: How-to
- Tweetie for Mac OS X Now Allows Proper Retweets
- Online Garage Sale
- What tabs do you open first when launching your browser?
- Are Social Media Networks Right for Your Business?
- 10 Ideas for More Powerful Negotiations
- Turn Your Windows Mobile Phone into a WiFi Router
- Mobile Productivity with the iPhone or Touch
- What Ideas Have Increased Your Productivity the Most?
Wordpress theme by Wordpress Themes & made free by Internet Marketing Center
Copyright 2008, ThinkingSerious.com

April 6 2008
Great post! A bit inline-link heavy, but still very useful!
April 7 2008
Cool, I am intrigued to see your SE course website, so can you please point me to it?
Thanks
April 7 2008
[...] Tools for Programmers Are you using these tools? If not, you should think about [...]