About This Blog

What would the world's most awesome web development environment be?

Well, it would be AWESOME: It would be really awesome. Really. People who saw it would say: "Awesome!"  That's the ultimate test. Everything else is a detail.

But God is in the details:
  • COMPACT:  Everything in one directory tree, not scattered all over hell.
  • PORTABLE:  You can put it on a USB stick and take it everywhere. No installation.
  • CROSS-PLATFORM: Runs on Windows, runs on Linux. Runs on Mac.
  • RELIABLE (TOOLS): If you spend lots of time making your tools work, you won't use them.
  • RELIABLE (CODE): If you spend lots of time making your code reliable what's the point?
  • TESTABLE and TESTED. Tests run all the time. Tests on tools. Tests on code. Testing is a key to reliability.
  • EFFORTLESS: If you've got to spend a lot of time learning or using it, you won't.
  • INCREMENTAL: The key to being productive and effortless: write a line of code, test it, add it to your code base. Add a line of test, test it, add it to your test suite.
  • EDUCATING/COACHING: It will teach you how to use it, incrementally. It will study how you use it, and teach you how to use it better.
  • SOCIAL/COLLABORATIVE: It makes it easy for people to help others. Some of the early tutorial aspects can be social.
  • ILLUMINATING: Working on programs is  like working in a big dark room with a small flashlight. You need to shine lights everywhere an make everything visible.
  • TRANSPARENT: Even a non-technical person can look inside a visible component and see what's happening. From a project perspective, you have to be able to see where things were, and how fast they are moving. You have to be able to dive into the details as far as you want to go.
  • OPINIONATED: People spend too much time making decisions about things that don't matter. It should make decisions for you so you don't have to waste time making them.
  • PRODUCTIVE: If it doesn't make you incredibly productive, how can it be awesome?
It will take a long time to get to the rest. But let's not forget:
  • COMPLETE:  Tools for everything from requirements to maintenance. 
  • LEGACY/MIGRATION: Support for legacy code. Legacies will slow you down, but they won't stop you. And they'll slow you down less if you can migrate them effortlessly, visibly, and incrementally.
  • PERFORMANT: It would make good use of resources and give you tools to optimize.
  • DATA DRIVEN: It would make program data flow, not just control flow, visible.

No comments:

Post a Comment