on change

Everyone wants change. We all want to thrive for excellence and reach for the top and whatever else your motto/slogan is. But when it comes time to make the hard decisions, you’re paralyzed. Change paralyzes people. Scared and stunned, we cower back into our illusionary comfort zones.

“Change is inevitable”, “The only constant thing is change”, “(mad laughter here)”… I’m not exactly talking about that kind of change. While the principles still apply in the software context. It’s interesting how the principles apply in multiple facets of life.

You can throw all the buzz words around, as much as you want. Social networking, Web 2.0, “we’re forward looking”, “emerging technologies”, but this is all lip service. Put your code where your mouth is, and eat it. Redo it, rebuild it, go through a process of rebirth. Because if you don’t, you’ll die. You’ll become sidelined and insignificant. You won’t be able to carry your own weight and you will collapse under it.

So stop talking about it, and adopt it. Be willing to adopt it. You don’t always have to change, but you must always be willing to adopt change. That’s one of the biggest mistake software companies make, they lock themselves in. Developers write code, and they’re joined to it at the hip. It becomes their baby, and to suggest that it should be changed is off-limits. Management will in turn back these developers, because they wrote the system, they know how it works. So management is scared they’ll leave or pout if change is suggested and they’ll lose the knowledge base. So first of all, hire people who not only take pride in their work, but also take ownership. Hire developers who will own their code and the code of the entire team. And when the times comes, they’re willing to say, “oh yeah, I frakked this up. Let’s do it again, let’s do it right. Anyone have any ideas?”.

Instead, the software industry is littered with people who, on the suggestion of change, will look at you as if you just killed their dog, and then the neighbour’s kittens. Developers don’t just build features into software, they also build in job security. If someone checks in job security into your software, fire them.

But this is not the only case where people freeze upon the mention of change. There’s also the issue of “but we have software live, we can’t begin to change portions of it, we’ll lose money!”. Yes, this is true. But you have to take off your short-sighted spectacles at some point. You’re already losing money by not changing. So take a few developers, branch off the code base and let them go nuts. Keep maintaining your existing software and either make incremental changes, or in the case where you change wholesale, develop an upgrade path.

It’s okay to experiment. One of the factors that prevents change is that management wants sure fire change. They want massive guarantees, and plans and details to the extreme before any work starts. While this is okay if you’re building bridges in sky scrapers, for software sometimes you just have to make the changes. The TDD folk will disagree on the onset, but you know exactly what I’m talking about. You can’t just phantom out of thin air what changes are required or what changes will fix things. You have to tinker and play with the system to find out. Sometimes you have to make the change to see if it works. This scares management (and some developers even). People want decisions in the confines of a meeting room, afraid to deal with the unknown, afraid to take chances and afraid to move forward. To say, “we’ll have to look that up and get back to you” is like admitting defeat. Well, it’s time to accept defeat.

Once you know there is a problem, get people to fix it. Don’t have the resources? Well then, make time for one person for a day a week. Start simple, but present opportunities instead of blockages. This should be management’s primary goal. If your best people are bitching about problems, listen to them. If they’re suggesting change, listen to them. They know better than you, that’s why they’re working for you, that’s why you hired them. And if you don’t trust them to know better, then fire them. But stop pretending to want to improve and take real steps towards change. Listen very very carefully to your best people.

There’s no better way to kill innovation and creativity than to continually resist change. Stop resisting.

I am excited, okay?

I am, it’s all inside though.

I’m having lunch with an ex-coworker a week ago. We’re catching up and he asks me what’s going on with me. I tell him about work and how that’s going, and I mentioned to him how I got into the MBA program at York.

“Congratulations man, ahahaha, buddy this is big news. You say it like it’s nothing!”, the excitement on his face not being reflected in mine.

Hmm… I guess it is big news. And I am excited, I really am. I’m not sure how more to show it. But I am. It’s just that I’m in purgatory right now.

I left a place where I thought I should have some say. Say in the design and direction of the software. I didn’t want full control, but I deserved to be heard. I didn’t feel that was happening nearly to the degree it should have. And when it did, I felt it was too late. If someone heard me a year and a half ago, we would be a year and a half ahead. Too little, too late. I loved the environment, I loved the business domain, but I couldn’t stand the technology. I couldn’t stand that I wasn’t in any position to improve it. I can’t sit there and watch. I slugged through a few years, I felt like I paid my dues and I just couldn’t bare to see things repeat themselves. We should have known better. We should have done better. But we constantly chose not to. I had to leave. You can give me a fancy job title and throw more money at me, but I’m not buying it. If I can’t make things better, I will go crazy.

Now I’m in a place where I haven’t done anything. Where I was, I felt as if I contributed enough to say and to be heard. Here, I’ve done nothing. I feel like an observer. I haven’t written much code in the last year, that simply wasn’t my job. Now I’m trying to get back into things. It takes more time than one would have imagined. Sadly, I haven’t been doing much coding on my own time. I’m rusty. So I find it odd that in a place where I haven’t contributed anything, in a place where they haven’t experienced me first hand, they’re ready and willing to listen to what I have to say. Not only that, they’re modifying portions of the system based on my input. Simply because the ideas make sense. Where I was before I just thought I was crazy.

It feels odd, it shouldn’t be like this. People shouldn’t just listen (even if they argue back and I have to prove the point in detail and draw diagrams and what not), I’ve done all this before and been pretty much ignored. So it feels odd. I’m almost offended. Hah. But I haven’t done anything. I don’t understand why they’re so willing to listen. I’ll eventually get over it, eventually I’ll have contributed something and found my place. But right now, I’m not in my comfort zone, but then I realize that I may never have been, ever. I have to balance this, I’m in a moment without balance.

Excited, yes. That I got in. In all honesty, I wasn’t expecting to get in. Or I thought I’d have to jump a few hoops. It can’t be this simple, right? How can it be? My final year marks weren’t spectacular and my GMAT scores were mildly decent. So how do I just get in? Yes, excited.

But I have to make schedules work with school and work. I’ve done this before, and this is not easy, school and work at the same time aren’t easy. So I’m sitting in the office of the Director of my department, trying to be as excited as I could be, explaining to her that I got in and mostly the courses I will take will be in the evening, but some courses will be in the afternoon. She says that she fully understands and supports the initiative I’m taking. “I see you as a leader, someone who has and can provide vision. Right now though, I need you in the code, so that when you say something later, you can say it with authority”. I don’t get it. She barely knows me. How does she see me as anything? Don’t get me wrong, I praise the Lord for the situation I’m in. But it’s as if something is amiss. I can’t quite put my finger on it.

But there is wisdom in what she says. I respect that. Having someone to mentor you is invaluable in this industry. It’s invaluable in life. Go find a mentor in whatever you’re doing. I’m in purgatory. I’m not quite yet settled in. It has been weeks. So you’ll excuse my excitement.

Most people just don’t get it. Not this purgatory or unsettled thing. Most people in the software industry just don’t get it. They’re in it because it was all the buzz, and it was a guaranteed pay cheque. Which is fine I suppose, you have to eat and cloth yourself. I understand. But the problem is that if you work with me, I’ll have issues. I have issues. Most people in the industry just suck. I have massive issues with this. It’s difficult to find people that don’t suck. When I was in India, I sat in about 15 or so interviews in a month, and not a single time did I say “hire”. It’s not much different here. I was particularly upset with the hiring practices where I was before, and got myself into the interviewing process. It’s hard to find good people.

So why am I saying this? Meh, I’m in purgatory. Eventually I need not to be. I can’t work for someone else for the rest of my life. Unless they’re in the 10% of people that don’t suck. I have to be working on something that is beyond me. I have to be doing something that I love, and something that people will love.

So, yeah. I’m excited. Hear me roar.

getting back in the groove

I spent most of last night investigating setup and environments for web development in Rails (ruby) and Django (python). I like Ruby as a language, I like how it flows. I still need to delve further into Python, primarily because it’s named after the Monthy Python series. That is enough for it to deserve my attention.

I also kept switching between Windows and Linux environments. I’d prefer to work in Windows because… that’s my main operating system on the laptop right now (though some will argue why I have it in such a state). I’m running VMWare that allows me to run Linux inside Windows, so it’s still good. I’ll start using meebo for browser based instant messaging. The issue with Windows is that I’d want an IDE to work with. With Linux, I’m comfortable with the command line and Vim. So it’s works out smoother.

I think I’ll just go with Windows being the main OS, a Linux virtual machine, and development in Linux. It’s likely that any production environment will be Linux, so it only makes sense.

I haven’t done any heaving programming in my free time in a long time, and I need to get back to it. I’m high on certain notions, that I’d better get into motion, before the the driving passion dies down (yes, I tried to make this sentence as cheesy as possible).

But in either case, this is good.

at work

In an ongoing email discussion about redirecting users to a third party billing site, I asked a developer to do a code check to see if the site was up before we do a redirect.

He asked me what we can do if the site goes down after we do the check… my response:


then we can’t do anything. then it’s up to God.

take care,
Adnan.


CouchDB

This news makes me happy. It means you can bake your cake, eat it, and share it too. I’m being completely bowled over by the power of free (as in speech) software. Awesomeness.

Good for you Damien. I’m also in love with the CouchDB logo:

CouchDB logo

I’ve been meaning to mess around with CouchDB, the whole document based database with Lucene based full-text search intrigues me much. Not to mention the JSON and REST interface. “relax”… I think I just might.


compassion, empathy, trust and happiness: a work-life balance

Bear with me here, these are all random unstructured thoughts.

Do you love what you do? In work or in life?

Why is it important to love the work you do? At least, why is it important for me to love the work I do? The work I do is a part of my life, it is a part of who I am. The general structure of our society dictates that we are at work at least 8 hours a day, for a lot of us it’s more than that. This means that we spend more time in a day working and getting to work then we do other things, like spending time with family and loved ones or sleeping. So is it not important that for our own well being that we love what we do? Or that we do what we love?

Does money buy happiness? If time = money, and money buys you happiness, I would argue that time (not buys but) brings you happiness. Hah, the need for money vs the need for time. I would choose time every time around. Time allows you to do (or think) a lot more than money does. Money is a lame substitute for time. And those that are attracted by the lure of money are also lame. Money does not, cannot and will not buy you peace of mind. Time is not equal to money, time is far more valuable than that.

So then, why are we not happy? At work or in life? No one can be happy all the time, so why aren’t we as happy as we should be. I think it has a lot to do with a lack of compassion, empathy and trust. Think of all the conflicts you find yourself a part of, now imagine that those involved in the conflict trusted each other more, empathized with each other and were more compassionate, what would be that state of the conflict then?

I’m sure there are more concepts apart of those three that I’m missing, but in my mind those three suffice. It’s sad because we are not conditioned to trust or empathize or be as compassionate as we should be. But then, when we are, it’s often misconstrued, people start thinking things, questioning your motives. Now think of how difficult it is for someone to empathize or be compassionate when all you are doing is questioning their motives. Meh, but don’t let that phase you.

If you’re doing something good for someone and are looking for something back in return, you might as well be dealing in money instead. I’m not saying that knowing that you helped someone is a reward in and of itself (it might be though), but I’m saying, stop looking for rewards.

Clear your mind, think of nothing. If you think about nothing, then you have nothing to worry about. In our lives these nothing moments are very short and they come in different forms. A chuckle, a laugh perhaps a gasp (there are so many more), but they don’t last long. Think about what we can do to maximize those moments, think about what we can do to maximize those moments for others!

Let moments of nothingness be your motive, let them be your reward.

scared…

I’m scared…

I haven’t really truely touched code in such a long time, that I’m scared to go back to it. I’ll open my IDE, and just stare at the code. Afraid to make any changes. It’s like a small child lost in a park, you like the park, but you’re lost. And so you’re scared, even in a place like a park.

I’m all talk now. “I used to do this, I used to do that”… “I have the potential to do such and such”…

talk is cheap, and I’m all talk…

A Passion For Software

Funny… I had started to write an entry titled “A Passion For Magic”, but decided to do this one first. After all, software did come first.

Some may misinterpret my “passion of software” as a “passion for coding”. That’s not the case. When I say software, I mean the entire software process. Everything including client management, project planning, software architechture, requirements gathering, writing technical specifications, coding/programming, usability, testing, setup and installation, and a whole bunch of other things that I’m sure I’m missing here.

Don’t get me wrong, I do love coding. That’s the part that actually creates a working program. But at the same time, I don’t see myself being a code monkey forever.

Let me refine the passion for software, as much as I like software development, I like web-based software development more. I suppose it’s because it allows you to test and deploy faster (depending on the programming language and setup you use, sigh). Web applications have a certain appeal to them. The way they’re maintained and distributed. It’s fascinating, if you have a good idea and you’re able to translate that into a web-application, you can deploy it on the interweb and have thousands of people around the world use your software. That has a certain appeal to it.