The tech world has always been long on power and short on thinking about the ramifications of this power. If it can be built, there will always be someone who will build it without contemplating a safer, saner way of doing so, let alone whether the technology should even be built in the first place. The software gets written. Who cares where and how it's used? That's a task for somebody in some corner office.

More troubling: While ethics courses have become a staple of physical-world engineering degrees, they remain a begrudging anomaly in computer science pedagogy. Yet as software takes over more of our life, the ethical ramifications of decisions made by programmers only become greater. Now that our code is in refrigerators, thermostats, smoke alarms, and more, the wrong moves, a lack of foresight, or downright dubious decision-making can haunt humanity everywhere it goes.

What follows are a few of the ethical quandaries confronting developers every day -- whether they know it or not. There are no easy answers, in some measure because the very nature of the work is so abstract. To make matters worse, business has become so inextricably linked with computer technology that it is difficult to balance the needs and motivations of all invested parties in trying to prevent today's business-case feature from becoming tomorrow's Orwellian nightmare.

The trick is to think past the current zeitgeist and anticipate every future utilization of what you build. Pretty simple, huh? Consider this less of a guidebook for making your decisions and more of a starting point for the kind of ethical contemplation we should be doing as a daily part of our jobs.

Ethical dilemma No. 1: Log files -- what to save and how to handle them

Programmers are like pack rats. They keep records of everything, often because it's the only way to debug a system. But log files also track everything users do, and in the wrong hands, they can expose facts users want kept secret.

Many businesses are built on actively protecting log files. Some remote-backup services even promise to keep additional copies in disparate geographic locations. Not every business aspires to such diligence. Snapchat, for example, built its brand on doing a very bad job of backing up data, but its users are attracted by the freedom of the forgetful system.

The mere existence of log files begs several ethical questions. Are they adequately protected? Who has access? When we say we destroy the files, are they truly destroyed?

The crux is ascertaining what information is worth keeping, given the risks of doing so, ethical or otherwise. Here, the future complicates the equation. In the 1960s, smoking was widely embraced. No one would have thought twice about keeping track of people's smoking habits. Today, however, the knowledge of someone's smoking activity can be used to raise health insurance rates or even deny coverage.

Future business deals; future government regulations; an unforeseen, desperate need for new revenue streams -- it may be impossible to predict what seemingly innocent log file will become problematic in the future, but it is essential to consider the ethics of how you handle the logs along the way.

Ethical dilemma No. 2: Whether -- and how -- to transform users into products

It's a well-worn adage of the startup era: If you're not paying for a service, you're not a customer; you're the product.

On the Internet, "free" services abound. In fact, the question of where the money will come from is often put off, being off putting. We just build the amazingness, keep an eye on the adoption metrics, and figure someone else will take care of the dirty work of keeping the server lights on. Worst case, there are always ads.

Developers need to be upfront about who will support their work and where the money will come from. Any changes should be communicated to users in a clear, timely fashion to avoid shock and blowback. Transforming people into products is an ethical shift not to be taken lightly. Shady ad deals, shady ad networks -- we need to be careful how we handle the implicit trust of early adopters.

Ethical dilemma No. 3: How free does content really want to be?

A number of businesses depend on serving up content without paying those who create it. Some turn around and sell ads or even charge for access. These businesses often couldn't survive and couldn't price their material as attractively if they had to shoulder their fair share of the development costs. They develop elaborate rationalizations about "sharing" or "fair use" to cover up an ethically shaky decision.

Developers must ask themselves how their code will support everyone in the food chain, from creators to consumers. Do the people creating the content want their work to be distributed this way? Are they happy to work for exposure or attention alone? Are they given a fair share of the revenue?

Not considering these questions amounts to turning a blind eye to piracy. After all, not all information just "wants to be free."