When I first started my internship last June, I walked into the office with a years worth of intensive SharePoint development specific education, a pocket full of dreams and immeasurable optimism....
Oh to be 6 months younger and naive again. I have always considered myself a fairly confident individual, but development and - more specifically - SharePoint has this particular way of ebbing away at those qualities in a manner so effective, one can't help but be impressed. This might be the biggest barrier to entry for someone trying to break into the field. The incessant reminder that, like Jon Snow in Game of Thrones, "You know nothing".
In the following paragraphs I'll talk about some of the things that kept me going in my darkest hours
There is a saying that goes a little something like, "The definition of insanity is doing the same thing and expecting different results". While this platitude is certainly applicable to a lot of things in the field of software development, it entirely ignores the importance of having a specific and repetitive routine when beginning something new. When you are just barely treading water in an ocean of new information, a familiar routine can be just the life vest you need when the waves start crashing over your head.
On the suggestion of my bosses, I began writing down EVERY step I was taking to solve problems, the expected result and the actual result. Though these things didn't match more often than not, just the simple act of repetitively writing everything I attempted down is exactly what prevented me from "trying the same thing and expecting different results". That's the type of Inception level irony that even people, like me, that hated that movie could enjoy; (honestly, 2 and half hours and we are left wondering if it was all a dream? Two thumbs down) at least in retrospect. It may seem counter intuitive to add more time to a task that you feel is already taking you too long to complete, but the importance of being able to look back and see how you finally came to a solution is paramount to changing the way you think about problems in the first place. It gives you a unique opportunity to recognize where when and most importantly HOW your brain failed you.
Once you have a collection of notes to look back on, even for mundane tasks, you can begin to recognize and assess these patterns to try to make sure these steps are not taken again. Little by little, you can optimize and entirely change the way that you approach problems, getting you that much closer to not banging your head against the wall and wondering why you have a headache at the end of the day. Better still, if(when) you have a day where you feel like you didn't really accomplish much, you can always look back at the notebook and remember that you aren't as useless as you feel. You can measure your failures and successes in a tangible manner!
Change the way you approach problems
This idea of retraining your brain to think about and solve problems is integral to making the leap into effective (pun intended) Cognit-ive thinking. During my time as an intern it was impressed upon me from day one that learning to write code is secondary to actually learning to think programmatically. Humans are for better or worse simply not wired to think the same way as a computer. Our own thoughts are abstracted by our own emotions and biases.
If your brain decides it is right about something, you will subconsciously do everything in your power to make that true. This impedes the process of getting down to the cold hard truth, and as any addict of flawed thinking will tell you, admitting you have a problem is the first step to getting help. Daily exercises in breaking down problems into logical tasks goes a long way towards changing the way you think. Extrapolating this type of thinking to your daily life will not only make programming seem less foreign, but it just might help you notice flawed logic in your day to day decisions at work. Simply put thinking about thinking will make you a better thinker!
Relax and try to enjoy it
Last but not least, remember to relax and have fun! This is exactly the sort of corny, meaningless drivel you expect to hear right before someone asks you to do something that will be very stressful and probably not all that much fun. However, the fact remains that what separates the mediocre developers/consultants from the great ones, boils down to who is the more effective problem solver.
Stress is a real hindrance to any kind of rational thought. It's no secret why airlines tell you to put your own oxygen mask on before you help the person next to you. It's not just to satisfy your inherent sense of Darwinian natural order, its so that you have the clarity to think reasonably in an already stressful situation. During my first couple weeks, I would feel a great deal of panic when I received a task regarding something I had never even heard of before. The panic would be even greater if I got a task that I THOUGHT could be easily handled, only to be reminded that "How hard can it be" actually translates to "That sounds way easier than it actually will be".
Now I'm not saying that I don't still panic every now and again, and a little bit of panic is good sometimes to light a fire underneath you. I'm simply suggesting that you don't let your fear of the unknown cripple you from making the unknown, known. Had I learned this just a bit sooner I might have a few less grey hairs and a few less ulcers. Furthermore, you really should try to have fun. That part shouldn't be all that hard, because programming and consulting in of themselves are extremely complex and interesting topics.
I am by no means close to the developer I want to be, and I think any really good developer should always feel that way. However, I now know things about consulting/SharePoint/business/development/myself that seemed quite far out of reach just a few months ago. I am well aware that I still don't know everything that I need to know, but I would say the biggest difference is that the things that I don't know simply don't worry me as much anymore.
If you take one thing away from this blog post, it should be that a willingness to simply push through the hard times will go a long way towards success. I'll leave you with a quote from an actually good DeCaprio movie, Catch Me If You Can. Whenever you feel like you're drowning in a sea of new information remember this story, "Two little mice fell in a bucket of cream. The first mouse quickly gave up and drowned. The second mouse, wouldn't quit. He struggled so hard that eventually he churned that cream into butter and crawled out. Gentlemen, as of this moment, I am that second mouse." Be the mouse.