Recently I have been spending a considerable amount of my time developing an idea for a new business. I am working with the CEO of MarketSmart to develop an innovative application that could potentially reshape a niche portion of the non-profit world.
Greg, the CEO of MarketSmart who I am working closely with has been giving me guidance during this process.
For the past month or two I have been working on a “scope” document. (More on that below.) But now, I am beginning the process of creating activity diagrams and focusing on agile modeling.
I whole hardheartedly intend to start my own business in the near future. My personal Big Hairy Audacious Goal (BHAG) for the next 3-5 years is to be operating my own company.
The first day I interviewed for the web developer position at MarketSmart I mentioned that desire to Greg. In between working on client related tasks I have found myself making progress on this new product. I occasionally remind myself how fortunate I am to be working with a seasoned entrepreneur who is not only willing, but wanting to teach me anything and everything involved in this process.
Staying late at the office to make progress on this project feels like I am taking night class. Who knew school could be fun.
A few weeks back I posted a short article called Notes From Creating a New Product. I touched on four key theories I had picked up on during my first month of working with Greg on the new product.
During that month I was focused on developing the product scope. For that I found myself using Microsoft Office Outline. In Outline mode I created headers that represented pages, and sub-headers that related to page elements and page functions. In addition to writing thousands of words in Outline mode I created a series of page mock-ups in Adobe Illustrator. The mock-ups showed how the user would sign up, enter their data and view their “dashboard”.
Now, a few weeks later I have moved on from scoping out this idea, to modeling how users will interact with it. The goal here is to create a presentation that can be shared with technical professionals. These people should be able to look at this presentation and suggest what tech stack options are in play, and how long it would feasibly take to develop. I started to engage in this modeling process when I created page mock-ups in Illustrator, but that simply was the tip of the iceberg.
Here is what I have been learning and researching. I plan to implement these new techniques for this project within the next two weeks.
Greg has a large network of friends, business partners and advisers. He took the scope document I created in Outline and the mock-ups I put into Powerpoint and shared them with two highly technical people. Their response was to have me create activity diagrams.
So I researched and figured out what activity diagrams are.
UML 2 activity diagrams are typically used for business process modeling, for modeling the logic captured by a single use case or usage scenario, or for modeling the detailed logic of a business rule. Although UML activity diagrams could potentially model the internal logic of a complex operation it would be far better to simply rewrite the operation so that it is simple enough that you don’t require an activity diagram. In many ways UML activity diagrams are the object-oriented equivalent of flow charts and data flow diagrams (DFDs) from structured development.
Next I was instructed to look into state diagrams. This was another term I had never heard before and more researching ensued.
UML state machine diagrams depict the various states that an object may be in and the transitions between those states. In fact, in other modeling languages, it is common for this type of a diagram to be called a state-transition diagram or even simply a state diagram. A state represents a stage in the behavior pattern of an object, and like UML activity diagrams it is possible to have initial states and final states. An initial state, also called a creation state, is the one that an object is in when it is first created, whereas a final state is one in which no transitions lead out of. A transition is a progression from one state to another and will be triggered by an event that is either internal or external to the object.
Unified Modeling Language
After researching activity and state diagrams I did a google search for “uml”. The acronym was coming up a lot in my reading, and although it had not been mentioned by Greg I thought why not read more about it.
Unified Modeling Language (UML) is a standardized modeling language that (from my research at least) is mainly used for software development. UML enables developers to create models of highly complex processes that can be easily interpreted by others.
After researching UML I found myself stumbling upon the phrase “agile modeling”. I have frequently seen the word agile and scrum pop up on hacker news, but I had never taken the time to research what either meant or referred to.
While reading about both agile and scrum methodologies I found myself thinking about activity diagrams. Applying th ideas of scrum product development are further down the line. For now, my main priority is modeling user interactions with the application. For that, agile activity diagrams seem to be the way to go.
The last request Greg’s friends had of me was to create a wire frame sitemap. Although I enjoy designing in Illustrator, creating 50+ pages will be a task that I reserve for software more well suited. I plan on using Balsamiq to create a site map and show user flow throughout the app.
And that is what I have been learning over the past few weeks. Fun stuff. Important stuff. Practical stuff. I can’t wait to put it in action!