Consulting
This service consists in offering my know-how and expertise as a consultant within the context of your software development projects.
Consulting services cover a wide range of needs:
- Review or design propositions.
- Provide technical assistance (responses, advices, alternatives or coaching) to the software development team on-site, by telephone or using email.
- Offer a fresh perspective by providing complementary know-how to in-house resources.
- Confirm problems and solutions to reduce risk.
- Manage requirements.
- Model business domain using UML notation.
- Design architectures.
- Model technical solutions.
- Review designs.
- Put together plans and strategies.
- Conduct audits.
- Create reusable architecture with code generators.
- Implement software development process.
Programming
This service consists in designing and implementing solutions, from requirements to code.
It's a question of building a product and delivering it to the customer. This product can be a specification, an analysis, software architecture or a design of a full system. Estimating product development cost is an art based on past experience. However, there are well known factors that influence the overall cost. Based on these factors my services can be purchased on either an hourly rate or fixed price. Here is a list of these factors:
- Features: Quantity of features as well as interaction between features increase software complexity.
- Compatibility and portability: Multi-platform solution is much more complex and expensive to build.
- Quality and reliability: Robustness and ability of the software to handle error situations as well as the level and quantity of quality insurance test increase software complexity.
- Performance: High efficiency criteria raise complexity and cost.
- Flexibility: Adaptable and extensible solution that preserves its value in the long term is much more complex to build.
- Usability: Insuring product usability increase the quantity of requirements activities, prototyping and test with users.
- Appearance: Sophisticated art design (graphic, audio) require expertise from subcontractors.
- Schedule: Solution that must be developed quickly costs more.
- Changing initial requirements: Changing the requirements once software development has started is the largest single factor that increases the cost of development.
- Intellectual property: In typical cases, ownership of the software will be transferred to the client, however in some cases, it may be desirable to share ownership and lower services cost.
Training
Sharing and exchanging knowledge is among the most satisfying tasks. Over the past twenty years, I have taught a wide variety of subjects in both academia and industry. I love the challenge of finding just the right way to express and teach concepts, both abstract and practical.
Training services include the following:
- Teaching: Teach short term full day course about software architecture, design patterns, object oriented design as well as NET programming.
- Training and coaching: Visit your organization, learn your objectives and deliver custom training and coaching to fulfill your specific needs.