Set yourself a time-limit for how long you will work at solving a problem, and possibly spinning your wheels, before you will seek advice from others. For most scenarios I’d say 15 or 30 min is about right, possibly a bit more when you are new to something – but definitely no more than 1 hour.
Seeking advice does not mean someone else has to take over and write the code for you, just bouncing ideas off from someone else or doing some Googling and other searching might turn up ideas for how to approach you problem.
Tip #2 – I can see clearly now…. that I’ve written it out Pretend you need to write out your problem in order to get assistance (in fact, this might be true). It is surprising how often the act of writing out a problem in a clear, organized and accurate manner manages to shine a bright light on something you have overlooked while struggling deep within your code. In fact, often a much less complicated approach to organizing and solving the problem suddenly appears.
Tip #3 – Ask your sales people for help! What? Why would I ask my sales people for help with a technical consulting problem?
When customizing software, one of the most productive techniques is to find some feature or functionality in the base product that works in a similar manner – then copy and adapt those techniques liberally. As consultants we usually assume we know the product very, very well and that we and have already performed a mental search. The fact is though, that sometimes consultants don’t touch some parts of the product nearly as often as others – Campaign Management, Contracts & RMA’s are all good examples. On the other hand, the sales people and pre-sales engineers in your organization touch all parts of the software on a regular basis.
Example: Consultant – “someone wants a data grid where the user can select multiple rows from the grid and then press a button to do something to the selected records. I’m pretty sure that is not done anywhere in the stock product, but thought I’d ask in case I’ve overlooked something.
Sales person – Actually, I think there is one place if I understand what you are asking. Take a look at the Campaign feature – I am pretty sure the Targets tab has a data grid where the user can select multiple rows using check boxes as the first column in the data grid. Pretty slick actually and I kinda wondered why we don’t see that any place else in the product.”
Tip #4 – Solve a simpler version of your problem This is the tip that helped me reminded me of the prior tips above. It is extremely easy to get lost in the depths and complexity of your specific problem – spinning your wheels, getting distracted by tangents, and finding yourself constantly “almost there”… but not quite ever finished solving that new challenge or problem.
Create a very simple version of a specific part of your problem – solve that problem without the distraction of other distracting behaviors and logic. This will allow you to focus on the specific problem and a clean, clear solution. Once you have confidence in the technique, you can introduce it into your larger, more complex scenario.
It is surprising how much people resist this advice… myself included at times – but it is equally surprising how frequently this advice solves problems, reduces stress, and yields better solutions. People most often say, “but I’m so close – just have a look at this thing I am doing right down here at line 596…”. Trust me, years of experience have taught me that it will actually be faster to take the time to create a simple version of your problem and solve that first, believing you are close to the solution is more often an illusion than a reality.
If you have a tip or strategy, please reply and share with others and/or create posts in the community when you figure out an interesting technique or problem solving strategy – which I suppose is really tip #5 (with acknowledgements to the Beatles).
Tip #5 – I get by with a little help from my friends Share your experiences and knowledge with others here on this community and elsewhere, and they will share with you – so in the end we will all get by.