Diverse Knowledge Portfolio
If you’re a clever and astute investor, you’re familiar with the basic guiding axiom of not putting all your eggs in one basket. You would create your investment portfolio in such a way, that your assets and shares are as diversified as possible. This will spread the risk and reduce the chance of losing all of your capital, in case one of the chosen companies decides to take a dive. This same principle can be exploited in software engineering to your professional advantage.
Lets say, you’re currently working only on Java/J2EE technologies, and your current pragmatic viewpoint is that, ‘I’m going to be more efficient in my area of expertise’. The truth is, by deciding to be a specialist in just one technology, you’re exposing yourself to the risk of getting outdated at some later date. This is where having a diverse Knowledge Portfolio comes to the rescue. Having a diverse Knowledge Portfolio means, in crude terms, to be an expert of varied technologies. The first step is to look at yourself, look at what you like, what you want to be doing and how you see yourself in five years’ time. Then, you need to look at the market and deduce where the market is heading. Your driving thought should be: “Okay, this is where I would like to be and this is how I am going to get there.” This does not invalidate the necessity of being a specialist in your chosen technology, but just being good in one area is not sufficient, as it will limit your scope of growth.
For example, you think you are good in Java and can code a function with your eyes closed. This thought, though comforting, can make you complacent and you start trusting this limited technical prowess to see you through. Pause for a moment and think about it, Java has seen a swift and abrupt rise in the tech market and has replaced C/C++ to be a part of major Web technologies today. How can you be sure that some future language/technology will not surpass Java’s glory and dethrone it from the top position? But, if you proactively invest your time and energy, to learn a new language, framework, or an emerging trend, you’d position yourself to face the vicissitudes of the tech market. You might feel, that in future Sun and Microsoft marriage is imminent, and that Java and .NET applications might be talking to each other more often (e.g. A .NET front end talking to J2EE backend). In this case, someone who knows both will be more valuable and indispensable. Look for value, that’s the key. Related to that is diversification. If you diversify, what you’re doing is you’re spreading the risk and a typical portfolio should have low risk low return, high-risk high return, and in the technology world the same thing applies.
This is also true when developers are expected to possess domain knowledge, along with their technical expertise. If a software engineer working in an Insurance domain is fluent in Insurance lingo, his work will provide more value than a developer with superficial knowledge of the Insurance industry. The future belongs to versatile developers who can smoothly juggle and mix technology with domain knowledge.
So, if you’re keen on securing your future, sketch out your Knowledge Portfolio; start with what you know, what you like and what you feel is lacking in your current skill set. Find out emerging trends, core technologies that will dominate the next wave of technological revolution. Chart out a plan for yourself, update your skill set and position yourself to catch this revolutionary tide when it arises. But remember don’t be rigid. Watch out for the trends, and keep revising your portfolio as when the upcoming trend shows deviation. This is similar to what you’d do with your Investment Portfolio. You add or remove assets as when the stock price changes drastically to prevent losses.
Bottom line: Be an active investor of your knowledge portfolio. Being a smart worker with vision and plan, beats being a hard worker without any goal. So, don’t invest all your time and energy in one knowledge pot, diversify it.
How Successful is your Blog ?
First of all, I would like to apologize for the long gap between my last post and this one. I was compelled to sacrifice my on-line time for something else. I’ll get to it in a short while. But first, I’d like to thank you all for responding so zealously to my previous post. It’s good to receive flak and/or appreciation for my views than to have a passive reader, whilst it also broadens my ken of understanding. This kind of dialogue helps me see the flaws in my argument as well. So, I would encourage all of you to share your thoughts and opinions.
The reason for my absence here, is that I was hooked to the hit television action drama 24, starring Kiefer Sutherland. I became so addicted to the serial, that I ended up watching 48 episodes(season 1 & 2) in 7 days. I couldn’t help it, each episode ends with a to-die-for suspense string, that I had to watch the next episode. Well, I’ve snapped out of the 24 reverie for the time being. And I’ve decided to watch seasons 3,4, 5 at a future date. As of now, I’ve got my social and on-line life back
.
Coming back to the topic at hand, me and many other bloggers out there, are trying to figure out the recipe for a successful blog. What does “successful” mean in this context ? It means to have a regular and growing stream of readers; readers who not only cherish reading the blog, but also contribute their views, ideas and thoughts for each and every post. Successful also means that the readers either hate or love the author’s ruminations. There is no scope for mediocrity. Everybody likes mediocre products, but not necessarily love it. A great product always evokes extreme emotions from its users, they either ‘love‘ it or ‘hate‘ it. Similarly, readers of a great blog will either swear by it or will try to abolish it. A successful blog also converts it’s readers into passionate evangelists who spread the word to others, and before you know it your blog feed is being subscribed by several thousand RSS clients.
There are many good features of a successful blog, but the one’s which stand out are:
Original Content:
Every topic discussed, every idea written in your blog should shine with originality. There are gazillion blogs out there who just plagiarize each other. In their quest to jump into the blog bandwagon, many just copy paste ideas from other sources. The key to make your blog stand out is to always have original thoughts. Dare to take a dive into unknown topics, who says you have to be an expert to discuss anything. Just think aloud, type out your thoughts and you’d end up with ideas nobody else thought of. Try it, it is not as difficult as you think. Try brainstorming your topic of discussion, write down as many random words, sentences that come to your mind during this session. Then re-wire these random words and sentences into something meaningful, try connecting the dots to get the complete picture. The end result would be a highly original version of the topic ever written.
Make it worth reading:
Whenever I write a line or a para in my post, I imagine a fictitious parrot sitting on my shoulder, asking me “Is that line really required? Do the readers give a damn about it ?”. Validate everything you write before posting it on your blog. Ask yourself again and again, whether this will make the readers care. If your answer is yes, then your blog is in safe hands.
But, if the answer is no, then do something about it.
Keep it short:
Again, this formula manifests itself in many of my previous posts. I’ve re-iterated this idea here, because I’ve read long posts which lose their momentum half way through. The writers start to deviate from their central theme and eventually the readers attention wanders off with the theme. So, in general, it is best to have short and precise posts with strong and rich content. Though, there are few exceptions like Paul Graham or Steve Yegge.
These are the few basic characteristics that I’ve observed in many successful blogs. And if you want your blog to have that kick-ass element to it, try to inculcate these basic features.
If you’re successful in doing this, tell me how
.
What they don’t teach you at Engineering College ? : Part I

image source: Chema Madoz
It’s been almost 3 years since I’ve completed engineering. I hold a graduate degree in Computer Science. To be frank, I didn’t learn half the things at college that I practice today in my professional life. As a matter of fact, I had to un-learn many skills that I picked up during my engineering course. Real life work is so much different, than the petty assignments that we laboured on, at graduate level. I have few things to share to ameliorate the college education and to prepare students for the real world.
No Bulleted Presentations :
Presentations during those care-free engineering days was something we ought do as part of our assignment. We used to create a presentation using powerpoint with lots of bullet points, loads of information on the slides, gaudy pics in the background to grab attention. The final outcome was one painful journey for the listeners, who, most of the times were bored to death by the presentation.
But, in real world, presentation is all about communicating your idea, your views to your audience. And take it from me, presentations are taken very seriously by professionals. The art of presentation involves understanding your target audience, preparing slides with great visuals(which must fit the context) with minimal text, large fonts and most importantly: no bullet points. At college, nobody taught us that when you give a presentation, what matters most is, what you say and how you say it. The slides are required to support your talk, and not to talk for you. So, don’t cram your slides with information that you’d otherwise dispense verbally.
One of the best examples of disciplined presentors is: Steve Jobs. He engages his audience till the end without ever losing tempo. He builds up to the conclusion so effectively that you end up buying his idea, no matter how wild it is. His slides are simple, elegent yet powerful in its message and content.
Correct presentation skills should be infused into students, so that they’re ready to present, when they come out of grad school.
( Requirements) Change is Constant:
Requirements specification document handed to a developer, at the beginning of a project is the biggest illusion ever. In my 3 years of software engineering practice, I’ve come to terms with one bitter truth : Requirements always change. This fact is conveniently hidden from students at college level, which I think is not fair. They study software engineering concepts with blissful ignorance of one fact that can have huge impact on how they should design their systems. They must be taught to design systems which can handle the vicissitudes of spec change. Training them with skills to deftly handles changes in the spec will enable them to deliver a product of very high quality.
Design Matters:
Look around you, the hottest selling product is also the most elegant, most gorgeous looking product. iPod, iMac, Merc, BMW, Ducati, Google apps etc. People are ready to shell out more money, if they think it’s worth it. Great design is the soul of all great products( s/w or otherwise). But, I’ve never seen a single chapter in my college course extolling the virtues of Design. This must change. Concepts of good design, and ideas about how to base one’s work centred around design excellence, should be hammerred into a students psyche. This will empower him to create killer-apps or products, which’ll change the world.
To be continued…..
How to manage a Programmer ??

How does one come up with an answer to this quandary ? To compose a definitive answer, let me elaborate the question first. I’m a full time computer programmer(part-time blogger) working for one of the best IT companies in India. I am generally happy with my job, but sometimes, I dislike the way my company treats me. I feel, they don’t see any difference between a sales-executive job profile and my profile. My question above can be translated as: How should an IT company effectively manage an IT professional, to get the most out of him ?
Why :
If you are wondering, why should we even bother ourselves with such a ludicrous question? Let me convince you otherwise. From my personal (and my fellow programmers) experience, I can see a doleful trend emerging in the behaviour of a typical IT organisation towards its knowledge workers. I am not targeting the current work culture, rather I’m trying to point out the prevalant fallacy in managing Computer Programmers. Coz a dissatisfied, frustrated programmer leads to a equally dispirited product with millions of bugs. There’s more to management of Computer Programmers than maintaining excel sheets and offering free Pizzas for staying back late.
Assumptions:
I have taken the liberty of presuming a Computer Programmer as a creative individual with a knack for solving problems. He’s a nerd, who gets excited everytime he sees his program execute successfully, and frustrated when it doesn’t. He is passionate about programming and spends(or would like to spend) most of his waking hours in front of his computer.
Here’s a guideline/tip to successfully manage a Programmer:
Entertain Geek Fashion:
A typical geek hates to wear formals. He feels suffocated, when he wears a tie. And a properly tucked-in shirt with striped/plain pants…Yuck. Geeks are more comfortable with informal-laid-back clothes like jeans, round neck T-shirts, unkempt-hair. This doesn’t mean, they’re trying to act rebellious or smart or something. The reason for their affinity of such attire is simple.They consider their profession as an art and want to be as comfortable as possible while crafting their code. If you give them the freedom to wear anything they like, to work, they’d really appreciate this gesture and might reciprocate by working harder for the project.
Give them Space:
This might not be as intuitive as the above tip, but it literally means “Don’t micro-manage them”. Don’t pester them by soliciting minute to minute update on the project. Don’t squander their time, by holding status meeting everyday (One status meeting in a week should suffice). Geeks absolutely detest micro-management. They just want you to give them the requirement spec, and they’ll get back to you with tentative deadline. Negotiate the deadline, if you can. But don’t bother them any further, trust them to complete it within the agreed deadline.
Blend Work with Play:
Google does this best. If you’ve seen pictures of Google offices around the world, you’d know what I mean. Google employees have a ball at work. They get free food, free massage, free hair-cut, they can play pool, tabble soccer etc , bring their pets along at work. So, Google gives its employees enough reasons to stay within it’s colorful office walls(Here’s GooglePlex in action). I’m not coercing you to go that far, but you can try to imbibe some elements of “Make Work Fun” philosophy in your current work culture.
Do not restrict their internet access too much. Blocking porn is reasonable, but blocking anything else is blasphemy. A quintessential geek likes to play games on-line, visit forums, solve Sudoku(or some puzzle), read tech-news. If you think, by restricting the internet access, you’d avoid wasting the programmers productivity, then you’re gravely mistaken. Give them freedom of choice, trust their discretion and they’ll turn in quality work. They look up to internet for inspiration, for information, for friends. To deny these things to them could be harmful in the long run. The biggest advantage of unrestricted internet access is, via surfing the programmer knows what’s hep n cool on the internet. What do the users like, what do they dislike, what works and what doesn’t. They’d understand their users more and keep track of the evolving trends on the Web, which in turn will help you and your organization to make/change strategic decisions on your up-coming product.
Flexi-working hours :
Probably, this tip would be the most controversial of all. Let the programmers decide their working hours. Today, almost all IT companies follow the 9-5 pattern, but this does not suit everybody. It’s like forcing everyone to wear the same size uniform, irrespective of their body size and width; The uniform will fit some people perfectly, it’ll be too loose for some or too tight for others. I’ve used this analogy to explain the dilemma of todays IT professionals. They are expected to show up at eight(ish) and leave at six( preferably late). The problem is, this paradigm doesn’t suit everybody. Some people feel that they’re more productive in the morning and would prefer to start early and leave early, whilst others might feel that they’re more productive at noon and would like to start late and leave late. Relax the rules on work time and it will eventually lead to rise in productivity.
To conclude, treat Geeks/Nerds/Programmers differently. They are artists( at least that’s what they’d like to think), and therefore they abhor restrictions. They’re inclined to be unhappy if asked to follow a bunch of company policy rules. Give them enough liberty, entertain their eccentricities, encourage their wild ideas and you’ll end up with a kick-ass product, created by a bunch of inspired, motivated programmers.
Chip in your comments and let me know if you agree/ disagree with my views on how to manage a computer programmer. Adios !!!
Don’t wait for the muse

One of my friends was curious to know how could I write posts so frequently on my blog. My reply to him was that I just sit down and start typing and ideas start flowing. He shared with me that he’s interested in writing poetry, but doesn’t feel inspired enough. I know many people like him, who have potential to be writers, poets, painters but they just wait for some motivating phenomenon to bestir them. In other words, they wait for the muse.
But most artists, writers, poets( I know), on the contrary dive into their work instead of waiting for the muse. They believe that when you start working on your topic of interest, muse just glides into your mood. Then, it’s just a matter of completing the task with more enthusiasm and vigour. If you wait for the muse, more often you’d be squandering the precious time, you could’ve otherwise spent wisely. For e.g. another friend of mine loves drawing. I admire her work, she is really good with colors and brush. I enquired about her source of talent. Her response was ” I am not talented, you know. I like drawing, and I don’t think much when I decide to draw or paint something. I just clip my drawing paper on the board, pick up my pencil and start sketching; Shapes, form, structure and inspiration follow suit.” And, I could totally relate to her. I am not good at writing either, I just blurt out my random thoughts on the keypad and they become words; Words become sentences and sentences become a story before I realize it.
So, if you are ( or want to be) good at something, don’t wait for that special “muse” to inspire you, it won’t come to you. You have to go to it. How do you do it ? Just begin your work and the muse will follow.
The book that ‘Reads’ you

I’am a voracious reader. I love reading. Books are my favourite pastime. Okay, enough emphasis…Well, I am no philosopher, and I don’t have any rigid or philosophical views about life. I live each day as it comes. I believe in living in the present moment. That’s why I don’t dig philosophical books. And I absolutely hate self-help books :How to get rich ? How to think positive ?
The most hilarious one is: How to read a book ? ( yeah, even I couldn’t believe, someone would write such a book…crazy ). The point is , my taste in books is not philosophical. But then, I came across Zen and the art of motorcycle maintenance by Robert Persig. I still have no idea why I started reading this book. I thought the book would be about Zen( which I secretly admire ) and about Motorcycle maintenance( sports-bike were part of my wish-list then ). For the first 20 pages, I really struggled with the book, it was soooo boring, with the story following no particular direction. But then, I got hooked. Why ? The author started rambling about human rationale. He was trying to explain the one thing I thought was impossible for anybody to explain. And I became interested. I read diligently each and every idea putforth by Robert. But then, the book reached a point wherein it began a journey into the nature of understanding. And things started making no sense to me and I had to stop reading the book. This happened when I was in 2nd year of engineering.
After 4yrs I came across this book in Salisbury city council library, near my place of work. I said to myself why not give it another shot, and I borrowed the book with the firm intention of reading it through and through. This time the book made more sense. Probably, the four years somehow expanded by ken of understanding and my bubble of experience swallowed the wild but vaguely scientific theories in the book. And I could easily relate to what Robert was trying to say.
He talked about things like Quality, Systematic Analysis, being in flow etc. In latter part of the book, he talks mostly about Quality and his impossible attempt to define Quality in order to understand it. He says “How can we understand something, if we can’t define it ?”. He goes on to establish a counter-intuitive theory that Quality is the father of object and subject. Again I felt struggling with the ideas. The book won again; I said to myself that I am not ready for the book.
Books are an entity which you are supposed to read, to enjoy the word game created by the author. But there are some books which read you, trust me, this is what I felt when I read ZATAOMM. I could feel the author trying to get into my psyche, prove a point by making me vicariously experience it.
That explains the title of this blog. I have shelved the book again without completing it. But I will complete it, hopefully
.
2 comments