Creative Programming

November 26th, 2011 by

“Software development is a kissing cousin of engineering (if not an engineering discipline itself), and blends creativity with math and science. That’s why I find that a lot of advice to creative types is also applicable to software developers.” – Joey deVilla

Creativity is something which we generally do not relate to programming/software development. Typically we consider software development to be highly algorithmic in nature, where you can define what you want and how you can implement it. But essentially, its not the only thing which defines a software. I think software development is one such field where invention happens every now and then. I am not talking about new technologies being released; I am talking about the programs that we write everyday. Everyday we write something unique, for our product or project. But why are we so reluctant to recognize these creations? Partly because, these things are often taken for granted by most of the customers. Some ( or many) cases it is even worse, as the managers also do the same. This phenomenon is so dominant that many non-developers think anything is possible in software and it can be developed in “no time”. Especially this is applicable to IT services, where big fat non-IT customers pay big chunk of money to expect a miracle to happen, as if overnight they will become a market leader or reduce their production cost or whatever reason they are developing the system for. Although not all customers are like this, but most of them are. In this mess; most of the time; the creativity remains unnoticed. Even the developers themselves don’t realize that they actually created something to be proud of.

Creativity is highly relative. Don’t get deceived by thinking that, it is just about implementing any software. All developers do that. The difference lies in creating original idea and problem solving.

Original idea: Sometimes, a simple idea makes a big difference. This is not only applicable to features of a software, but also the way softwares are implemented. Many times this has something to do with mixing different technologies/approaches. Its the uniqueness of how you have solved a problem.

Problem solving: Many times it turns out that the conventional tools are not sufficient. Many developers just beat around the bush, hoping to get some solution. But creative ones, can differentiate between what’s possible and what’s not. When it is not possible, they create something on their own. I always believe that developers who go by their intuition get things right in this department, than sheer intellectuals. Definitely, being intellectual helps, but there are cases when you also need intuition of how things should work. This helps to create radically new solutions to many problems, which otherwise wasn’t possible. For some reasons, we Indians give extremely high importance to intellect, talent and analytical power. But that isn’t enough when it comes to creativity and innovation [this is a big topic of discussion]. Walter Isaacson wrote in NYTimes:
“China and India are likely to produce many rigorous analytical thinkers and knowledgeable technologists. But smart and educated people don’t always spawn innovation. America’s advantage, if it continues to have one, will be that it can produce people who are also more creative and imaginative, those who know how to stand at the intersection of the humanities and the sciences. That is the formula for true innovation, as Steve Jobs’s career showed.”

The expectations (and possibilities) from a software system has changed dramatically in last 10 years. Initially it was thrilling to create a “xxx management system”. As the technologies made advancement in terms of libraries and frameworks, it is neither thrilling to customers nor it is challenging enough. So how can we make a difference then? This should be addressed inside the software. Its the way we are implementing, the technologies/tools we are using and creating to solve the problem in hand. Customers will barely notice this, but when things “just works”, it makes that difference. The software doesn’t necessarily need a mind blowing feature. Whatever it has, it should just work the way it is expected and be as simple to the user as possible. This seems very easy but it is arguably the hardest thing in software development. We constantly need to look for new ways of solving problem, come up with innovative techniques to solve a problem. Only then we can stay ahead.

While creativity cannot be measured, there are some factors which drives a developer to be more creative:

1. Be passionate about what you are developing
2. Try to make the software beautiful from inside. Pretty, smart and less code always matters.
3. Do not re-invent the wheel, but don’t hesitate to invent whenever necessary.
4. Try to see the bigger picture.
5. Don’t just code the module you are responsible for, and shut your eyes when you see others code.
6. Break and disassemble others’ code.
7. Accept honest criticism of your code.
8. Don’t be an evangelist, be a pragmatic technologist, even though “evangelist” sounds cool.
9. Do not forget to get your hands dirty with technology and code, no matter how many years of experience you have in your pocket.
10. “Stay hungry, Stay foolish”. (Shamelessly copied from Steve Jobs’ speech)

There are awful lot of people (at least in IT services) who are neither creative, nor they fall in the category of developers, even though they are paid to be so. Leaving this lot aside, others are unaware of their own creation. There has been a lot of discussion around quality of the software made by Indian IT service providers. While its a broad area to touch upon, the most basic thing which we can do to improve the scenario, is creative programming. No matter what kind of project it is, there will always be a scope for innovation. While most of the IT crowd need to learn this the hard way, the rest of them need to realize that they are in middle of creativity and technology. Blending both in some way, is their duty, as programming without creativity is lifeless.

The Internet, Project Management Software, and Our Brains

November 23rd, 2011 by

I have often talked about the implications of web-based communication and how the internet has affect how we manage projects today. I have traced parts of history, showing how certain technological advancements have affected us for good and for bad. Though every technology seems to have an audience split between thinking negatively or positively about innovation and invention, I maintain the same opinion of prominent philosopher Zygmunt Bauman who said (and he may have been quoting someone else), “What has a use has an abuse.”

 

There are a lot of technophobes out there who refuse to use the internet for a variety of reasons. To me, most strange among those internet-fearing people are those that are project managers. Perhaps when they think of the internet, they think of the problems (the “abuses”) associated with Facebook, Twitter, YouTube, and Wikipedia, then associate those with the workplace. “I can’t use Facebook and Twitter to manage projects” one might say. I agree; however, such project managers are not seeing the “medium” in which the content is delivered. Of course you can’t use Facebook and Wikipedia for projects, but a “Facebook” style delivery method of communication and a “Wikipedia” style of collaboration couldn’t be more ideal. What a better way to manage projects then through web-based tools where communication is instantaneous and documented, reporting processes are automated, and business critical data can be managed and shared from any location in the world with an internet connection.

 

That said, I would like to look at the views of those who believe the internet influences our minds and our society in a bad way. Though I do not exactly agree with all of their ideas, the proponents of this theory do present some sound arguments. One claim that I think is most prevalent is that of modern philosopher Nicholas Carr, author of The Shallows: What the Internet is Doing to Our Brains. Supported with in-depth research and case studies, Carr discusses the ways in which the internet actually reshapes our neurological paths, making the human mind process information in a different way. The linear left-to-right method of reading a book, he explains, is being replaced by skimming, up-and-down page jumping, and hyperlink clicking. Although the access to knowledge is quick and convenient, Carr argues that an in-depth search through content for wisdom is subtly fading from human culture.

 

What this means to humanity overall is something I don’t wish to discuss in this article, but it can be related to project management. For myself, I feel that it is true that the internet has changed the way I read books, and I think it translates into how project management software can be used. With books, I’m less able to focus, more prone to skip, and easily forgetful of what I actually read. I used to be much more involved in the pages. Well, in project management software, I think people can similarly get distracted by an interface with too many functions. Or, certain reporting tools can skew what a project is actually about. I think the biggest problem is how a project manager is able to skim over projects and people as if they didn’t matter. It is as if they are looking for only what they want to see.

 

This is definitely due to the effects of the internet. However, as I said before, “What has a use has an abuse.” I think it is an “abuse” to take for granted what project management software doesn’t have to offer. There are times when you have to step back from the tool and work with other mediums. There are times when you have to actually talk to people – authentic face-to-face communication can only be done in real life. Project management isn’t about finding a tool, making a plan and executing. Project management is about knowing when to use (or not use) the tool and when to follow (or not follow) the plan. Project management is about leadership and empowerment.

Choosing a Fibre Channel Switch: 5 Things to Know

November 22nd, 2011 by

Fibre channel switches are vital for the operation of SAN storage, so choosing the proper switch can be crucial for the storage environment. Therefore, choosing a switch should depend on not only your price, but also your environment, your current brand of products, the performance you demand, and the level of data growth you are experiencing.

The switch is vital because they are the decision point for the environment. Here are some things to consider before purchasing a pair of switches:

1. Purchase Used: Used switches can save you 20-80% off the cost of new SAN switches, and can help you spread your budget dollar further. Don’t fear the ‘used’ label: used storage hardware is not altered or refurbished in any way. Used switches are simply uninstalled from another location when a higher level of performance is needed. Therefore, purchasing your ideal switch with a greater number of ports is possible when you purchased them on the used market.

2. Evaluate Performance: How fast do you need your switches to be? Switches range in performance from 2Gbps up to 8Gbps, and now reach 16Gbps. However, some applications don’t need the high levels of performance that the fastest switches provide. Therefore, it’s important to evaluate the needs of your specific storage environment before purchasing the fastest switches on the market.

3. Check for Scalability: SAN switches provide a limited number of ports per switch, and usually contain between 8 and 80 ports. When purchasing ports, it’s crucial to consider the future growth of your enterprise. While licensing agreements can be purchased per switch to increase the number of available ports, use caution that you don’t paint yourself into a corner and limit your potential for storage environment growth. Provide for the growth your enterprise will need by purchasing an ample amount of SAN switches.

4. Stick with Your Current Brand: When purchasing additional switches, you should continue to purchase the same brand of switches that you currently use. The manufacturers are more likely to guarantee that the switches will be compatible with their own equipment when you keep the same brand of switches throughout your environment. Additionally, since you’ve already invested time and money to learning how your current switch functions, there’s no sense in learning new equipment.

5. Don’t Forget About Directors: Consider the differences between switches and directors before choosing to purchase one. Directors provide more room for enterprise growth, scaling up to hundreds of Fibre Channel ports. Directors can also provide your enterprise with higher availability, higher bandwidth, and less downtime.

Whether you are trying to improve your environment or manage widespread enterprise data, finding the right SAN switch can save you time and money while enabling growth in your storage environment.

Kari Fuller is a Marketing Coordinator at Reliant Technology.

Need advice on how to improve your SAN switch fabric? Talk to a Reliant Storage Specialist today to get expert advice about what switch is right for your environment, as well as discover new and used SAN switches. Our qualified experts are trained to ensure that you find a storage solution that meet your business needs without overextending your IT budget.