Company-wide mindmap

Posted on Sun 01 July 2018

This page describes a naïvely optimistic software idea. Born after living in a few Active Directory + Confluence + Jira + whiteboards based companies. Some with EDMS, some not. Most with some form of HR management, calendar and CRM.

Obviously, I've extensively used org-mode for many years now. Planned projects, handled agendas, wrote documents. Most of described actions could be performed using company wide GIT repository with org files, but companies aren't made out of geeks. It wouldn't be that easy too.

Objective?

  • Increase transparency within the company.
  • Achieve a natural reporting of current company state.
  • Allow for an easier data-based management.
  • People organise in a tree-like structures, manage at different levels and delegate responsibilities - this tool would try to visualise all company data in this natural way.
  • Allow people to work on the same visualisation to share understanding.

Why a mindmap structure?

  • Structural data (tree, mindmap) is neat and correlates well with real-world situations.
  • Mindmap leafs can contain other data - tabular for example.
  • Permissions / roles are usually connected to organisation structure or project structure and can be represented naturally.
  • People at different positions in company need to view the company at different levels.
  • Document flow / process flow can be easily shown on the same tool.
  • Leafs of the mindmap can contain multiple different datatypes.

Imagine your government structured like this

  • How the government is organised in ministries?
  • What public people work at each ministry?
  • How the budget is split between units?
  • Which parliament members work in which project groups?
  • What documents are being prepared by the group?
  • From a central government this could go down to your local public administration unit sharing all publicly available data and linking to services at all levels.

What data is stored on a node?

  • Node has a name, a type and some properties/attributes. May contain formatted text, attachments.
  • Node can have any number of children of various types.
  • Possible types: (company, department, unit, person), hardware, car, comment.
  • Single node can exists on multiple mindmaps (perspectives)
  • Can exist in multiple places on the mindmap (person in different projects)

Using the structure as a spreadsheet?

  • You can budget your units using spreadsheets and let the mindmap automatically aggregate values from various cells up to a single spreadsheet.
  • Or split a top-level value (eg. total company budget for a year) down onto the units to manage.
  • You can aggregate values in the structure. Read values from built-in nodes or attachments.
  • Map structure can connect different cells of different spreadsheets and update all other on save.

Using the structure as a document?

  • Various sub-documents could be aggregated into a main document.
  • For example for splitting work on a document during a project.
  • Main document displays the current state of all the parts.

Planning agile projects?

  • You can divide a project into releases or milestones.
  • Milestones into epics - big functionalities to deliver; epics into user stories; user stories into tasks… and you've got a tree-like structure of tasks for your project.
  • Assign tasks to sprints (on a scrum perspective. Or even dedicated board. You want probably a board anyway).
  • Log work in various tasks.
  • Aggregate summary of work done in epic, sprint or project.
  • Aggregate a number of done tasks in project vs tasks planned.
  • Or integrate it with your task management system.

Any other data types?

  • Links to external systems.
  • Synchronously editable wiki pages.
  • Task boards (which can bubble up current state of tasks).
  • Links to resources (code repository).
  • Documents incoming to the company and moving through the units.

Nodes can be searched and filtered by their properties.

Managing company strategy?

  • Top-level management can define a company "goal" and assign it (the same goal) to all directors directly beneath.
  • Directors evaluate each goal and create tasks for the leaders.
  • Management can see how the goal was split into tasks and can observe it's execution.

Access control?

  • Structure based: Allow access to people within a structure of this element and above.
  • Restrict viewing to a list or group of people.
  • Property or node-type level: only people from group can see/manage a property (eg. salary).
  • Basic structure and auth can be integrated with Active Directory / LDAP.
  • The system itself can serve as authentication source - LDAP, kerberos or other.

How could the UI look?

  • Explore mode: see a mindmap up to a certain depth. By clicking on a node you can extend it and see deeper. Filter by certain properties (scheduled time? money spend this month?) or search by a property or text.
  • Work on a few open nodes: Edit node properties, edit it's text, manage attachment history, view it's children as a list if applicable, configure it's visibility and behaviour.

Simple macros?

Various positions in structure could have "Form" nodes which allow to execute an action - create a task (within structure or on the external system). To handle cases like linking IT Helpdesk to where it can be found.

What ideas can be integrated?

Not all of them should though. Some should be kept in a dedicated software and linked/integrated appropriately.

  • Phone, room, email - book.
  • Budgeting.
  • Calendar.
  • Conference room reservations.
  • Task management.
  • HR management.
  • Document flow along with basic company processes.
  • Project structure and planning.
  • Project documentation.
  • Time management in projects - time people spent on projects

What ideas are hard to integrate?

  • Salary data tend to be kept in separate systems. Could share basic structure, but manage a separate perspective on a separate system - probably. Can be only integrated where needed.
  • It's impossible to write the best wiki and best HR management system and best task management system - in the same system. Most stuff would have to be integrated.
  • Some nodes will have a lot of data and would need a dedicated views/dashboards to handle them. Maybe. For example a "my node":
  • I have personal information,
  • I have tasks assigned (created by people, connected to projects)
  • I have calendar events assigned.
  • I can participate in projects.
  • Schedules and calendars are more of an linear nature, but can be constructed from tree-like data as well.

Mindmap within mindmap - perspectives.

Organisational structure

  • Company name
  • IT Department
    • Development
    • Operations
  • Sales
  • Administration

Project perspective

  • Project can be connected to the place in organisational structure
  • And at the same time be displayed within different mindmap of projects.

Group

  • People in a group can be assigned permissions.
  • They can get have attached a periodic calendar event like a football training.

Budget perspective - separate perspective or a filter on a organisational structure?

  • Company (Available summary report)
  • Salary budget
  • Administration costs
    • Building costs
    • Electricity
    • Security
  • Software License budget
  • Hardware budget
    • New iPhones for management
  • Car fleet

Administration perspective

  • Company
  • Location A
    • Floor 1
      • Room 101
        • Jack Sparrow
        • Tom Riddle
        • Desk 123,
        • Desk 124,
        • Computer 20,
        • Computer 21,
      • Room 102
    • Floor 2
      • Room 201
    • Floor 3
    • Floor 4

Aggregate number of people at different levels. Locate certain hardware easily.

Technicals

  • Parts of the mindmap are loaded dynamically when zooming or exploring.
  • Working in a department you can be a "home page" viewing for people working there.
  • Any part can be linked to another place with various type of links.
  • Being good at everything is not possible. It would be better to integrate tools.
  • Mindmap can be scaled by connecting different instances of maps.