10 hard-earned lessons of a lifetime in IT

Hotshot young techies take heed: Here are 10 things I wish I knew before starting my career in IT

Credit: iStockphoto
10 things I wish I knew before starting my career in IT

Much of today’s talk is about youth ruling development and IT. Sure, there are a lot of eager, bright young people in tech, and most of them like to think that they "rule," but the truth is we oldsters still run the show.

Why? Because hard-earned lessons provide the wisdom to distinguish fantasy from reality, and the determination to do what's necessary, not just what's fun or cool.

As a green programmer, I thought that coding was everything, that people were annoying and clueless, and that all my bosses had my back and would take care of me so I could just focus on the bits and be happy.

Boy, was I wrong.

Here are 10 things I wish I knew as an IT newbie.

1. They’re called ‘fundamentals’ for a reason

Technology is in constant flux, and success in IT means keeping on top of new developments as they evolve. But it’s not only unnecessary to learn everything, it is impossible.

Concentrate on the fundamentals. These will serve you much better than detailed knowledge of the internal workings of transient hardware and software.

In the early 1980s, I knew almost everything about how the Apple IIe worked, to the point of rewriting the low-level disk drivers to make them more efficient. Then the IBM PC came out. I enjoyed it, of course, but the reusable knowledge in this experience would have been more easily obtained from a textbook on operating system principles.

2. Marketing is not evil

Well, it doesn't have to be evil.

When you communicate the value of your work to employers, clients, or co-workers, you are doing the work of marketing. And it’s not just for folks looking to open their own business. If you ever pitch a project or feature idea in a meeting, an understanding of marketing will be far more valuable than fluency in any programming language. It also helps when you realize that your résumé is actually a sales brochure and the product is you.

All of my writing skills were improved significantly, and quickly, by studying marketing and copywriting. And I’ve learned that knowing how to be persuasive upfront when it counts is far more valuable than being right in hindsight.

3. Learn the difference between opportunity and distraction

Opportunities are everywhere, but so are distractions. To an IT pro, technology can be very seductive. Especially new technology -- or obscure problems.

Learning about the business you're working with allows you to see past the tech into the heart of what is necessary for your company, enabling you to add unexpected value. Re-inventing object-oriented computing while trying to cram a 2D CAD system into a Commodore 64 may seem like an opportunity to demonstrate your brilliance, but it’s better to make sure your hard work is on something meaningful. Believe me, I now know.

Honing your understanding of technology’s place in business also helps you see opportunities outside of your job, which is how your career really grows.

4. If you don't have a contract, you don't have a job

Even the best employers or clients have occasional payment hiccups. Trust, but verify -- in writing -- and don’t start work without a deposit.

I once agreed to do a rewrite of an application from BASIC to Assembly language, in three months, and asked a friend to help me. After delivery, the client was delighted with the results, but they didn’t pay us. A contract lawyer might have cost a couple of hundred dollars. More importantly, knowing in advance that the client was unwilling to sign a contract would have prevented a $25,000 loss.

There are few lessons harder learned than those that touch your livelihood.

5. MBAs know what’s best -- for themselves, not for you

You’d like to think that anyone with a higher-education degree wearing a suit knows what’s best. They do know what’s best -- for them, not for you.

Don’t let your success depend on empty suits, empty promises, or snake-oil salesmen. It’s far too easy to wait: to be selected, to be noticed, to be promoted, to be appreciated. We’re trained from childhood to trust authority figures, respect elders, and believe that we’re all in this together. But when your 90-hour workweek architecting the product, coding the kernel, and managing a staff of 25 developers suddenly evaporates because the fraud of a CEO found out you got wise to his routine sabotaging of your team’s work, you learn real quick that business can get dirty.

6. Recognize the patterns before they bite you

Many “executive” decisions are made accidentally, or for bizarre reasons that have nothing to do with the problem, the solution, logic, technology, economics, or you. Don’t take it personally, but if you detect a consistent pattern of poor leadership, questionable choices, or shortchanging IT input, then get out of there quickly.

Especially when a company rarely has a fallback plan despite your rumblings, then it’s high time to have a Plan B of your own.

Oh, and when the owner of a startup keeps asking for more and assures you “we’ll take care of you,” this does not mean what you think it means.

7. Relational database normalization will teach you clarity and economy of thought

I am not kidding. This topic gets short shrift in most college courses, but is a foundational design philosophy for structuring information, recognizing patterns (especially missing elements), and identifying dependencies.

The point is not to know how to normalize poorly-structured database tables (which is what most college exercises dwell on); the point is to learn to quickly identify entities and relationships, and to think and design in minimal, nonredundant structures.

Functional dependency is the Tai Chi Chuan of software development. Master it. Stumbling upon and studying the work of Edgar Codd and Chris Date was the single most important turning point in my career as a software designer.

8. Get your head out of tech (to be truly inspired)

Inspiration and insight can come from anywhere. And if there’s anything I’ve learned about technology, it’s that you have to turn off the machines sometimes to truly understand them.

For example, writing science fiction helped me realize something hiding in plain sight about writing software: You imagine something that doesn’t exist, and then work backwards from first principles to figure out how it might be possible.

Here, reading is essential. And not just tech news and nerd magazines. Business, finance, fiction, non-fiction, biographies -- your mind always expands when you expand your sphere of knowledge.

Plus, reading (and writing) helps you learn how to organize your work, present ideas, express thoughts clearly and succinctly, and observe and improve yourself in the workplace.

9. Let your eyes wander

Don’t let yourself get pigeonholed or buried for more than a few months on a project; otherwise, when you resurface, the tech world will have changed.

The IT field is vast. Look outside your current job every once in a while to stave off boredom and ossification.

Early on, I became extremely bored writing the same kinds of applications over and over. Fortunately, I happened on Marvin Minsky’s work and realized there was far more to programming than what I had been doing; I haven’t been bored since.

Then, after five years working with one very interesting technology, I came up for air and found all the cool kids were talking about some newfangled thing called the Internet. Good thing I looked up.

10. IT is more about people than you think

Tools come and go, but people stick. In fact, contrary to what you might think, people are the most important aspect of IT work.

The thrill of writing code to solve a problem is addictive, but short-lived. The satisfaction from making life better for the people who use your software is much more powerful, and lasts far longer.

Do yourself a favor and get over yourself. Appreciate the work of others out loud. Share credit generously. Listen thoughtfully -- to colleagues, managers, especially clients and customers.

I like gadgets, and problem-solving, and inventing things, of course. It was the essential kernel that drew me to this field, but I was surprised to find out that I like people even more.