There are 6 basic goals behind the initiative of the Factory
project:
- Hey project leads, what do you have today? The
first goal is to provide to project leads an easy but powerful tool
for team management and project planning. The idea is to avoid the
complex and expensive commercial software that requires training
and experience, and the free tools that copy the same concepts,
look, and feel. These tools are generally helpful for planning in
the very early steps of projects, but aren't designed for tracking.
Most of the time, it's only a spreadsheet joined with a Gantt
chart. I believe that most of the time, project leads need some
kind of new, smart tool that provides good understanding of
projects during every phase from planning to end, using best
practices as guidance. This tool must be small, fast, reliable and
easy, even if it doesn't cover every aspects of project management.
There's a need for tools like this among the project leads
community in IT, because they need to focus on the deliverables and
quality, and most of them act in medium, small or micro
organizations, without access to BIG commercial softwares. I also
believe a project lead shouldn't focus on Gantt charts. When a
project includes hundred of tasks over many months, there is no way
to 'draw' a nice and flashy diagram. Gantt charts are useful for
very high level presentations, but not so useful for designing a
medium-sized project. Thus, I think the tool should focus on
different views of the tasks, as a diagram is only a view of one
plan. Moreover, from a lead's point of view project management is
not synonymous to 'plans' at a very low level, or 'portfolio' at a
very high level. In many projects, especially in IT, team members
must collaborate and share information quickly, and the lead must
react very quickly. Thus, the need is for a tool that is able to
change the plans easily, sometimes daily. That's why in Factory,
plans are version-based and the application integrates all versions
in a transparent way.
- Be collaborative, but everything is a project.
Today (2005, revised 2008), all the major leads in IT industry are
thinking 'collaborative'. That's the new marketing concept, and I
believe they are right. Many people using a laptop (designers,
developers, consultants) manually aggregate information coming from
different sources. Ten years ago, we were all switching between
phone calls, mails, faxes, internal staff notes and meetings.
Today, we are switching between phone calls, SMS, phone or web
conferences, emails, instant messages, meetings, CRM applications,
intranets, web sites, forums and blogs. The new concept is to
aggregate that information in a single system. That's very good
news. I have personally been waiting for that since I started
working. Only, I would like to introduce another concept used in so
many organizations. This concept is the project. Today, companies
are focusing on projects most of the time. Thus, the idea is to
push the projects as the center of collaborative work, because
every single action is connected to a project. However, even if
communication must be the centerpiece of project management, I
consider it a bad idea to communicate project plans (including
assignments) to a whole team. My idea is very simple: to create
links between tasks lists and to-do lists. I think the objective
isn't to assign a task to somebody, but to create actions based on
tasks, then to assign those actions to the right person. Another
perspective is to consider the project tasks as high level
objectives, and action plans as detailed objectives. Collaborative
software should also work around junk messages. I think there are
two sources of junk communication: outside (Internet access is very
permissible to high-tech hooligans) and inside (how many mails do
you have in you inbox after one holiday week?). If you have more
than an hundred of emails per day, you have a problem: maybe
electronic mail is not the best tool for your job. That's why my
basic idea is to forget the e-mail and combine project management,
collaborative tools and CRM into a single tool, that must be easy
to use.
- Back-end, toward a modern data architecture.
Today, applications are designed on top of tens of layers. Let's
think about operating systems, databases, application servers, web
servers and browsers relying on many messaging mechanisms: IP, TCP,
SQL, ODBC, HTTP, HTML, XML, SSL, RCP plus the proprietary
messages... Let's introduce some new layers: CGI, ASP, JSP, .NET...
I believe the industry switched from the mainframe concept to the
client/server architecture to the 3-tiers architecture to the
x-tiers architecture, and then is going back to the client/server.
The only difference is the clients, the servers, the link between
them, and the hardware. Today, we are thinking in terabytes for
storage, gigabytes for memory and megabytes per second for
communication. Let's think about a new way to design servers: enjoy
large amounts of memory in order to keep the information ready for
the clients (1 million objects that include 1 thousand bytes of
information costs 1 GB of RAM). We can easily imagine this
information served by a set of PCs (that's the grid concept). Then,
let's think about messaging: web based applications are faster than
client/server applications because they manage fewer, smaller
messages on the network (HTML versus SQL). Thus, the idea is
crystal clear: cut down the number of layers and reduce the message
lengths. We can imagine a set of machines that keep all data in
memory and serve the information using small messages. That means
the clients should be smart. And if they're smart, that means they
can serve the information, too. Thus, let's extend the grid to the
clients as well. Today, there is one example of a really good
application that is able to serve a LOT of information to clients
who use... the same program. It's Apple iTunes, and the information
is music. Music requires lot of storage and network bandwidth.
However, thanks to Rendezvous technology, iTunes is able to share
music without any configuration. Why shouldn't we do the same for
applications? One regular MP3 song is 3 MB while this document is
15 KB... See the difference?
- Front-end, toward a modern desktop. Web-based
applications, in my view, provide a good example to new generations
about what the computer was 30 years ago: centralized, slow and
ugly. I truly think there is a real ditch between 2 worlds: the
applications dedicated to IT troops (very powerful and flashy,
think
new IDEs), and the applications dedicated to users
(they are trained to copy and move files across networks and they
enjoy double-data entry, think
file managers and ERPs).
Today, applications are either web-based or file-based. If they are
web-based, that means you need to maintain at least a web server on
your machine (of course you can ask your IT department, but it may
not available when you are at home, in a traffic jam, at the hotel,
or at home), and you probably need a database server, too. If they
are file-based, you need to save information in a .xxx file
somewhere on your hard drive. Your hard-drive contains tons of
'mydocuments', 'docs', 'home' and ‘users‘ directories / folders and
sub-directories / folders. You need to replicate the information
between your laptop, office desktop, personal desktop or laptop -
even your PDA or cell phone - using different operating systems.
You copy the file 'document1.xxx' in a shared directory, upload on
a server, attach to an email, and so one. Thus, you get the idea;
you need to control the environment, and it's not easy. Why aren't
applications smart enough to keep your work in a safe place and
share it with who you want? I really think users shouldn't care
about their hard drive partitions, file servers or email accounts.
Let's imagine: I need to work on a document, I only need to take a
computer and work on it. Let's say that document will be available
to my manager or my team - when I decide. I don't want to worry
about the files, that's my computers' job. My document should be
available to others. It's up to the software the send the document
to my manager when it's ready ...and in real-time because my
manager is available somewhere on the network, or in different mode
(my manager will get it when he'll be in touch with the
network).
- The same adaptive application. I really believe
today, using some standards, there is a way to construct smart
application softwares with only a few of code lines. One of the
first standards is Java. Today, Java is able to provide rich,
reliable and fast applications, they are tons of examples today.
The very first item of interest is its availability to so many
different operation systems. Buy any computer you want today - with
any operation system you want (better? cheaper?, I don't mind) -
and it works. Another standard is obviously XML. Now, think about
smart applications. I believe, using Java, that programs should be
hard coded. Maybe it's heresy for many developers, but I think
today (especially using object-oriented languages) it's really
better to smartly hard-code a piece of logic rather than adding
complexity and layers using an external setup. I believe the first
option provides faster, most reliable results... and a smaller
program.