Sunday, July 14, 2019

Having Clear Goals Increases the Chance of Success When Hiring Freelancers

I have worked in large enterprises and as a freelancer for small businesses.  One key ingredient for success in both of these environments is having clear goals for the project.  

Large enterprises generally have extensive resources and can have business stakeholders, product managers, engineers, designers, and other professionals work on a project.  These project team members have the expertise to ask the right questions before a project begins to increase the likelihood of success.  

Small businesses and individuals who hire freelancers often have a general idea of what they want, but no clear goal that is actionable.  This can be true of large enterprise projects, also but the team of professionals present on most large projects can quickly ask the right questions to make the goals and objectives of the project very clear before development begins.  In the case of a small business there may be only one or at most two people who can fulfill all of these roles. This can lead to a project starting with only vague goals and becoming a prototyping exercise rather than a project that delivers production ready code.  Prototyping and POC (proof-of-concept) projects are perfectly fine, as long as the person(s) hiring the freelancer expects a prototype at the end of the project. This is often not the expectation.

Some critical questions to consider before hiring a freelancer include the following:

  1. What is the goal of the project?
  2. What is the expected deliverable?
  3. What assets or resources will be provided to the freelancer?

Let’s take a closer look at these questions.

What is the goal of the project

This is the single most important question of any project.  Here are some questions that should be asked about the project goal.
  1. Is the goal of the project to produce a part of a larger project?
  2. Is the goal to produce a finished product that will be used by consumers?
  3. Is the goal to produce something that will be monetized?
  4. Is the goal to increase brand recognition?

Some basic steps that should be taken are:
  1. Identify the stakeholders.  That may be just you, but if there are others, make sure they are included in some of the early discussions.  Make sure all stakeholders are in alignment regarding the project goal(s).
  2. Identify any known risks and let the freelancer know early.  Goals may need to be adjusted based on risks. Identify these if possible.

What is the expected deliverable

This may seem like it should be obvious to the business or individual hiring a freelancer, but often it is not clear.  I have often heard clients say once we have started a project, that “..I don’t know what I want, but I’ll know it when I see it…”.  In cases such as this, it is probably in the client’s interest to think through what they actually expect to be delivered. This may require them to create some prototypes or hire someone to create prototypes and concept applications for them.  This can help in the journey to defining a clear deliverable.

What assets or resources will be provided to the freelancer

What will the freelancer be starting with when taking on your project?  If the project includes a front-end, will UI assets be provided? If the project requires some sort of remote data storage, like a dating app or financial app, will that be provided upfront?  If the freelancer is expected to provide these things for the project, this will increase the scope of the work, which translates into higher costs and longer timelines.

Plan Template



Key Stakeholders

Key Goals

Anti-Goals

Roles and Responsibilities

Scope of work

How will project be managed

Risks

Initial Backlog or Stories/Tasks


Free and Inexpensive Resources

There are many free and inexpensive resources for managing a software project.  If you hire freelancers on sites such as Upwork, Fiverr, etc… you can use the free tools they provide on their respective platforms.  I describe some free and low cost third-party tools below.

Project Story/Task Management

Trello is a very flexible tool for managing user stories and streams of work.  It can be used free of charge for small projects.
Trello Board - https://trello.com 

Source Code Repository

The source code repository is where code should be kept during the development process.  This allows you and the freelancer to have access to the code at any point and time during the project.  Some Git repository options are listed below:

Communication

Slack has become the preferred communication tool in the development community in recent years.  Slack offers free accounts for small teams.

Zoom is the tool of choice for quick developer real-time collaboration.  I have found it vastly superior to other collaboration tools on the market.  Zoom allows small teams to use a free account for 20 minute collaboration conferences.  It includes text chat, audio, video, and screen sharing.

Other Resources

The resources listed above should be more than adequate for almost any small business software development project.  Other tools that can be used include Jenkins, CircleCI, or ConcourseCI for continuous development and continuous integration and delivery.

If you have more than one freelancer working on your team, you may want to consider doing weekly retros using a tool like Funretro to see what worked, what didn’t, and what should change week to week.

Wednesday, June 21, 2017

MongoDB World 2017: Building Micro-Services Based ERP System

Jerry M Reghumadh of Capiot did a talk on building micro-services from the ground up.  The legacy system that his group replaced was monolithic and rigid.  The solution the Capiot team proposed to the client placed each component of the ERP system into its own atomic component.  Everything on the platform that was built was an API.  These API's were very "chatty".

The engineering decisions that were made included the choice of NodeJS and MongoDB as the base technologies for this platform.  NodeJS was selected in part, because of its small footprint.  This lowered the barrier to entry for the application.  Java was considered, but it was too heavy for the needs of the project.  MongoDB was selected for the data persistence layer because it saves data as documents and it did not require the marshaling and unmarshaling of data.  MongoDB also allowed the implementation team to use a flexible schema.  MongoDB offered greater ease of clustering and sharding versus other available options for this project.  This allowed the developers to implement this without relying on a dedicated database administrator.
The technology stack included:
  • NodeJS
  • ExpressJS
  • Swagger.io
  • Mongoose.js
  • Passport.js
The team implemented a governance model that forced any exposed API to be exposed in Swagger.  This prevented the proliferation of "rogue" API's.  Any API not exposed in swagger would not work properly in the system.  Mongoose allowed the team to enforce a schema.

Tuesday, June 20, 2017


Ronan Bohan from MongoDB and Vaidy Krishnan from Tableau presented the Jumpstart presentation.  The BI connector was just shipped by MongoDB.  The mission of Tableau is to harness the power of data.  There are three core tenets of the development philosophy are:
  1. Connectivity to access all data
  2. Design software for deeper thinking
  3. Ability to scale data and provide analytics on that data

There is a focus on Big Data.  The goal is to provide focus and make the data discoverable.  Vaidy stated that Tableau is about data access.  Tableau will transfer the data from the application layer to the business actionable level.  Tableau has been adopted by 55,000 clients all over the world.

Ronan began a discussion of how to connect MongoDB data to the Tableau platform.  Tableau was originally designed to work with structured data from relational databases.  MongoDB is designed to store semi-structured data.  This made MongoDB and Tableau incompatible.  This problem has been solved by the BI connector.  This allows MongoDB's semi-structured data to connect to the Tableau visualization platform.

Ronan provided the audience with a demo using the BI Connector to link the MongoDB data to the Tableau visualization tool.  He displayed a DRDL Definition file which is a YAML  file that is used to map the MongoDB data to a schema that applications that consume structured data can understand.

Detailed information on the MongoDB BI Connector can found on the MongoDB website. (https://www.mongodb.com/products/bi-connector)

MongoDB World 2017 Chicago Keynote

The keynote was given by Megan and Richard in the Hyatt Grand Ballroom.  Megan stated that there will be six tutorials.  MongoDB World is paperless this year, so a mobile app will be used to find sessions, tutorials and give feedback.

Tom Schenk is the first keynote speaker.  (CTO City of Chicago).  WindyGrid is a system built for the city of Chicago that allows city staff to analyze and visualize data piped into the system from 17 different input applications.  MongoDB drives this application.  Data that is sent to the system includes weather, 911 calls, 311 calls, etc.  Predictive analytics are used to drive the operations of the city.  Data is captured and managed in MongoDB. The code for the predictive analytics for food safety has been released as open source code.  (https://github.com/Chicago/opengrid)

Tom transitioned by introducing the CEO of MongoDB, Dev Ittycheria.  Dev started by going over the history of the internet and technology from the introduction of Netscape in 1995.  Around 2000, fiber optic communications were built out and made it cost effective for technology work to be distributed around the world.  2007 was a watershed year because the cost of computing power and storage dropped to a point where many new types of business concepts became feasible.  MongoDB was founded in 2007.

2007 document model, 2010 distributed framework, 2012 aggregation framework, 2013 Management and security, 2014 WiredTiger, 2015 Doc validation, 2016 MongoDB Atlas.

Dev talked about the growth of MongoDB over the last few years and how widespread the platform has become.  Last year there was a 30% increase in people taking MongoDB University classes.
Shawn Melamed (Morgan Stanley).  Shawn stated that Morgan Stanley started using MongoDB 5 years ago.  One of the attractions of the database is the flexibility of how the data can be structured.

2017 -  Elliot  Horowitz announcing new products and services coming out of MongoDB
  • Business Intelligence - (Note: Tableau 3.0 came out that allows this visualization tool that allows to easily connect to MongoDB)
  • MongoDB Charts has been announced which allows charts to be built in a document-centric view.  This allows developers and analysts to quickly build dashboards based on MongoDB.  The tool has an intuitive drag and drop interface and allows users to build common types of charts (bar charts, pie charts)  This feature will be part of MongoDB 3.6 and will be released later this year.
  • In MongoDB 3.6, the $lookup operator has been enhanced to allow more advanced and sophisticated queries.  Enhancements have been added to updating arrays
  • Fully expressive array updates
  • Schema ( schemaless, semi-structured, unstructured ).  MongoDB 3.6 will support JSON Schema.
  • Retryable writes - this guarantees that a write will happen at least one time and only one time if desired.
  • In 3.6, it will only be possible to connect to localhost by default.  This should close some current security holes in the product.
  • Change streams in action
  • MongoDB Stitch (NEW Service) - Backend as a service
    • REST API MongodDB
    • Configuration based authentication, privacy, and security
    • Service composition
    • Anywhere you want
    • Available on MongoDB Atlas today in beta
MongoDB 3.6 is scheduled to ship in, November 2017.
  • MongoDB Atlas is the recommended way of running MongoDB in the cloud.
    • Free Tier
    • Performance Tier
    • Queriable backups
    • Supported on AWS
    • Support added for Microsft Azure and Google Cloud
    • Hosted BI Connector
    • LDAP authentication  allows the connection with on-premise enterprise systems
    • Cross-regions support (coming next year)
    • Cross-cloud support (coming next year)
Cailin Nelson, Vice President, Cloud Engineering spoke and announced support for Microsoft Azure and Google Cloud in addition to AWS.  Atlas has been optimized for each cloud platform.  The new performance advisor allows administrators and developers to track down performance issues easily.
What has changed since 2007
  • The Web as a 1st class citizen
  • Mobile
  • IoT
Polymorphic data can appear in the same collection withing MongoDB, which is pretty powerful.
The hashtag #MDBW17 will be used to post announcements.

Monday, June 30, 2008

My Tech Focus

This blog is focused on three technologies that I work with regularly. Java, Flex and SOA will be the primary topics covered in this blog.