Screen Shot 2016-04-18 at 11.21.15 AM

You know what happens when you do something and people don’t criticize you enough. You end up doing it again. And it is rather debatable as to who is to blame in this case. And for those of you who are subject to this for the first time and are wondering what in the world I might be referring to, I am speaking about my posts. This is my second one and everyone who liked my first one might have to take responsibility for encouraging me 🙂

Debating. Love it.

I’ve always loved debating and did a little bit of it, on a rather regular basis, back in my college days. Still, not enough and not nearly as much as I would have liked to do in hindsight but just about enough to change the way I looked at things. I want to say it has helped stand me in good stead with my software development career. I had little clue back then that something as simple as picking a language to code in – Java versus Ruby, or vice versa, as a very simple example – would evoke so many emotions. It sure does. And I am mighty glad that it actually does.

Brevity. Not my forte.

That brings us a tad closer to what I actually want to talk about in this post. Closer but we aren’t there yet and I’ll tell you why. It is because I am someone who tends to start with speaking about the parking lot when I am actually asked to say something about the coffee I had in a coffee shop (after I parked the car). Yeah, brevity has never been my forte. As you can see, we are into the third paragraph and we still haven’t even touched upon the basic premise of this post. But, it is what it is.

I started my career doing this and if I had a chance to go back and start all over again, I wouldn’t pick anything else. I might start off writing slightly better quality code since I now know a little better but, that apart, I wouldn’t change a thing. Sometimes, and rather coincidentally, you end up somewhere you are better off being but hadn’t necessarily planned to be there. And more often that not, at least for some people like I, the better decisions in life are made for you not by you but actually by the very situations you’ve been put in. Software was one such thing for me.

I have enjoyed every aspect of it not the least of it being the passions and emotions it brings to the table, not to mention the debating skills it does require from time to time. And that’s why we had the brief pit stop about my interest in debating earlier. The beauty of variety and options is simply that there is a whole lot of stuff to agree – and more importantly, disagree – about. Some of the obvious questions a lot of us would have faced during the course of our development careers:

  • Which language should the application be built using – Java? C#? Ruby? JavaScript? Scala?
  • What frameworks do we want to leverage – JEE? .NET? Grails? Rails? Sinatra? Padrino? Grape?
  • Which database do we want to rely on – Oracle? MySQL? SQL Server? PostgreSQL? MongoDB? CouchDB? Redis?
  • Which application server might work for the application – JBoss? WebLogic? Passenger? Tomcat? tc Server?
  • How about the web server – Apache? Nginx?

Options. Too many options.

As if the list above wasn’t enough to tire everyone before a single line of code could even be written, now we are dealing with even more questions – thanks to the exciting world of JavaScript development.

  • Should we use Backbone.js, Ember, Angular, Knockout or one of the other 200 alternatives that seem to be out there?
  • Should it be a Single Page App at all times? Or, does it make sense to not take that route on occasions?
  • Should we stick to jQuery for the most part or continue to explore alternatives like Dojo, Ext JS, AlloyUI?

Now, you know why debating becomes a rather important skill even in the life of a developer. Not only the need to debate but the interest and energy to want to do it all the time! This is in some ways no different from the experience I had ordering coffee at Starbucks when I first landed in the US. All I wanted was coffee, a simple coffee. But, it took a herculean effort before I could get myself one. Did I want a Latte, an Americano, a Frappuccino? Did I prefer tall or venti? I mean, it came to a point where I felt so embarrassed that I almost wanted to give up the need for caffeine, even if momentarily for that day.

Consulting. Different kind of beast.

While I still continue to do product development, even if it is limited to building a product for my own 2-person company, I switched to doing consulting a few years ago for my bread and butter. It was something I hadn’t done before and hence, the urge to want to explore it further got the better of me despite a bit of skepticism I had to begin with.

I am in my seventh year of consulting and at this point, I have a decent sense for what it entails and what the pros and cons are. Let’s talk about the pros first.

Being able to work with a wide variety of clients.

Given that the length of the projects vary quite a bit, and I’ve done projects that ranged from 2 years long to ones that lasted no more than a few weeks, it provides the foundation to work with a number of different clients. Needless to mention, this is very exciting as you get to interact and work with new people all the time and if you are an extrovert like I, you will know what I mean.

Working on a new stack all the time

As a developer and an architect, nothing triggers my excitement more than the technology stack I would be working with. Add to it the fact that the stacks keep changing in consulting, it is no less than an icing on the cake. I always look forward to this phase.

Being treated as a fresher to start with

Of course, I mean this in a good way. That’s why it is listed under the pros! Every time I start a new project, I am entering new unchartered territories. While the client undoubtedly has a certain amount of trust in you (as they wouldn’t have hired you or your company in the first place) based on all your achievements (for lack of a better word) thus far, it is only natural that they have an iota of doubt during the initial days and weeks as they haven’t yet seen your work.

That feeling is quite humbling to say the least. All your education, all your work experience and all your recommendations are temporarily put on hold while you are being assessed. This excites me as it makes me feel like I have at that point shed all my baggage and am able to start off clean and nice, and can work my way through to try and earn the trust of this new client.

Trust. And the satisfaction it brings.

I’ve always believed that while being hired by a client for the first time takes skill, talent and accomplishments, it takes all of that and a bit more for them to hire you the second time. And one of the most important contributors to the bit more I mention above is trust. Trust isn’t easy to come by and is very easy to lose. We all know it. Therefore, it gives me unparalleled pleasure when my previous clients reach out to me as they know what they are signing up for!

Now, if it is all hunky dory, why wouldn’t consulting be the magic answer to all software related professional problems. Well, just like everything else in life, everything has a good side to it and a bad side, unfortunately. Here are some of my gripes about consulting.

  • Being treated as an outsider. Given the nature of consulting work and the length of the projects, it isn’t worthwhile for the clients to spend a lot of time, money, and more importantly, energy, in integrating you with the core team.
  • Nature of work is in parallel to the core functioning of the team. One of the reasons for hiring a consultant in the first place is that the client either has a specific problem they want you to address or build a Proof of Concept or something that is not along the lines of what the rest of the team is working on. While we’ve discussed the benefits that this might bring to the table in terms of the exciting nature of work, it comes in the way of being able to interact with the team enough.
  • Lack of stability. While I’ve listed this under the cons, it may or may not be a bad thing necessarily. We live one life and what we want out of it varies from person to person. I like taking chances so this isn’t an issue for me necessarily but the feeling of lack of stability isn’t always comforting. I can tell you that much!
  • Interviewing. While this used to be exciting for me in the early stages of my consulting career, I have to say that it is exhausting. Not just interviewing from a answering technical questions standpoint but also from a process of applying standpoint. My first post alluded to this particular issue so I’ll refrain from saying much again. It should suffice to say that I don’t necessarily agree with some of the interviewing processes I’ve experienced and am less than convinced that they would help hire the best consultant for the job.

Well, we’ve come to the end of this post. Yes, finally. Hope some of this makes sense and even if it doesn’t, thanks for reading!

— krish @ http://www.snowpal.software

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s