RSS Feed Subscribe to RSS

Everything I Need To Know About Life…

I learned in Isys 532 (not really, but this post is fishing for a grade. Dr. Liddle, this one is for you).

I’ll just throw out the warning up front that this is not a typical blog post. For my Information Architecture class, I’ve been instructed to condense a semester’s worth of learning into one blog post.

So my goal with this post is not to rehash all the research and work I’ve done throughout the semester, but to make a good parts version and wrap everything up. So here we go in no particular order. I wrote a random number generator to sort them for me. A real random-number generator, not a psuedo-random number generator.

Lesson #1: Ruby is not a toy. And Rails is not a buzzword.
Dr. Liddle, I can already see you shaking your head and smiling as you read this. To borrow a phrase, you’re thinking that all I’ve got is a hammer and everything looks like a nail.

While I admit that there may be a bit of truth in it, the fact is that I really don’t know that much about Ruby or Rails. But there are very smart people in the world that know just about everything that there is to know about it, and they’re working very hard to make it better.

It is not a solution for every problem. I’ve never seen a decent client-side GUI built on Ruby, but when you add Rails and throw it onto the web, it becomes a very powerful, very simple, and very stress-relieving application platform. It makes AJAX very simple. It teaches good practice. It has good separation of components. It has a very active friendly community around it. No it is not the solution to everything, but it is going to go places, and you should pay more attention to it instead of just smiling and shaking your head whenever I bring it up =)

Lesson #2: Your mileage may vary.
During this semester, I’ve spent countless hours on the internet, looking up different solutions to different problems, to put together programs and projects for technologies I’ve never even heard of before.

Even though I ran into the same problems and error messages that others had run into, their solutions did not always work for me. There are lots of folks that Google themselves onto my blog, and while I hope that my solutions work for them, that assumption requires a certain amount of naivety, and it’s not an assumption I’d make.

Sometimes an authoritative answer cannot be found, so we turn to the blogosphere. The so-called Web 2.0 movement has enabled millions of people to build themselves a spot on the internet and granted access to amazing information resources, but just keep in mind where this knowledge is coming from. Don’t be surprised when someone else’s solution does not work for you.

Lesson #3: More servers and computing power is not always the best answer.
Sometimes when you are presented with the same old problem, the same old answer is not the best one. I wrote a paper about Memcached this semester. It’s an innovative way to solve the ages-old problem of scalability.

Obviously when you get bigger, you’ve got to scale up, but the lesson taught by Memcached is that up is not the only direction to scale. Proper use of innovative technologies can enable you to scale out as well as up. And Memcached is free, so throwing more money on the fire isn’t always the best solution either.

I actually just ran across an article on Digg that provided instructions for surviving The Digg Effect. The article didn’t mention anything about buying new servers, but rather instructions for tuning your server, optimizing your DB, caching your results, and tweaking your PHP (read programming language of choice). That’s all free too.

Lesson #4: A Gentoo installation should not be undertaken in the middle of a busy semester.
This is pretty much self-explanatory.

Lesson #5: There is no perfect one-size-fits all solution.
There are a million ways to architect a system to support your application. Maybe Model Driven Architecture will fit your needs. Maybe it’s an extensible Service Oriented Architecture. Maybe it’s a simple Web Service that you publish for others to consume.

The point is that what works best for someone else, may not be your best option. Figure out what you really need, do your research, talk to people who know what they’re doing, and decide what works best for you.

Lesson #6: Don’t reinvent the wheel.
If you’re having some kind of pain with your infrastructure, chances are you’re not the first. Google is your friend. Or in an attempt to not be search-engine specific, the internet is your friend. There are a lot of smart and friendly people that can help you out.

Lesson #7: If you’re supporting a really really big, revenue-generating infrastructure, you’re going to want the right tools for the job.
This is somewhat related to the above point. We talked a lot about different architectures, applications, frameworks, and tools for solving your enterprise-level problems. Standards are developed for a reason. There are some industry standard tools for getting important tasks done. log4J and JMS are examples of accepted, widely used tools for enterprise logging and messaging. If a particular part of your IT infrastructure is not helping to generate a strategic advantage for your business, using tried-and-true solution is an excellent idea.

Lesson #8: Database optimization is not for the faint of heart.
Part of the reason it’s so difficult is because it’s different for every application and every person. It is hard, but it is not impossible.

Awhile ago I wrote about my thoughts for the best way to approach it. Benjamin Swanson, a good friend of mine, developed his own framework for performing the task. It’ll take time, but so do most other things that are worth doing.

Lesson #9: Putting in the extra time is worth the extra time.
I’ve found through personal experience that taking the time to do something right is worth the effort. Throughout my school career, I’ve built a reputation for being a go-to guy and getting things done because I’ve been willing to put in the time it takes to get things done. I find it rewarding when my peers ask me for help with something I’ve figured out.

But that is not why I do it. For me, putting in the time to learn something is its own reward.

*** Update ***

Lesson #10: Make your technology fit your business.
Perhaps this lesson is more powerful when stated in the longer form. Make your technology fit your business; don’t make your business fit your technology. Technology serves a purpose, but it is only a tool. When applied to the business world, it should solve a business need and more importantly, should make it easier for the business people to do their jobs. The MISM program at BYU emphasizes both the business and the technology, but in most cases, it’s the business that makes the money. The technology exists to help us do business better (well, obviously there are other uses for technology, but let’s keep things in context here).

Leave a Reply