archives
- August 2010 (1)
- May 2010 (1)
- April 2010 (9)
- February 2010 (1)
- January 2010 (1)
- November 2009 (1)
- August 2009 (1)
- 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 (6)
- Business (54)
- Copywriting (1)
- Design (3)
- Django (1)
- FireFox 3 (2)
- General (4)
- GTD (5)
- Guest Posts (3)
- Holiday (4)
- IE 8 (1)
- iTouch (2)
- Joomla (1)
- Life 3.0 (3)
- Life Hacks (44)
- Management (4)
- Marketing (12)
- Mobile (2)
- offbeat (3)
- Outlook (1)
- Personal Development (18)
- Podcasting (1)
- Productivity (30)
- Programming (16)
- Project Management (2)
- Python (1)
- Reviews (2)
- Sales (6)
- Social Networking (13)
- Symfony (3)
- Systems (3)
- Travel (1)
- Twitter (2)
- Ubuntu (7)
- Video (4)
- Web Design (3)
- Windows 7 (1)
- Windows Vista (1)
- Windows XP (1)
- xv6800 (1)
members
most commented post
- » How To Download Ustream.tv Videos - 29
- » Managing Your Life With GTD, Online Tools and a File Cabinet - 20
- » Get Symfony Installed in 20 Minutes on Vista - 16
- » How to Send Email at a Specific Time With Gmail - 14
- » Plurk Unleashed! - 12
- » Using The Web To Save on Holiday Gifts - 12
- » What Online Social Media Networks Do You Participate In? - 11
- » Top Online Backup Solutions - 11
- » 19 Secrets From LA's Top SEO Firm - 10
- » The Story Behind iPhone.com - 10
recent entries
- Use Your Feed Reader to Quickly View All Your Unread Google Apps GMail
- How to Add a Vanity URL to your Facebook Page in Two Minutes
- Using Custom HTML with Flash or Javascript in Joomla without Modules
- Reduce Distractions and Stay in the Zone with an Aggressive GMail Filtering Strategy
- Do It Yourself Reputation Management with Google Reader
- Fast Low Cost Recipe Resources for the Starving Student or Busy Entrepreneur
- What is in your GTD Weekly Review Checklist?
- Automatically Login a User After Registration Using sfGuardPlugin in Symfony
- Why High Quality Web Content is Necessary for Success
- How to Forward an Email as a Text Message
recent comments
- ThinkingSerious: Some great advice on setting up a GTD dashboard from @rmg2768: http://simplenote.squarespa...
- ThinkingSerious: @rmg2768 Thanks for your comments and suggestions! When I tag action items with [A], I don’t...
- rmg2768: Evidently, the latest web view at Simplenote no longer needs the script I mentioned above, and works well...
- rmg2768: I like using “td” to prepend – it is easier to type, and doesn’t (usually) show up...
- ThinkingSerious: Oops … I misused the word allot (an actual word BTW) here .. fixed and thanks @morris.
Wordpress theme by Wordpress Themes Websoft & made free by A1spysoftware.com
Copyright 2010, 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 [...]
September 2 2009
Thanks,
this post was very useful for myself. It opened a lot of interesting tools and the Symfony.
I will get down to Eclips tomorrow.