Don’t be afraid to say you don’t know something, you will always know less than there is to know. All you can do is to keep learning every day – Hosk
Experience is doing something new, making mistakes and not repeating those mistakes next time you do it – Hosk
When you get kicked out of your comfort zone. calm down, break the problem down, list what you need to do and don’t breakdown. Hosk
I was reading the well-written article about being a new developer
It neatly sums the fears of new developers trying to get started with development with only miniscle knowledge of development, surrounded by people who have been developming for years.
How the Heck am I going to do that?
I tweeted this and got a good response from CRM MVP Jamie Miley (see what happens if you stick at it kids)
It got me thinking, there are times and situations when suddenly you get kicked well and truly out of your comfort zone
This could happen in a number of scenarios, some good, some bad and some scenarios life throws up just for the hell of it.
- Promotion and new responsibilities
- a new job/role
- A developers leaves and you are parachuted into the project
- working with new software/programming language
So how do you cope when you are out of your comfort zone
Step one – DON’T PANIC
Calm down, big breaths, it’s time to think logically. When you are out of your comfort zone, you initial response is
ARHGHGHGHGHGHGHGGHGHG
Similar to going somewhere you have never been before, everything seem unusual and strange and in your mind the geography can seem endless because you don’t have concepts of distance of landmarks.
After you have wandered around a town for some time, it shrinks in size as the unknown area slowly becomes recognisable and manageable.
How do you eat an elephant?
You should see all problems as elephants you need to eat?
Most people see an elephant and think, it’s impossible to eat an elephant but this is because you are letting the problem (eating the elephant) overwealm you. You need to break it down into eating the elephants ear or eating a bit of the elephants ear.
The answer to how you eat an elephant is, one bite at a time.
Don’t listen to your fears
This is similar to doing development in a computer language or types of customizations you haven’t done before. You usually have someone asking you for an estimate of how long something is going to take but how do you know you have never done it before. You start to panic, you roughly think it would take this long but what if it’s tricky, WHAT IF I CANT GET IT TO WORK EVER!!!!
The devil who was snoozing on your left shoulder, cackles in delight and starts generating worst case scenarios, which no doubt involve you being sacked and shamed, being made to wear a billboard round town saying “I couldn’t code a WCF web service to interact with CRM”.
Don’t visualise all the things which can wrong, instead focus on this being a brilliant opportunity to learn new skills and show how capable you are.
Difficult tasks are solutions you haven’t yet created
Step two – continue to calm down and engage brain
Calm down. What you have to do is get the facts clear, work out what you know and then make a plan.
Just like writing code you need to simplify the problem and remove complexity
- What do you know about the problem?
- What needs to be done?
- How can it be done?
- Questions/problems about the requirements and the solution
The different zones of uncomfortable
Here are some of the common tasks you might not have done before
- Designing a solution
- Creating new functionality/customization you haven’t done before
- Integrating with 3rd party software
- writing a WCF webservice
- Using new software
- Using a new coding language
- Estimating a solution
- setting up/installing software
- Impossible Deadline
General Advice
Before I go into detail on some of the scenario’s above, I will go over some generic advice for surviving CRM development when you doing something out of your comfort zone.
Don’t panic
The don’t panic advice can be used in most scenarios. Remember you are a skilled individual who has done similar pieces of development.
- Keep calm
- Work out what needs to be done
- Split up the tasks into small parts
- evaluate any potential risks
- Ask advice from your peers and colleagues
Don’t be overwhelmed
At the start of a piece of development there is an initial moment where you think
How the heck am I going to do this, I have never done this before I don’t know how
Go back to the don’t panic advice and remember you have done big pieces of development before and if you haven’t, well there is always a first time.
A big piece of development is just lots of small pieces of development stuck together.
Don’t sit and suffer in silence
If you can’t do something and you have tried breaking it down but still don’t know where to start then it’s time to ask someone to point you in the right direction.
All Developers have been in the same situation as you are in right now at some point.
It’s time to get up from your seat and get some help. Remember the task here is for the development to get done
If you can’t do it, speak up sooner rather than later
If you really can’t do the development then you need to raise this as soon as possible and someone who can do it can be resourced to do it.
It may be embarrassing at the time but your employer/boss will be grateful you raised it with enough time to get someone else to do it.
You can learn how to do it by seeing how the developer did it, maybe even working with them.
Afterwards you can go away and research the area yourself, so next time you will be able to do it.
Designing a Solution
Designing/architecting a solution can be daunting if you haven’t done it before. What you need to remember is you could have done most of it, if you were made to but usually the Solutions architect does it.
The first task is to make sure all the requirements have been gathered and then study these carefully to see if you can come up with any questions. The reason it’s important to make sure you capture all the requirements it’s easier to change a solution design than change a solution design and code.
When gathering requirements for CRM projects, you often do what’s known as Gap fit analysis
Gap fit analysis is where you compare the out of the box functionality in CRM with the requirements, working out what you can do with default CRM and what will be a customization
When designing a CRM solution try and break it down into smaller parts and break down these parts into the development you need to do to create the functionality.
When developing a CRM solution break the requirements down into separate user roles to help you understand how different users will use the system, what functionality each different user role need.
Create entity diagrams and flow diagrams to help you understand the requirement and your proposed solution design.
It’s a good idea to get someone to check your design, they will be able to find obvious problems and make suggestions.
Creating new functionality/customization you haven’t done before
Creating a customization type for the first time could be
- Plugin
- Custom workflow
- Dialog
- Action
- Javascript
The first task is to find a working example of the customization, often you will be able to find an example of the customization inside the CRM project you are working on done by another developer.
If you cannot find any examples then you should search the internet or check the CRM SDK for some sample code. You can also search the Hosk CRM blog which has lots of examples of CRM customization.
Once you see an example it’s easier to understand how it works and modify it for your needs.
Start simple and get the basic example of the customization working and then add your requirements.
Integrating with 3rd party software
This can be very tricky and some 3rd party software can have a complete lack of usable documentation.
One risk with using 3rd party software is finding out the limitations and quirks of the 3rd party software.
Writing a WCF web service
When writing working with CRM you will often need to integrate CRM with other systems and software a customer is using.
Many times you will need to create a WCF web service.
This isn’t any easy task and if you have never done it before you will have to learn quickly. There are lots of good WCF tutorials on the internet and you will need to find one you can understand. The other tricky part of writing a WCF tutorial is deploying it.
I have written a little bit about a WCF service and there are some good tutorials at the end
WCF with no service xml or endpoints? What is this magic?
Estimating a solution
Estimating is one of the scariest tasks a CRM developer can be asked to do. The weight of the financial consequences of your estimate can be a worry.
As always keep calm, break down the development into small tasks and then estimate those tasks.
If their parts of the development you haven’t done before or parts you feel are risky then add some more time to the estimate.
Add all the tasks and estimates into an excel spreadsheet so you can justify your the amount of development time if you need to.
Breaking down the development will give you confidence in your estimate.
Configuring or installing software
There are lots of different pieces of software to install and configure with CRM Email router, Outlook
- Email router
- Outlook add in
- CRM server
- SQL Server
- SSRS reporting server
There is some great documentation about installing and setting up CRM software and one of the key parts to installing/configuring is making sure the server meets the prerequisite requirements.
Know what service user accounts you will be using in your install and the privileges these will need, often you will need a domain admin to create the service accounts and this can take a few days with some IT departments.
Another tip is to download any software and prerequisite software you might need because a lot of servers will not have internet access.
Back up everything before you start
In most cases it will be going through and pressing next a lot of times.
Impossible Deadline
Customers will sometimes press the panic button and need some development/CRM project urgently and will insist on impossible project deadline.
I have written here why this isn’t a good idea
Why rushed projects/code doesn’t save time and reduces quality
Raise your objections about the rushed deadline and lower expectations it might not be possible. Do your best and if you have to work extra hours/overtime make sure you get this time back and bring it up in your yearly review.
How to prepare for these situations
There will come a situation which you will be doing some CRM development for the first time but you can prepare for some of this situations.
Solutions architect
The best way to prepare designing CRM solutions is to design CRM solutions. I appreciate the advice is clearly in the category of “bleedin obvious”.
The problems you find when designing a solution only occur when you are deep into the design and only when you really look at a design will potential problems become apparant. In similar way to have theoretical knowledge of writing CRM plugins, custom workflows or a WCF service will help you, until you have created a CRM customization you won’t have experienced all the problems which occur when trying to get code to work.
When writing code, customizations, functionality, software products you haven’t used before you will create a lot of errors which you overcome by reading the documentation and trying different things.
In the blog post-Why .Net developers struggle with CRM development I go through the knowledge you need to get a plugin working.
Designing a CRM solution has a similar learning curve (probably most activities do) and you will only encounter and overcome these problems by experiencing them. To experience the problems you have to go through the process of designing a CRM solution as if it was real project otherwise you won’t do it properly and not worry about the solution not working.
A good way to practice is to get the requirements for projects your company has done and design a CRM solution for it. You can then compare your solution with the solution that was implemented. Once you have your design you can ask a solutions architect or a senior developer to look at your CRM solution and give feedback. If the person who designed the implemented CRM solution is still at the company you can ask him about the implemented solution.
Estimating a solution
Similar to designing a CRM solution, the best way to practise estimating development is to practise estimating development.
Go through previous CRM developments requirements and practise estimating and then comparing your estimate to the estimate given. You can ask the CRM developer involved in the original estimate to explain his estimate and ask other CRM developers for advice.
Configuring or installing software
Practice installing/configuring CRM software before you need to do it on a customer project. You can ask the IT department if there are any virtual machines you can practise installing software on or you can get your own virtual machine and install CRM with a demo license.
Creating new functionality/customization you haven’t done before
Any CRM development you haven’t done before you should get some experience doing yourself with a CRM trial version.
Once you have done it once you will have working version to modify and the experience of getting it working.
Summary
One of the hardest parts of CRM development is doing something for the first time and the best way to prepare is to practise. Practising development, installing software, designing solutions, estimating etc will allow you to go through the process without the pressure of doing the process for a customer.
When delivering a CRM development activity for a customer there is pressure to produce the development activity in good time and to a high standard. When you practise the development activity on your own these pressures don’t exist and you can concentrate on the activity.