Castles, Cricket & a peaceful 10 days!

Screen Shot 2017-04-04 at 5.19.31 PM.png
Serenity!

We took a bit of time off last summer and went to UK. My wife and I love cricket and castles and UK has a lot of both of those! So, every time we get an opportunity to go somewhere, we always think of going to England. For those of you who don’t know a whole lot about cricket, it should suffice to know that it is perhaps one of the most relaxing sport there is and the fact that a version of it is played over 5 days with tea, lunch and drinks breaks during the course of each of those days perhaps play a small role in making it that peaceful ūüôā

I’ve always loved cricket and despite living half my life in the United States, I am yet to develop an interest in watching any other sport and I blame it on my deep rooted love for cricket. We went ground hopping from Lords to Leeds to Edgbaston, all the way up to the Scottish Cricket Club in Edinburgh. The longer form of the game is broken down into 3 sessions per day with each of them running for about 2 hours. We would walk into the grounds and catch a couple of sessions. Given that a number of these games were county games, there weren’t a lot of people in the stadiums so that added to the peace factor as well. And if memory serves right, we were perhaps the only 3 in some of the cricket grounds other than the players! That meant we would actually end up meeting the Scottish Cricket Captain who would almost actually walk up to us to introduce himself. Can you believe it?! He was not only a real nice guy but a very good batsman as well.

When we weren’t watching cricket, we were doing one of 2 things. Eating, it was very easy to find vegetarian food in UK, or visiting one of the many castles. Given that we immensely enjoy walking, a castle is one of the perfect spots to be at. They provide plenty of room for walking or climbing. And despite their histories that most likely has a lot of violence attached to it, they are absolutely peaceful to visit today. We found peace in the cricket ground, more peace walking the streets of Scotland and even more peace touring the castles.

I fell in love with Scotland so much that I started googling “Ruby, JavaScript, Java openings”. And I started imagining what writing code would be like sitting in front of, say, the Inveraray Castle. I’ve read that artists, musicians & authors travel to exotic locations to help inspire them. Agreed, I’ve no such talents but I can’t see why it might hurt to actually try and do whatever it is that you do best while enjoying the serenity of that exotic location. Well, I’ve made up my mind that one day I want to surely give that a try. Let’s see if I can produce better quality code and architecture if I have the blessing to be able to build a new ReactJS app somewhere near the Swiss Alps or in a cricket ground in UK or Australia!

In any case, we did the cricket and castle hopping, day in and day out, for 10 days and then, it was time. Time to return to reality and get back to the demands of life in general. While a vacation doesn’t last forever, and we all wish it did, it still begs the question if we are doing enough to try and make our day to day lives vacation enough so we don’t actually have to eagerly look forward to those meager 2 or 3 weeks every year. It is a given that some of us are blessed a bit more than a few others, and a whole lot more than some others. And while it is entirely true that someone else would happily trade your life for theirs as your life stands right now at this very moment, it is also possibly true that you are possibly spending your life chasing something else or catching up with someone else who you look up to. A vacation is meant to give us a break from all of that, and sometimes, it truly does.

Mother’s day. Thanks to my mom.

We all love our moms for numerous reasons. For different reasons. And for¬†more than one reason.¬†Not everyone documents it and I haven’t either. At least, all these years. This year is a little different and I wish the rest of the years are consistent with this one.

It’s been several years since I lived in¬†the home I grew up in. That was more or less¬†half my life ago. For the majority of the last couple of decades, my mom has primarily been a¬†phone pal.¬†I try to call her almost everyday and the days I don’t, she calls. For that matter, she calls even on the days I call her. And for that matter, I call her more than once even on the days that she calls. Or I call.¬†You get the picture by now, don’t you?

What do we discuss? World Politics?¬†No. Macroeconomics?¬†No.¬†Microeconomics?¬†No.¬†STEM?¬†No.¬†Anything remotely worthwhile?¬†Absolutely not! And that’s exactly what I enjoy about the conversations which, more often than not, turns into a debate. While both my mom and enjoy debating, I am afraid she isn’t nearly as good as I am ūüôā And even if you consider that I am mediocre, believe me when I say that she is worse than I. She conveniently switches topics when she is close to being on the losing side! However, I enjoy those meaningless debates. All the time.

We all cherish some things a whole lot more than others and needless to mention, the things that are worth cherishing cannot be bought. Because, they aren’t sold. Because, money cannot simply buy them. Because, money can only buy meaningless, materialistic things. When I think¬†of my mom, I think of many things –¬†some more so than others.

I went to college about 1500 miles from home, not to mention almost 2 decades ago and in a remote part of India that didn’t have too much access. At least, not the comfortable one. You had to take a train and sit in it for almost 2 days and then, hop into a bus for about 2 hours that took you to a ridiculously old and poorly maintained station where we boarded another one. That took about 6 hours and then, you had to take a bus again for about an hour. Something along these lines. If you are like me who hates any and all kinds of travel, let alone the most uncomfortable ones, you will see what this really means. The fact that hundreds of other fellow classmates took the same train didn’t make it any more exciting for me.¬†You couldn’t book train tickets online then and you had to rush to a building in the wee hours of the morning to ensure you had a reservation particularly if you wanted to be in an air-conditioned car as there were only a handful of seats in those cars (compared to the other cars that didn’t do anything to keep you cool and¬†guard you from the unbearable heat).¬†My mom went there in the wee hours, stood in the long lines patiently and ensured I got a confirmed ticket –¬†every single time for 5 years.¬†Not because it was reasonable for her son to expect that. Not because any other parent did that (most of them didn’t).¬†Not because it was justifiable by any stretch of the imagination. But simply because – her son wanted it and wouldn’t have been happy otherwise.

As an immigrant, I miss many things but I dearly miss the Indian festivals and the festivities that go along with it. I can’t remember the last time I was back home for a Deepavali or a Pongal. My mom plays a significant role here as well. She has been sending me video clips (well¬†before the age of smart phones¬†and iPads),¬†audio clips and goodies to keep me well connected with what’s going on and more importantly, ensuring that I didn’t miss the general¬†feeling. While there is never going to be a fair replacement to actually being there physically during those celebrations, I have to admit that my mom does her very best to keep me engaged.

Of all the important and significant years in my life, there is none other than the year 2000. This is when my son was born.¬†If only I had any idea¬†about¬†the happiness associated with being a parent, I would’ve had a child when I was 10!¬†And if¬†the almighty gave me a chance to go back and have a child of my choosing, I would choose my son over anyone else. Every single time. Now,¬†you may ask what my mom has to do with this part of the post. She surely does. Being a mom, she quickly realized what had become more important to me and by a distance. So, she tried to learn more about my son and more about what I liked to do for my son and the rest, you can probably infer. And I don’t have to state how hard it is to do all of this remotely despite what Apple’s consistent offerings bring to the table.

It is easy to be nice to someone if you think they can come of some use to you at some point of time. We all run into such people all the time. But, luckily, the world has a number of people who are willing to go the extra mile to help you even when they know they don’t quite stand to gain anything from their actions. And I think that’s what makes the world a beautiful place. And that’s what makes life a blessing. If I have any more births, I know who I exactly want for my mom. If I can be half as good a parent as my mom, I would have done well.

As a finishing sentence, I will say that I’ve come to know another mom¬†who I’ve been blessed to know as well. In the interest of not sharing the laurels, I’ll save that discussion for another day.

Snowpal is 6 years old!

 

AAEAAQAAAAAAAAVWAAAAJDQ3ZjkzOWUyLWI4NWQtNDZjMy05MWY0LWZjMWNhMGYyODZjMg

Today marks the 6th year since I incorporated my small company. Thanks to all of you for your wishes and for reminding me of this small, yet an important, milestone for numerous reasons.

I started working for myself in 2010 (about a decade and a half behind schedule but a start nevertheless) in the pursuit of a more important and lifelong dream. While I am still a long ways from it even now, I believe I have actually made some progress in the last year or so and for that, I am happy.

My company and I,¬†and sometimes¬†they mean the exact same thing if you know what I mean!,¬†have been working on building a software product for a little while now and while it certainly doesn’t intend to or is capable of solving¬†world hunger, it still has taken its own sweet time for ¬†a variety of reasons, not the least of it being my inefficiency to manage it better. I shamelessly admit it. I’ve failed many a times over these years and it hasn’t been for the one reason that I actually thought might make it more challenging –¬†the technical aspects.¬†It has been just about everything else.

In any case, every failure created a learning opportunity and if you are a coder, you might agree with me that we tend to learn more from bugs and exceptions and errors than from features that magically end up working in the very first attempt or iteration. Several technology stacks and numerous feature changes later, I have a feeling I am now in the right direction at least to the extent I am able to foresee.

As I think about celebrating my company’s 6th anniversary and the little bit it has¬†been able to accomplish¬†over the years, I also ponder over the fact that this¬†year marks the 2nd decade of my stay in the United States of America. I’ve now lived¬†here half my life and only really know how to live here at this point. It has been a remarkable journey despite the fact that I’ve only achieved about 20% of my goals and have a significant portion of it to go still! Regardless, I would like to thank all my clients (previous, current and future ones),¬†and the recruiters who helped me find them,¬†for keeping me employed over these years and thereby, helping me¬†keep my dreams afloat. You make all the difference to my dreams & my pursuit of them.

While my heart desires that I quit everything else I am doing right now to focus all my energies solely on building my product, I realize I still have to wait a bit longer. However, I am closer than ever to taking the plunge and that very thought gives me goose pimples. Till that happens though, I will continue to rely on my clients to help me and my¬†company¬†stay afloat. I promise I’ll do the very best I can,¬†as always, and will give you no less than the best bang for your buck.

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

Do you find interviewing exhausting or is it just me?

I have been coding for several years now. I spent a lot of time in college before I¬†started my first job or wrote my first line of code that made its way into production and while you may ask, “why is this any different from anything anyone else would have ever done?”,¬†I specifically make a mention of this because I have repeatedly asked myself if I actually should have spent that much time in college before I entered the workforce. Well, hindsight is always 20/20, isn’t it? Not only that, it was almost a given at about the time I migrated to the land of milk and honey that you had to really study¬†yet again¬†before you started chasing the first of many of your dreams.

So, I went to college again and spent the last 3 of my almost 8 long years in college. I studied a lot and learnt a little bit over those years but it had little, if anything, to do with software. I didn’t think I would end up in software engineering. Neither did any of my friends. I had lot of other loves. Entrepreneurship was at the very top of that list. I didn’t know how to become one (and I am still trying to¬†find out)¬†but I wanted to be one. Other than that, I enjoyed Marketing thoroughly. So, I thought I would do something in the field of marketing. I thought I might be a lawyer except that I didn’t go to law school or didn’t even know where the nearest one was. Well, hopefully that gives you a picture of how very clear and focused I was a teenager and as a young adult.

8 long years and 3 Master’s degrees after, I finally got a sense for what I might really have to do to pay my bills. As much as I want to credit it to what I may have learnt at school, I would be lying if I did that. A friend of mine suggested that I should perhaps attend some programming classes if I intended to find a job. A¬†job. Hmm.. Why hadn’t I ever thought of that or something like that? Clearly, everyone needed a job and I sure would need one too.¬†Knock, knock. Welcome to reality!¬†That was¬†perhaps the most useful¬†first¬†learning¬†for meThat happened not in 12 years of schooling or 8 years of college but in a parking lot while the two of us were waiting for a friend to join us.

And so, I decided in enroll in a couple of classes. I had written code before in college but it was because I¬†had to¬†enroll in those classes and they weren’t really voluntary and hence, any lesson that may have come out of it was soon gone and memory didn’t serve any of it. I remember when I walked into the Computer Science building much to the surprise of a lot of folks who went to school there who simply didn’t expect me to show up there. How can I forget the trust they might have had in my abilities? It was so much that they didn’t pick me in their project teams despite the fact that I didn’t know anyone else in the class! Not once, not twice but repeatedly. That was my¬†second learning.¬†Welcome to reality, one more time! Given that I had paid for the class, I had to be part of some team even if was the default last time where a bunch of us were bucketed into. That was good. At least, much better.

If I remember correctly and if my memory serves me right, it was a Distributed Object Computing course. Or, was it Object Oriented Programming in C++? Well, it was one of those, I think.¬†All that mattered was that it gave me an avenue to write my first line of¬†real¬†code and I say¬†real (for lack of a better word but also)¬†because it was the first time I wrote code expecting it to land me a job at some point. So, I was pretty darn serious about it. I didn’t know what to expect but I enjoyed it thoroughly. It was at that moment that I realized what I wanted to do in the near future or probably for a long, long time. It wasn’t because I had to do it to find a job (though it certainly and¬†unquestionably started out that way)¬†but it was mainly because I enjoyed it. That was my¬†third¬†learning.

I attended many more programming related classes after the first one and wrote a lot of code in the next 12 months or so. I started looking for a job¬†and thanks to some really nice people who didn’t mind hiring a fresher who knew a whole lot lesser than them & a company that didn’t mind all the paperwork needed to be processed shortly, I did find a job. I still remember my first line of code in the real world. I was worried and anxious but a developer who was as friendly as one could expect walked me through it. She walked me through every word of the one line I wrote before committing it. I had never seen a code base that big at that point given that all my work was limited to school projects. It was overwhelming but very exciting. I realized what I had learnt in the last few months might help but I had a long, long way to go before I could call myself a developer. That was my¬†fourth¬†learning.

I used to think that code which satisfied the compiler (at least, for compiled languages)¬†or code that satisfied the requirements and did what it was supposed to do (from a UI or API standpoint, as a¬†simple example)¬†was¬†good enough. Obviously, it isn’t. And trust me when I say that if it is obvious enough to you, it either means that you have been doing development work for a while or are a much better coder than I to begin with.¬†I had little clue that there would be so many differences in coding styles, so many different technology stacks, so many different development methodologies, so many different deployment mechanisms and so many different ways of doing just about anything. I learnt it at some point along the way and that would be my¬†fifth learning.

This last piece of learning brings us a little closer to what I felt like writing about today. Yeah, brevity has never been and perhaps never will be my forte. One part of what I do through my company is consulting work. It pays my bills and keeps me going so I can focus on what I really want to do (which if you had seen any of my earlier ramblings, you would know what it is). I pick up different types of consulting work and have learnt to be a little less picky about them as years have gone by. However, there are a few things I try not to compromise on, at least to some extent. Like the technology stack I work on, my read on the complexity of the problem I am asked to solve, the role I am asked to play, the rate I expect to get paid and so on and so forth.

Like everyone else, I strongly believe in what I bring to the table and more importantly, I take immense pride in my work.¬†While¬†I cannot understate the importance of a contract that is much¬†needed to pay the bills (at least,¬†for most people like I)¬†and keep life afloat, I would be lying if I didn’t say that I consider myself blessed to have a career in software development – one that actually is not just something I consider worthwhile but also helps me find work time and again. So, I always believe that I don’t necessarily have to compromise on everything to find work. A few compromises,¬†yes.

What has bothered me a bit lately is the tendency to¬†trivialize¬†software development. For starters, I am not the kind who trivializes anything because I honestly don’t believe anything is trivial. If you feel something is trivial, it is because you are very good at it. It is like my favorite composer,¬†A. R. Rahman, creating music. He makes it seem all too easy but that’s simply because he is so good at it (and a¬†genius!).¬†What urged me to write this particular post (despite the fact that I repeatedly struggle to get to the actual point and get absorbed in¬†the¬†numerous digressions)¬†is the fact that development is sometimes (and I feel like it is becoming more frequent) treated as a menial task. I would rather not go into the specifics but I say this in the context of me looking for contracting work every now and then & me getting the feeling,¬†not to mention repeatedly,¬†that there are some serious shortcomings in the hiring process that come in the way of potentially hiring the right candidate for the job.

Software Development and Architecture, is¬†not trivial.¬†I am stating the obvious and it is obviously because the obvious doesn’t seem obvious enough most of the time. Every developer takes pride in the line of code they write. Please don’t trivialize it.¬†A developer is no different from an artist even though art may be a whole lot more difficult (it definitely is for someone like me¬†who¬†cannot draw anything, ever).¬†Please don’t assess a developer purely by how long they may have done something. Try to find out how well they might have done it. Try not to test their memory but rather, try to test their ability to solve a particular problem. Problem solving is a skill that I believe isn’t necessarily tested, at least well enough, in most¬†of the interviews. How do you¬†test someone’s passion for coding in a 15¬†minute conversation about Server Side JavaScript? How do you test their commitment? You can only find¬†out if the candidate can help you solve your problem and would be a good fit in your team if you actually make them comfortable to begin with!¬†It is hard to argue that¬†technical interviews have a good and a very important purpose but I am not convinced they are actually helping find the right candidate most of the time. There are quite a few tools out there that aim to solve this problem but the real question is,¬†have they helped and if yes, to what extent?

If you are a developer or an architect and do something along the lines of what I do, you can perhaps relate to my gripe (or, maybe not!). Are there times when you feel that you could do what the position requires not just quite well but a whole lot better than what the client might even expect but are unable¬†to seal¬†the deal for numerous reasons? I see myself spending quite a bit of time between contracts trying to find out better ways to manage my time so I can actually spend time doing the work than doing the convincing. I try to do something a little better every time and I have to say it perhaps has helped in my saving a bit of time every time but I am still far from where I would like to be. Contracting is challenging in its own way but I still like it. Besides, I hope it helps me achieve my more important (not to mention,¬†only) goal. A product that finds its way from the Git repository to one that actually has a paying customer.¬†One day…

Thanks for reading and thanks for not dozing off!

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

Working remotely and why I enjoy it for the most part

If you live in one of the metros that is constantly growing, it is a double edged sword. It is obviously encouraging because more companies move into the area and there are more jobs and opportunities and all the nice things that go with it but it also means that you are going to be sitting in traffic¬†for a few hours everyday. Add to it a personality like mine that doesn’t really agree well with any form or length of commute, it will make it all the more challenging.

I’ve enjoyed working from home over the past several years despite some of its downsides. For starters, I am an extrovert and immensely enjoy interacting with people.¬†As much as I enjoy software and am grateful to the way things actually panned¬†out¬†resulting in my picking that as a career, I have always wondered how life might have been if I were fortunate & qualified enough to become a lawyer or something along those lines.¬†When you work from home, you miss out on a lot of interactions and tend to know your coworkers that much lesser. Sometimes, you get quite¬†desperate that you don’t want to hang up even after a meeting is actually¬†over. Yeah, can you believe it?!

Coding in the wee hours of the morning has always helped my thought process. I want to believe I like the quiet, sometimes.

Other than the part that involves interaction (or the lack of)¬†with your coworkers, working remotely may not necessarily help if you are looking to grow in your career at an organization because when you don’t get to see anyone, they don’t get to see you as well. Of course, if the entire team is working remotely, this may not play a role. But, it is hard to argue that you may want to be onsite at least in the early stages of your career.

What I do like about working remotely is the flexibility it brings to the table and the shift in focus it mandates. I’ll explain what I mean by that.¬†Given that my¬†company¬†does both Time and Materials contracts along with Fixed Price work, I’ve had to make constant changes in the way I work primarily from a logistics standpoint.¬†Fixed Price¬†work is exciting in some ways because you have a target in mind and you constantly march towards it. While you keep the client constantly updated with your progress, you still work in isolation for the most part with the interacting mainly limited to the members of your team (not so much¬†the client’s).¬†Time and Materials¬†requires a slightly different work model as one of its¬†primary differences is that the time needs to be logged. When you are onsite, it is much easier as you go in at a certain time and leave at a certain time so you know how much time you spent at work. When you are remote, this requires a lot of discipline. I’ve done this for many years now so it has become a practice but I do work with other remote resources (offshore and onshore)¬†who tend to find this challenging from what they’ve told me.

The fact that you end up working more (remote) hours that you actually bill your client for isn’t discouraging in anyway. It tends to make you feel happier!

Ultimately, and just like everything else, it comes down to personal preference and options that are available but the ideal work environment for me would be something that supports remote work primarily with some onsite work,¬†as and when necessary.¬†I’ve tried to enjoy the commute when I’ve had to do it by listening to music, trying not to think about things and yada, yada, yada, but my honest, first thought (and I am a very¬†firm believer in that¬†uncorrupted first thought as the ones after that tend to become rational because of past¬†experience and aren’t necessarily true reflections of what you truly, truly feel)¬†has been that I would rather spend these valuable minutes doing actual software related work instead of aimlessly staring at the bumper in front.

In an ideal world, I would be at the client site when I need to present my proof of concept, or do a presentation, or iron out some architectural issues, or close a deal with me (and my team)¬†doing most of the actual work remotely. That would be perfect. I’ve had the pleasure of working in that capacity over the last several years (thanks to my clients!)¬†and pray that it remains an option in the years to come.

Ultimately, I believe that we all work to the best of our abilities when we are allowed the freedom to think in a space we value most (be it onsite or offsite or at a coffee shop!) with the primary objective being the necessity to get the job done in the best possible manner.

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

Still trying to launch my first product.

Every now and then, I feel like I am at the crossroads. There has been, is and always will be a larger objective and that has been to solely focus my energies on doing product development for my own,¬†albeit small,¬†company. But, dreams take a while and as I’ve come to realize, a long while sometimes. And while it is rather easy for me to throw the blame on the numerous challenges that life doesn’t cease to throw at you, I am fully aware deep down that if I really wanted to give it all, I would have. Having said that, I feel like this moment is the lull before the storm in my career. I hope it is.

A few years ago, I decided I wanted to convert some of my ideas into actual working solutions. Given that I had been building software for several years, and across different technology stacks, I backed my skills and completely believed that it would see my ideas through fruition within a couple of months. Boy was I wrong. The next few years have told me that development and architectural abilities, while obviously important, play only a small part in the overall equation. A significant part but a small one, nevertheless.

Challenges

We all run into unique challenges all the time but, a lot of times, I think we might run into the same type of challenges but handle it rather differently and that, in essence, defines us as people to some extent¬†and plays a crucial role in helping us¬†achieve our goals and realizing our dreams. Needless to mention, some challenges are more challenging than other challenges and the situations in which those challenges arise adds to the magnitude of those challenges as well. I wanted to share some of my experience as I continue to travel this path of launching a software product first and then, another and then, another. If you are looking to read about someone who has been there and done that already, it is about time to¬†find another post to read (luckily, there is no dearth of accomplished people in this world and there never will be)¬†but¬†if you are like me trying to figure out how to make this all work and¬†don’t relish in living in comfort zones, you may want to read on.

Do it Full Time, not Part Time

This has been the biggest of all challenges. While I’ve designed, architected, developed and deployed applications from scratch for a number of my clients and on occasions, all of this within a matter of a couple of months, the question I get repeatedly asked by folks who know me and care a bit for what I do is, “Why is it taking so long?”.

That’s a fair question. I am not trying to solve world hunger, after all. So,¬†what’s causing this hold up?¬†There is no better place to start that discussing the number of hours spent doing what you really want to be doing in any given week. Ideally, I would like to spend a 60+ hours per week on an average building whatever the heck it is that I’ve been trying to build. While it could be writing code at certain times, it may be rethinking the approach or architecture at other times. But what does help is if you didn’t have to switch gears to doing 2 or 3 different things and when that happens to be the case (and more often than not, it does), and you end up spending a meager 15 hours on some weeks doing what you absolutely want and need to be doing, it hurts your momentum.

Of course, we all need to pay our bills. At least, some of us have to and there begins the first trade off.

Don’t be obstinate

Obstinacy is no good in general and definitely has no place in a start up. Do I wish I had realized this years ago? Absolutely. Am I glad I at least realized this now? Absolutely.

Everything evolves in this world. We all know change is inevitable and is the only thing that is constant. Of course, we all know that. But, do we necessarily remember that it is the case at all times? Perhaps not. You start out building something and you do it because you truly believe in it but does it mean it is immune to the realities of the world that you may or may not have perceived when you started out? Not at all.

I’ve realized that while the problem domains I had started off¬†to focus on haven’t necessarily changed all that much despite the advent of numerous offerings in those¬†spaces,¬†the scope of the problems continuously change and therefore, how they need to be solved has to be cognizant of that. I was resistant to making some changes to begin with and they have cost me. It is time to fix that attitude.

Don’t doubt yourself

I tell myself this every day with the belief that I would actually wake up one day not doubting myself. Has it happened yet?¬†Not quite but I want to believe I am slowly but¬†steadily getting there.¬†I read somewhere that doubts tend to kill more dreams than reality actually does. Or, something to that effect. I couldn’t agree with it more. While there are no guarantees in life, the only guarantee is your commitment to what you are doing.

Every one does their job,¬†be it intentionally or¬†otherwise,¬†in making you doubt your abilities. They do it rather well, at times. That – added to your own doubts stemming from the past, present and unknown future – makes the whole situation quite challenging. The onus is on you to not make it deter you. It is okay to have doubts, I think, so long as they don’t play a major¬†role in moving forward.

Give it everything

This has been tricky for me. While the heart says – quit everything you are doing and just do what your heart desires, it is easier said than done. Who’s going to pay for gas? How about food? The house? Phone? And the list goes on.

I’ve always wondered how other people did it. And just as that thought crops up, another one does too. It is that all of our lives are unique and therefore, what works for one may not work for another. There isn’t a silver bullet.

I would be ecstatic when I make the call to give it everything and I do honestly feel I am at the crossroads now.

Priorities

This goes back to one of my earlier points about doing it full time versus part time. One of my main challenges has been the fact that I work for my clients for bread and butter and do my product work as an afterthought,¬†all the time. While this is understandable because the client pays me and I’ve promised to produce¬†my best and nothing short of it at all times, it does come in the way of getting the product out the door.

I tried the part time route where I worked only a few hours a week for my clients (even if it meant significantly lower returns given the Time and Materials model)¬†but as it turned out, I actually ended up working full time and only charging part time. That’s because, a feature that needs to be done by a certain date needs to be done and if you are like me who doesn’t ever want to miss any deadline ever, you will know what I mean. It doesn’t matter what you get paid or what the contractual model is, you are simply unable to do anything lesser than what your ability is.

Developer vs Project Manager

In a small company, you tend to play multiple roles. When you are working on launching your first software product, you tend to play multiple roles and some more. While it is good that you have to and are able to play these roles, they do come in the way of getting something out the door. Let me tell you why I say this and how it has come in my way go launching something sooner.

When I do consulting work as either an Architect or Developer (I work with a project manager who manages the time lines.¬†While I haven’t always had to work with a project manager as it is sometimes the Director of Engineer/Technology or a Development Manager who I end up reporting to (and that has mostly¬†been the case), the person I report to defines the deadline and it is a hard one meaning the work needs to be done by that point for certain. That helps and it helps a lot in being able to meet the deadline.

Compare this to the product development scenario where I play the role of both the Developer (+ Architect) and the Project Manager. While one side of me that wears the Project Management hat says I need to get something done by a certain date, the other (and the more side that wears the Engineering hat coerces me into doing it the right way at all times. What this means is that the technology stack and the architecture change more often than they really need to from a deliverable standpoint.

Spreading myself too thin

It is exciting to define the features, assess the market constantly, architect the applications, design the features, implement it, test and finally, deploy it. It is unquestionable that each and every one of these steps¬†is not just important but quite intriguing as well,¬†some more so than others.¬†But, what’s also true is that you sometimes aren’t able to do enough of any of these things at any given moment given the number of these things that you have to do. That tends to play havoc at times.

While it would be nice to have some help, it would be nicer to be able to afford some help. I do try to get help time and again but till there is a constant source of revenue from any of these products, this is another bullet that needs to be bitten.

Wish me luck!

Anyways,¬†I think I’ve rambled enough for not just this weekend but for the next couple of ones too! Wish me luck in my endeavors¬†and consider becoming my first customer when I do launch the¬†product, at some point.

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

Consulting vs Product Development. My thoughts.

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