Subject Matter Expertise
Today, software industry is undergoing a rapid state of flux. Software industry is highly complex, demanding both industry-specific skills as well as requisite software development expertise. Simply having knowledge on project management is not enough to be competitive. My diverse experience allowed me to adapt and to keep pace with fast-moving industry in order to anticipate possible risk, quality, integration capability, financial and other factors that may hinder the chances of making project a success.
My knowledge across the full project lifecycle means understanding how things work in strategy, service design, product design, proof of concept, user experience, enterprise architecture, content development, front end development, back end database development, QA, cloud hosting, content delivery networks, business intelligence, and data analytics.
These factors may apply to many industries, but due to the speed at which technology changes, my knowledge gained over the years has enabled me to deliver projects on time, on budget, within scope, and with the quality standards expected, which resulted in fast Time-to-Market and high Return-On-Investment (ROI).
My knowledge of Technical Know-How enables ability to explore different technology platforms and systems used by project teams, hence being able to visualize the possibilities and limitations of these software systems. This provides confidence and competency to conduct intelligent and informed conversations with clients, team, stakeholders, and suppliers.
Risk Mitigation and Issue Resolution
With solid knowledge of development process in delivering solutions, and an understanding of how and why it’s done that way, knowing technically what’s feasible, what’s not, and even more importantly, how much work might be involved in a type of project is invaluable.
It means being able to provide fairly accurate estimates with reasonable amount of contingency as to the length of time required and cost of a project. It’s also very helpful when managing developers – coming up with workarounds to issues or being able to ascertain whether or not enough progress is being made. It's also very useful in client facing situations as it gives project manager the confidence to explain where a project is really at, rather than having to give vague answers about the project being ‘in development’.
Translating Business Requirements into Technology Specifications
Bridging the gap between Business Analysis and Solutions Implementation by:
- Create project-initiation diagrams to describe business process that includes business use cases, activity diagrams, workflow, flow charts, etc.
- Determine project scope, derive context diagrams and project use cases from the business diagrams
- Detail use cases by using activity diagrams or other techniques
- Create high level analysis dataflow diagrams, domain class diagrams, and entity-relationship diagrams, from use cases or other high level diagrams
- Recognize and understand the various design models, including various relevant types of UML diagrams
- Design detailed entity-relationship diagrams
- Decompose dataflow diagrams
- Determine when to use which modeling technique at different stages through a project life cycle, and understand which diagrams are derived from others
- Understand the basic concepts of normalization and decomposition, to be able to intelligently review diagrams that have been normalized or decomposed
Multiple Complicated User Level Requirements
Businesses require system users at multiple levels, also known as 'Personas'. Some may be basic users, power users, administrators, and IT users. When it comes to system implementation, my experience as project manager exposed me to various industries with different types of users working with specific systems, and the types of user access rights and permissions.
This can range from complex to extremely complicated depending on the system. Some businesses utilize user-specific models or role-based models. There is a fair amount of technical knowledge required to ensure system implementation projects go smoothly, user level requirements be properly and fully addressed, and internal controls be followed correctly. All these scenarios can be used to develop comprehensive use cases and user stories, which will help technology teams in defining application functional specifications.
SaaS - Software as a Service
'Microservices' development, a path to breaking down monolithic systems and applications into flexible, bite-size services that can be assembled and disassembled as business processes require. This architecture requires an Agile organization in terms of the way teams are organized - meaning more iterative and incremental approaches to rolling out software. The legendary waterfall technique and the organization of teams by function gradually falls out of its effectiveness, replaced by smaller teams working on microservices.
As an organization's catalog of microservices grows, so does potential complexity in managing all the services and keeping them updated. All this requires a platform whose capabilities include microservice management to complement in-house development.
Resources can be manipulated through operations, mostly CRUD (Create, Read, Update, Delete) operations. In HTTP scope, these are mapped to POST, GET, PUT, and DELETE along with action verbs such as OPTIONS and HEAD.
Microservices can be realized by means of REST API communications. Data formats come in forms of JSON, XML, or CSV, allowing on-demand returning representation.
Big Data Analytics Use Cases
- Customer analytics: Organizations can examine customer data to enhance customer experience, improve conversion rates, and increase retention
- Operational analytics: Improving operational performance and making better use of corporate assets. Big data analytics can help businesses find ways to operate more efficiently and improve performance
- Fraud prevention: Big data analytics can help organizations identify suspicious activities and patterns that might indicate fraudulent behavior and help mitigate risks
- Price optimization: Organizations can use big data analytics to optimize the prices they charge for products and services, helping to boost revenue
Full Stack Software Development Lifecycle
- Front-end React.js based from Express server
- Back-end Node.js application running REST API returning JSON messages
- Relational Database to store persistent data and state
- Key-value cache to store frequently requested data with complex SQL queries on large data sets
- Database Migration with schemas updated iteratively
- Databse Seeding with static content
- Pull updated data dumps from various sources
- Synchronize database with updated data dumps
Big Data Analytics - Hadoop MapReduce Process:
- Job Configuration supplies map and reduce analysis funcitons
- Hadoop Framework provides scheduling, distribution, and parallelization services
- Mapper: during map phase, input data is divided into input splits for analysis by map tasks
- Reducer: reduce phase uses results from map tasks as input to a set of parallel reduce tasks. Reduce tasks consolidate data into final results
DevOps Management - Continuous Integration and Delivery
- Define base system with Node.js, Yarn, Curl
- Define Development/Production System from base by specifying dependency property of package.json file
- Define Build environment
- Define Test environment
- Create immutable releases from production base by copying code into Docker Image, which is then pushed to Private Docker Registry. This allows easy pick of deployment versions
- Deployments to specify scaling and rollout parameters
- Deployments to specify version, environment, and global configurations
- Services to specify port bindings
- ConfigMaps to define environment variables and global configurations
- Secrets to mount volumes over application directories
- Ingresses to specify how deployments could be accessed via Nginx controller
With the trend of Cloud Transformation moving forward with lightning speeds, software vendors can no longer develop standalone solutions. With my knowledge of third-party integration, along with experience in integrating internal and external software systems, it means being competent in managing projects implementing REST API in JSON format, XML, or flat file. To some degree, it can be seen as if multiple systems are being implemented within one project. For example, if a project manager is implementing a financial management system, including G/L, A/P and A/R and financial reporting modules, these may interface with applications from external payment vendors, financial institutions, contract management, CRM or other vendor software. In this case, project manager is required to work with third-party vendors and have sufficient knowledge of other systems to ensure data is accessed and passed correctly between these systems.
Legacy Infrastructure Migration
The path to modernizing legacy applications is paved with 'containers' and 'microservices', as well as new tooling and development processes.
'Containers' remove dependencies on underlying infrastructure services, which reduces the complexity of dealing with those platforms. This means that access to resources can be abstracted, such as storage, from legacy application itself. This makes application portable, also speeds re-factoring of legacy applications, since 'containers' handle much of the access to native cloud resources.