Traveling Contracting - language-agnostic

I am fresh out of College (graduated in December with BS in Comp Sci). I have been working for a very large (40,000+ employee) company for over two years. My job is as stable as anyone could hope for. However, I am always bored, they cannot keep us (developers) busy. I am thinking about apply at some local contracting companies and try out contracting. I have been told that I could make a lot more money as a contractor and even more if I was willing to travel. I have been told that as a contractor I would basically be constantly coding, no BS meetings about project charters and stage gates, and that I would learn more in a year than I would in 10 years at my current job (this I believe since we're using java 1.4 and our brand new laptops have windows 2000 on them... lol). I just want to know what to expect if I decided to go the contracting route, and if traveling is worth it. Since I don't have any kids and this seems like the best time to do something like this.
What have been your experiences with contracting? How do the mechanics of travel as a contractor work (what is paid for, do you work 4 10 hour days... etc)? Will I really be mostly coding? Will I really gain valuable insight and knowledge of the IT world?

I can't speak for your situation in particular, but my company recently terminated all of our contractors as part of our cutbacks, and many other companies did the same. Most companies have hiring freezes, where they will not take on new employees at all, contractors or not. My friends that were working as contractors all lost their jobs, and are generally having a difficult time finding new positions.
If you are already in a steady job, I would say that now is not the best time to drop it and try switching to the life of a contractor.
You expressed an interest in learning new technologies, so if your company doesn't keep you busy, and you're "always bored", why aren't you using that time to read up on the things you're interested in?

I've been migrant IT labor for 30+ years.
"I have been told that as a contractor I would basically be constantly coding"
False. You might wind up doing a lot of new development or a lot of maintenance. Depends on the contract firm's relationships.
"no BS meetings about project charters and stage gates"
False. The contract firm has to land the gig. As a contractor, you write a LOT of proposals that get shot down in flames. In-house initiatives are quietly morphed into something else. Out-of-house initiatives turn ugly -- the contracts are fired -- there are lawsuits.
"and that I would learn more in a year than I would in 10 years at my current job"
True. If you pay close attention and take careful notes. More importantly, if you've done your homework outside the workplace. I've been to a fair amount of training, but I think that 75% of the skills I use regularly (Java, Python, DB Design, Architecture, Apache config, HTML) I had to learn on my own.
"what to expect if I decided to go the contracting route"
Parts of it are bad. Parts are good. It's a job -- that's why they have to pay you to do it.
"if traveling is worth it."
Let me list the benefits -- Skiing in Anchorage, Skiing in Utah, Diving in the Florida Keys, flying the entire family first-class to San Diego, using Hilton Honors points to stay at the Waldorf=Astoria.
Let me list the problems -- kids who got into serious trouble at school. Missing family time because of travel. The unending stress of air travel, including the TSA security theater setups everywhere.

Nearly everywhere I've been, we've hired contractors to work on the old, legacy stuff that our employees have forgotten or otherwise don't want to work on. Nobody is going to hire you in order to teach you things - you won;t be around long enough, so they will only hire you for your current skills. Quite a few contractors complain about having to keep their skills up to date, at their own expense.
You'll also get less time spent in meetings (well... maybe not, you'll be there to be told what they expect of you), but you'll also have to manage your own accounts, and invoice the client, and then chase up payment.
So, don;t think contracting is a magic route to fun coding with the latest technologies. Its probably the opposite of that. What you want is a different job.

The grass is always greener on the other side of the fence.
You're stuck in a large company with all the large company management bureaucracy and strict job roles that goes with it. If you contract for a large company guess what you get? However you can choose who you contract for (if they're happy contracting to someone with two years experience). To me it sounds like you actually want to work for a small company developing software in a more agile fashion, and that's a more risky move!
Note that with contracting you'll go from project to project, and having to pick up the client's systems (code, models, databases, workflows, etc) from new each time, often with very little assistance. If the systems are in any way mature, then there will be lots of cruft to sift out - if you're lucky it will be documented! So every time you have a problem, you will have to get on the phone to them or find them (a difficult task on its own) to get the knowledge you need.

I've been contracting/consulting for just over a year and am really enjoying it. A few of the perks:
money is good.
changing projects fairly often keeps the boredom levels down.
working from home rules.
because you are an expensive resource relative to other employees, the amount of administrative fluff and pointless meetings is minimal. The client wants you to spend as much time as possible working on whatever it is you've been contracted to do.
I'm picking up new knowledge much faster than when I was a normal employee. I suppose its related to changing projects often and working with a range of people.
I strongly disagree with the sentiment that contractors get boxed in and have to teach themselves new skills in their own time. Perhaps this is true for some domains but my experience has been the absolute opposite. One thing I have noticed is that if you do a good job with a project, you'll be asked to look at other projects even if you have no experience with the technology in question. Being trusted as competent and honest is far more important to most employers than a '5 years experience with J2EE' line on your resume.
That said, its not all rainbows and butterflies. Some of the downsides:
getting a mortgage is going to be really hard because of the lack of permanent employment.
whenever there is a downturn, you'll be the first against the wall.
if you are working on a fixed cost basis, you'll have to get really good at project estimation or risk lots of unpaid overtime.
taking on multiple clients at the same time can be a horrible mess unless you have excellent time management skills.
Overall, I'm really enjoying it and for me the pros far outweigh the cons. I think I'd only go back to being a normal employee if I had a family and couldnt warrant the risk of being out of work for an extended period of time.

As a contractor you do tend to be less involved in meetings, in my experience. But you spend a lot of time teasing requirements out of clients and waiting for responses on things. As you're not in the day-to-day flow of the organization, you have to work a lot harder to understand what's going on.

Related

Why there isn’t any open source alternative to big commercial games out there? [closed]

Closed. This question is off-topic. It is not currently accepting answers.
Want to improve this question? Update the question so it's on-topic for Stack Overflow.
Closed 12 years ago.
Improve this question
I’m thinking of all type of game categories. My experience is that there aren’t any open source games that really challenge the commercial ones, considered game value, graphics, sounds etc.
Apart from the obvious answer of law-suits (remember the Aliens mod that received cease-and-desist letters), the other answer is cost. It takes hundreds of people to create a game like Civ 5 (artists, managers, programmers) and the cost is immense. These people are working on it for 5 days a week, 7.4 hours per day (more towards milestones) and open source alternatives are done in spare time around real jobs (not that game coding isn't a real job).
For a good open source game take a look at FreeCiv.
Several reasons come to mind:
It takes dozens if not hundreds of contributors over several years to create a major game title. An open source project of this magnitude would need lots of followers who are prepared to stick with it for a very long time. It would also require some people who are willing to coordinate the other developers (producers).
The replay value of a game is limited. Most people just play it through once and then move on to the next title. This differs it from an open source application or library which is always useful as long as you depend on it. This probably makes it much more difficult to find long-term commited developers.
I can't think of any business model related to open source games. Nobody would pay for support or much needed changes in the source code. Nor is there any agenda that bigger companies might be able to fulfill by funding an open source game project.
Contrary to popular belief, making games is not per se more fun than making applications (At least not for me, I've tried both).
It takes about eighty people working more than full time for two years to make a major game. (Some take more -- Assassin's Creed 2 was about 130, I think -- some take less.) These people must be real experts at what they do, and you need a lot of diverse skills: programmers, artists, writers, actors, sound designers, level designers, producers, QA.
Let's say you want to make a world-class game that competes with the chart-toppers on graphics, art, sound, design, the whole deal. You need world-class people doing this work: for example, animators who would otherwise be working full-time at Pixar or Weta. To get someone to work for you full-time instead of going to Pixar, you're going to need to pay them, a lot.
A game isn't the sort of thing where you can take what would be 40 hours of work for one person and spread it across one hour of work for forty people. It takes a lot of arduous, unfun work. It's not just programming the graphics engine -- it's testing the same broken thing over and over and over again, fixing a bug that appears only on a Windows Vista machine running a particular ATI card, painting bumpmaps onto fifty slightly different kinds of crate. Volunteer hobbyists tend to "scratch their own itch", do the thing that's interesting to them and leave it to someone else to polish.
It takes a lot of capital to make a game. You need a high-end workstation for each dev, sometimes two. Big screens. Fancy tablets for the artists. Maya licenses (there's no open source tool even remotely comparable). Are you making a console game? The development kits are $10k apiece. Doing motion capture? $500 an hour to rent the studio. Hiring voice actors? SAG scale starts at $800 per day. Having Some Guy From The Forums perform the roles just won't get a professional result. Plus electricity for all this, a building to put it in.
It's expensive, and it takes a lot of very specialized expertise, working for a long time even when they're tired and stressed and don't really agree with the Creative Vision, but need to finish the job anyway. You're going to have a hard time convincing really talented people to do that for free.
In addition to the other answers, a vital factor might be the requirement of expertise. Open source contains people mostly from developer/programmer/sysadmin realm. But only developer is not sufficient to build a game. You also need artist, sound engineer etc. For example, as a developer you can spend your free time to code game, but you can not create 3D models, as that is not your part of expertise.
Some possible reasons
The market is to fast. Graphics which is now good is in 2 years old and boring. So you have to finish a game very fast.
Its easier to make a mod to a game and there is already a community, so people do that more often (and its way easier to do).
The costs are huge. Its hard to find qualified people. Good game engines license costs a lot.
The organization is very hard.
There are a lot of project which are from people who don't know how to do it. So its hard to find a good project which could have success.
There are some, but they are rare: OpenTTD and early ID games come to mind.
But, seeing as the biggest investment is in the content and tools there's no reason the code couldn't be open source without affecting revenue. In fact, as OpenTTD has shown, it can extend the life of product with patches and improvements created by the community. Of course, you need a good game to start with.
While I generally agree with the sentiment, which is basically until you see open source movies, you are unlikely to see open source games with that production quality comparable to some of the major ones.
However, that said, there are some beautiful open source games. OpenTTD and Simutrans are mentioned - which are quite retro. For some more modern gameplay, check out stuff like Tremulous and Nexiuz.
Now that EA are cannibalizing and dumbing down the Simcity franchise, I'd love an open source offering to mop up and dominate the genre. SC4 was brilliant and unique, but needs some modernization in graphics, stability fixes, and easier community interaction for updating/extending the building types or city ordinances. LinCity does not yet have anything on SC4, and sadly SC5 plays more like the bad bits of LinCity than SC4.

Transitioning from "Web" into "Application" Development

I realize this comes at an enormous risk of being branded "subjective" and "discussion-based", but you don't have to argue with anyone, or me. I'd just like honest answers to the question. So first, the question:
In your experience, is it feasible to say I could find a job as a java or other "non-web" language/system developer without a CS degree?
A little background : I am a LAMP(PP) Developer, and have been working with the web world for the past two years or so, and am about 90% self-taught. [edit] I have been working part-time/freelance in html/css/javascript for about 7 years, and full-time salary doing php/perl for the past 2 years, for clarification. [/edit] A friend of mine who does a lot of Java has convinced me to start learning it, and I'm starting to be curious about my potential employability in a "non-web" environment. So far I've worked for marketing firms and doing application development for a web-based system, so having a Bachelor's degree in a non-related field (music) hasn't held me back yet.
Acceptable format for non-subjective answers :
"Our company does not require a specific degree, if you have a few years of employment history and can prove you know programming you can get a job"
-or-
"With the economy being the way it is, the only way to ensure you'll get past the first level of screening is to have an extensive relevant education"
Yes you can (otherwise I would not have a job). If you can show that you know the stuff, many companies will not bother too much about formal degrees. After all, they (should) hire people because they have certain skills, not because they acquired those skills in a specific manner. Studying at a university is one way, working with programming in practice is another.
Now, I think (guessing here, given my background) that you would learn things in the university that you will not typically pickup from being an autodidact, and that might still be useful when working as a programmer, but I would believe that the more time you have spent working on actual software that has been delivered to (hopefully happy) customers, the less the lack of formal degrees will matter.
In my experience, it pretty much depends on where you want to work, and in some cases, how far up the management ladder you want to go.
Some places I've worked don't really care if you have a degree or not. In fact, in one place I worked it was almost a detriment to have a degree, since much of management didn't have degrees.
Other places I've worked have required a "related" degree. In at least one case I was personally involved with, that was to their detriment, because a friend of mine was much better and more knowledgeable than any of the developers there, and looking for a new job, but they wouldn't even talk to her since she didn't have a degree.
Finally, for some employers, it's just whether you have a degree or not, and your major is not important. I know one guy doing Java development, and his degree is in history. Also, I work in a science facility, and lots of people here have degrees in a relevant science, and have little or no formal software development education.
It's a mindshift for sure, but I don't see any reason why you can't make the transition. A good programmer is a good programmer regardless of the language they're using. I've known guys that write excellent java code and easily make the transition to javascript or ruby. Where you might come unstuck is the fundamentals of computer science which is what you really get from the formal education. Things like pointers, memory management, threading etc are things that I tend to find "self taught" developers are usually not so strong in, but there's no reason you can't learn these things and if you're able to prove to prospective employers that you have a good grasp of the concepts and can prove you know how to use them then I don't think you'll have too much trouble.
In your case you should use your music degree as an advantage and look to land your first application programming job in a company doing music-related application development. Your music degree coupled with programming experience of any kind will certainly open some doors.
You may need to take an initial cut in pay to make the transition, though.
Speaking for my own experience and my country Switzerland: I started with an internal education in a big company and do not have a degree in CS up to now, some 23 years later. I had difficulties finding a job in the 2 years following the burst of the internet bubble, which I was able to breach being self-employed and with some unemployment money from the government.
Most big companies here do not care about degrees, unless you want to pursue a carrier. But then you need an MBA, not CS.
There is one exception, though, which are the consulting companies. They sell their services proportionally to the numbers of Doctors they have in the team, so no chance - unless you have connections.
Small companies here know that they have to invest for somebody to know the tools and languages they use - so if they are in need, they will hire you even with little experience in the exact field.
It might not harm to get some stuff done with the tools you would prefer to work with, but
good employers know that learning yet another language is not the hard part
work experience outweighs private experience
Go for it. Don't quit your dayjob and start looking around. After a few years experience will for sure outweigh education on the job market.
If you have the chance to visit some classes on the side, you can only benefit though. Personally.
My experience has always led me to evaluate past evidence. This means what is there to show what you have achieved. If you are entering a new technology, it will be a while before you will achieve this which means you may have to re-start at the bottom. Do you want to do that? If you are prepared to offer all your skills to a new job (including learning new languages), that would be better. In this way you become incrementally more valuable, irrespective of whether you have a degree or not.
I'm mostly self-taught, and in my career, I have transitioned from VB to C++/MFC to "classic" ASP to Java, and that doesn't even scratch the surface of all the ancillary technologies I had to learn to get my job done. I think all developers should expect to pick up new skills. It just comes with the job.
I think you're making an odd distinction between "Web" and "Application" development. Practically all of my Java work has involved building web sites, and the same is probably true for C#/.NET developers as well. As a LAMP guy, you already have a few key employable skills -- you know Linux, you understand (or should understand) the TCP/IP stack, how HTTP works, etc. And you know how to put together an attractive-looking interface, which is a rarer skill than you might think. You can leverage all these skills as you make the transition to Java/.NET/Whatever.
As for the music degree, don't sweat it. Some of the best programmers I've ever worked with have been musicians. I don't have a CS degree, and it hasn't slowed me down much. A certification might help get you in the door at some companies, but before that try a pet project or two in Java and see where it takes you.

Transition from business to game programming [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 9 years ago.
Improve this question
Does anyone have any idea how it would be possible to transition from business to game programming? How would anyone get a start in game programming? It seems much more exciting and rewarding (better paying too?). But it seems like most of the jobs out of school are for business programming. Any advice or insight on how to do it or if it can be done?
This is not a direct answer to your question, "How can I transition?" But instead I'd like to recommend you not go down that road or at least be realistic about what it is like. To back that up I'll quote some stats from the 2004 igda survey on quality of life for game developers:
34.3% of developers expect to leave the industry within 5 years, and
51.2% within 10 years.
Only 3.4% said that their coworkers averaged 10 or
more years of experience.
Crunch time
is omnipresent, during which
respondents work 65 to 80 hours a
week (35.2%). The average crunch work
week exceeds 80 hours (13%). Overtime
is often uncompensated (46.8%).
44%
of developers claim they could use
more people or special skills on
their projects.
Spouses are likely to
respond that "You work too much..."
(61.5%); "You are always stressed
out." (43.5%); "You don't make enough
money." (35.6%).
Contrary to
expectations, more people said that
games were only one of many career
options for them (34%) than said
games were their only choice (32%).
Many years ago I created a couple of game development websites on my own and then was one of the founders of GameDev.net. One of the reasons I did it was to make contacts and get into game development professionally. It definitely worked, a couple of the people who were co-founders have gone on to work in the industry and I'm sure I could have gone that way too but everything I learned about the industry taught me the following things:
There is an endless supply of developers out there who believe game development would be really cool. The people hiring for the industry know this and aren't going to pay you nearly as well because they rely on this basically inexhaustible pool of people.
Many of the developers within the industry may be good with 3D or sound or many other topics but often they are inexperienced with basic software practices that you or I might consider essential. In that category I would put things like source control, test first design, design patterns, etc. Even when they know better the time crunch to get stuff out the door often makes them toss good software practices in a foolish attempt to save time.
Working on a game for two years can quickly become no different than working on any other program for two years. That is, when you have to dig around in the guts of the program day after day and deal with its bugs and only with that one game it's not going to seem all that fun anymore. In fact, you may find yourself playing other games just to get away from it for a while.
What says you are going to be working on Half-Life X or one of the few dozen cool games that come out every year anyway? Remember, somebody is out there building the game that goes with the next Will Farrell movie and it's probably going to be you. Look around at most of the dreck that comes out. That stuff doesn't develop itself.
It's quite a transition! The biggest difference in mindset is moving away from the business world's reliance on abstraction to one where you're focused much more on the particular hardware you're targeting and getting things to run within strict budgets of time and memory. Game programming is a lot more like embedded programming than it is like web programming -- you have to think about the exact memory footprint of everything and CPU time is at a huge premium.
This is even true of being an MMO server programmer, because a) the server has to answer to each client command within 80 milliseconds to feel responsive, and b) the bigger the footprint of the game on the server, the more hardware you have to buy, and that costs real money.
First up you should learn C++ if you haven't already. Almost every game is written in C or C++ these days. Game consoles have strictly limited memory, and if you allocate one byte past 512mb it doesn't slow down, it crashes; at the same time, each trip through the main app loop has to complete in 33ms or less, so we can't rely on garbage collection and smart pointers. The game-development world is one of those special applications where you really need to do all those optimizations that people here say you never need to do any more.
Also, bone up on your math. Games are built out of linear algebra and kinematics -- not just the graphics, but the state of the world and the behavior of every character and object. I like Eric Lengyel's book for game math; it's been my bible for years (though there are many other good ones).
You could try to learn some graphics math and programming as well, but this is sort of a subspecialty now and typically only a couple of people on a game team are really working at the level of DirectX calls. I suspect you're more interested in game logic and server backend, which is less specialized.
Make games. There are many frameworks to help you get started. XNA has the advantage of being a real-world product that actual games are shipped with, unlike PyGame or SDL which are quick to get up and running but have vanishingly little commercial support.
A common route people take transitioning into the game industry is starting as a game development team's Tools Developer.
These tools are often written in higher level languages like C# and are used to aid in the development of the games. For example, you might help maintain or modify the teams in-house map level editor or help develop the tools that convert one media file format into their propriatary file format.
After you have spent some time as a tools developer you can start picking up domain knowledge on the side and naturally transition into one of the many types of game programmers:
Game physics programmer
Artificial intelligence programmer
Graphics programmer
Sound programmer
Gameplay programmer
Scripter
UI programmer
Input programmer
Network programmer
Game tools programmer
Porting programmer
Technology programmer
Lead game programmer
Modern games are often made by huge and highly fractionated teams in terms of roles. So, it might be worth it to pick one of the above specialities and begin studying right away as you attempt to get your foot in the door. It almost goes without saying that you should be proficient in C++ and one of the major graphics libraries (OpenGL, DirectX, etc). Don't stress about learning both, just pick one and learn it. Generally people who know one very well can transition to the other if they need to.
If you're a good programmer you can do it, game programming requires much better understanding of the platforms and tools you use to develop the games.
I think it's much harder to get into the game programming industry than just the regular industry.
The best alternative is to create your own games, get exposure, if you're good enough you'll find your way.
There are many really good competitors though, just check out the many sites that offer free flash games, you can start posting your work to those sites.
The general story is that the way to get into game programming is to start doing it. There's no point in even showing up on a game company's doorstep without a demo of whatever you want them to pay you to do.
If you're coming out of business programming, that'll count against you and be a culture shock besides. The game industry runs on single 20-something males who can be taught that 120-hour work weeks are just how things are done.
I'd recommend keeping your current job for a while and finding a mod team or open source game that could use help. Try to find one that looks likely to create a playable game rather than vanish, at a guess I'd say it will look better on your resume than some test demos both because you'll probably be working on something more advanced than you would at home and it shows you can work in a games team.
I was wondering the same thing!
I've noticed there are a number of good game-programming books at Barnes & Nobles, probably not a bad place to start.
In general though, I'd start looking at books, maybe coding some prototypes, and start looking at what companies are in your area, what tools they use, how you could basically make yourself valuable to them!
By the way, does anyone happen to know if there are particular engines similar to what WOW / Guild Wars are using for MMORPG game development in particular (my main interest)?
I think it is not an easy switch. Game programming is not something you can learn overnight. I suspect an entry level will be quite high if you want more than a graduate salary.
A long time ago I worked in a company that worked in the online gambling field. I then decided I wanted to be engaged in more serious activities.
You really need to answer one question - is that what you want because you like it or just because it seems to be rewarding right now. In the latter case you'll need to understand you'll be plating catch-up and noone can promise the salaries will be as high as you wish by the time you get your skills high.
Maybe consider some certifications/training so that you can step-up your current career position in business programming?
If however it is what you really want then just follow you heart. Show your interest and commitment, potential employers will notice it and hopefully prefer you over a guy who has applied just because the salary was looking attractive.
On the other hand, businees developers/consultants (for example in SAP world) earn quite a generous ransom.

Can it be morally defensible to release a program which games an MMORPG? [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 11 years ago.
I have written presumably some of the first code to modify the memory of a popular new MMORPG in such a way as to create a macro framework, allowing for advanced automated reactions, skill/level gain, large scale data retrieval, and botting.
It's my supreme pleasure to automate tasks in this way, I can't help but think of any manual approach as "broken". In fact I find myself rather unable to complete even single player games before dissecting their mechanics and gaming them, in a specifically read-only (not cheats, per se) mouse and keyboard input only fashion. Supplementing my advancement toward a game related goal with my own programming knowledge seems natural, it's really not fun otherwise, like ignoring your firearm in an FPS.
Since I love this form of reverse engineering I assume others do as well, they'd appreciate the end result at least. I tend to feel a project should somehow "ship": be sold, open sourced, or freely distributed. "Happiness only real when shared." Otherwise it's just me and my timesink.
The problem is that there are several moral stances involved with a project of this nature:
An evil is released upon the virtual world. Those with the program have an advantage, the game is unbalanced, you've got to use, simply to be on equal footing. It's no longer about the game, but the tools, an arms race. It's like every other MMORPG. Therefore, keep the code private.
The above is inevitable, so release a peremptory free distribution to give players equal access to the advantage and potentially deny someone else a more evil™ (e.g. elitist, commercial, etc.) release. Between evils the least is selected, though its necessity is disagreeable.
Sell the program, reap the benefit of your proclivity, it's work for which you deserve recompensation, fair trade (and regardless of ToS violations). Follow the likes of WoWGlider. Is it better in fewer hands?
Keep the code private. Respect at least this much of the company's Terms of Service you agreed to.
What is a morally defensible approach? What haven't I considered? In my experience ToS agreements are a largely ineffective form of dissuasion, and the gaming of MMORPGs (and subsequently results described in #1) is indeed inevitable, but there's something to be said in not pulling the trigger yourself - or is it not so bad?
I did a poor job on the original phrasing/titling of this question, I was really looking to see if there were special circumstances when it could be morally defensible, not whether or not it would normally be, in hope my code could have constructive purposes.
As a new user I didn't realize 99% of the responses would be immediate, before my update. That said, I still received some very helpful answers regarding commercialization and the original question merited the answers provided, so: well done on that front.
I do have my answer: despite the inevitability of bots, don't pull the trigger yourself! Be the change, etc. (#3 was never on the table for me personally, but elicited some brilliant answers.)
You need to tread very lightly.
MMOGlider was a popular WoW bot up until recently. I wrote an addon for it in C# called GliderTools (GliderTools.net) which made a decent bit of money.
Blizzard recently sued MMOGlider for $6 million dollars and won. There is legal precedent now against the writing of bots and commercially selling them. The monetary damages associated with doing this are staggering. It worth noting that the crime Blizzard was able to get MMOGlider on wasn't "botting" but instead, copyright infringement. They claimed that because the bot client had to access and copy certain parts of the running games memory that this constituted copyright infringement.
Considering MDY (creators of MMOGlider) made less than $2 million dollars, they have a heavy price tag on their heads. Michael Donnelly the original creator and founder of MDY was not protected under his LLC license and he is personally liable for those $6 million dollars. This kind of debt does NOT go away with bankruptcy. He has it for life. Once you add on legal fees, appeal, etc this is a dangerous game.
I personally love writing bots. To me a game isn't fun unless I've dissembled it, wrote a patcher for it or automated it in some way. This what makes the game fun for me, not the game itself. Seeing your bot run autonmously for the first time is a real high. However, if you make a commercial product and sell it to others it becomes a different matter.
So, if you decide to make a bot I strongly suggest you either release it from outside the United States or keep it private among friends.
Earning money on annoying million of other players, on something that's close to be taken for illegal won't look good on your resume either.
Use your skills for good™, not evil.
Personally I see botting software for populare games, is like writing botnet worms.
You waste other people's time and efforts (and often money).
Would you write a virus to earn money?
I've been building (but never selling) bots for online poker and chess for over a decade (insert promotional web link here) so this question caught my attention. I agree with #Simucal in that you need to tread lightly, especially where MMORPG's are concerned. Blizzard in particular has a draconian stance towards automation.
4.5 million copies of EULA-compliant spyware
Then again, the idea that a private company's TOS/EULA = LAW is a bit of herdthink. The moreso when that company markets to a worldwide audience across international borders. This introduces additional complexities into the TOS/EULA, which is already a vague piece of legalistic verbiage in the first place. The common practice is to structure the TOS/EULA to make it as aggressive, all-encompassing, and wide-reaching as possible. This is just good legal sense. It doesn't necessarily mean that every line of the TOS is legally binding. A TOS is a deterrent and the company will insert whatever language they think they can get away with, and hope it holds up when/if it's tested in court.
Nothing wrong with this.
At the same time, building a bot is, in and of itself, neither morally or ethically wrong. There's a very strong and convincing argument to be made that provided your bot doesn't actually "hack the servers", you have every right to run whatever piece of software you like on your machine in the privacy of your home. This is especially the case when the servers are inundated with bots anyway, so by not running a bot you put yourself at a disadvantage. Everquest PVP (for example) has been dominated by botting pretty much since the beginning.
Anywhere, there are two important criteria to consider:
Does the bot depend on information which other player's don't have?
Does the bot enable superhuman reactions, stamina, or coordination?
This puts wallhacks (unfair information) and aimbots (superhuman reaction) firmly in the "unfair/cheating" category. On the other hand, a simple farmbot is most probably NOT cheating, because the bot doesn't have access to any insider information and it doesn't allow you to do something you couldn't otherwise have done. You could, if you wanted to, sit there for 10 hours a day and farm ore or roots or whatever. It's not much fun, but you could easily do so.
This is a good acid test for whether your use of automation has crossed the line. Trying to cheat people is a bad idea. But writing a bot to essentially ward off carpal tunnel is understandable, and it can actually be a rewarding project.
But again, I wouldn't advise actually selling a bot. Because if you make any money on it, you open yourself up to the sort of retaliation #simucal mentioned.
Just because other people will make similar bots does not make it morally OK.
These games are, at the end of the day, supposed to be fun. As you said, bots turn the game into an arms race, especially if the game has any competitive component.
Here's an example from my experience with World of Warcraft: I wanted a specific item crafted. The materials for this were hideously expensive on my server; the large number of rich players (who may or may not have gotten their gold legitimately) had pushed the prices up to a point where I couldn't afford it.
My only option was to farm the materials myself. Many of these required killing huge numbers of monsters for days at a time. One particular item had something like a sub 1% chance to drop. And almost every single farming spot was being run continuously by bots.
It's hard to compete against something that doesn't sleep or take breaks. You can't simply wait for them to go away because they don't. Because I played by the rules, my goal was made far harder than it should have been.
It's hard to have fun in the game if there are people willing to ruin your experience out of laziness and greed.
So no, I'd say it's not morally defensible. You know full well that what you create is going to harm people.
The real question is, do you have a problem with that?
If you've described your true feelings here, then the fun was in solving the problem, not in creating a product. If others appreciate this kind of thing they'll do it themselves.
In my opinion, you cannot have a morally defensible position when in order to being solving the problem interesting to you, you agreed to terms and conditions prohibiting you releasing your work.
The problem with this is that it reduces most of the game down to just one thing: end-content.
Take World of Warcraft for instance, I love playing that, and I love leveling up a character. Sure, there are some tedious points in the process, but by and large, it's fun.
Now, if I had installed a bot and just put it to work leveling up my character, at least doing all the repetetive work and leaving me with just visiting a trainer NPC and getting my new skills once in a while, then all I had left was the things I could do at level 80.
Additionally, all the skills I, as a person (not my character) should've learned along the way goes out the window.
There are two types of people that are beyond good in Counterstrike, as an example, it's the people that use bots, and it's the people that have just played so much that they are that good.
Once you resolve to using bots, you're pretty much doomed to keep using them, and trying to automate your end-content playing as well, since you really don't have the experience to play at that level.
So basically, you're reducing the whole game down to a programming contest.
Even if you keep you code only to yourself, all you've proven is that you can program. You've yet to prove that you can play the game.
So in the end, what actually is the point of you playing that game then?
As others have said, there's many options available to you if all you want to do is create software to automate things.
Having said that, I share some of your joy of controlling my environment. I use regularly quite a lot of addons in World of Warcraft, but they don't give me an advantage over others in the same way a bot would. They might make it easier for me to organize my inventory, let me keep notes inside the game, or just prettify the user interface, but in the end, it's still me that pushes the buttons in response to game events.
And that's what gaming is about for me.
Progression requires unethical choices. My advice is Go Ahead and "reap the benefit of your proclivity, it's work for which you deserve recompensation [...]". Why are you ever worried about this? Release the hounds and let others fight it if they can. Take a history book to see thousands of similar decisions made. It pushes humankind forward.
I'm a big multiplayer gamer myself, and played so many MMORPG.
When I see someone cheating in an online game only one sentence is out of my mouth "What a wank*r!"
Morally it's wrong to mess up other people's fun, and if you try to make money out of it it's not any better than running a SPAM company.
To be honest personally I don't care about farming bots, playing a game which requires constant farming sounds stupid to me anyway. But still there lots of people out there who cares, and you these tools definitely spoiling their fun.
I understand it's a fun challenge, keep it private have your fun, tell your friends and show off, but do not kill other people's fun.
In my opinion a ToS holds no one back [...]
So, by using the MMO, you agree to the ToS; but it's OK to break the rules, because you don't agree with the ToS? Nice doublethink, but the court would probably ROFL at such argumentation.
You see, the basic idea of ToSes everywhere is "it's our way or the highway" - by using the service, you agree to play by the service's rules; if you don't like the rules, nobody is forcing you to use that service, you can freely walk away.
Also, don't try to be "clever" and release the bot in Elbonia just because its jurisdiction allows that: the ToS probably states that server's jurisdiction applies (which can bite you if you ever decide to visit the country in question, or even another country which has extradition agreements with it).
Disclaimer: IANAL
If you been following the Blizzard versus MDY case, and the recent outcome, I would strongly recommend you to keep code in private if you're located in the US, or any country with Intellectual Property laws.
Also #3 , selling it will only get you into trouble. MDY went bankrupty, is not allowed to sell their product anymore, had to hand over the source code, and pay Blizzard 6 million USD in damage.
The author, Michael Donnelly, is likely to end up in dept for the rest of his life.
I recommend you keep it private.
As opposed to Blizzard and WoW, take a look at Ultima Online and OSI as to they allowed 3rd party tools, and even supported them (Tugsoft's UOAssist).
To me it's morally fine, if the game is designed in such a way that grinding one thing only leads to grinding another thing, and if the grinding in general is done in really unpleasant manner then, hey, why not? If it's allowed, everyone has an equal chance, as everyone can use the particular supported 3rd party product, this is a chicken-egg question.
It's mostly forbidden because it reduces the time you need to spend in the game, effectively reducing the time you're paying them for their service, so, greed or fun?
As a sidenote, I'm all against unattended macroing, it's a huge difference between attended and unattended.
Yes, it is fun to reverse engineer games and to do automation. From your question it sounds like you're asking where to go from there.
A) It violates the ToS, so you shouldn't use it yourself.
B) It violates the ToS, so you shouldn't sell it.
My impression is you're looking for an OK to do one of those two things, while admitting that the fun was in writing it. I would suggest you take the entertainment value from writing things for what is, and assume your "fun" time is not worth any money. Particularly at the expense of others.
The ToS holds no one back? Check with Blizzard, they are not pleased by such things It's definitely in their ToS not to run any programs that mess with WoW). The companies running these MMO's try pretty hard to stop such programs because they lead to unfair advantages and ruins the economies.
If you like doing these kinds of things, you can also look at non-MMOs. There are plenty of games (e.g. TES:Oblivion and Fallout 3) that have very active modding communities which are tolerated and even supported by the game developers.

Product Development as a startup

I am throwing puzzle of my mind towards community leaders for some answers.
We friends decided to build products which already have some big names in the industry. Our motto is not to beat all those players (As we can't), but to develop basic product which is cost effective for some segment a customers.
What we are trying to achieve in first step is cheaper option, as we all knows product grow over the time period, not at once.
Now our catch-22 part-
Should we start building the product as there are already big names?
Price is a right option for USP (unique sale point).
As we all are dependent on jobs, what would be the best option to move forward.
As we also have some customers through verbal confirmation, should we go ahead?
What all major principles we should keep in mind during product development.
Please brain storm yourself on the definition of Product.
It's not just a CD that get shipped, but support, and trust.
Using this extended definition, if you can still beat existing
products, go for it.
Also, don't forget the amortized development cost of product has
probably been recovered by existing company already, so they can
reduce cost any day.
All said, don't let this analysis paralysis stop you ... go for it.
Big Names on the Market
I'm in the eve of such a startup, sometimes being small is a definitive advantage. If you believe you can use that not only price-wise but being agile, doing the core job maybe even better than the big names. If you up for that, I think you can easily infiltrate the market.
Job Dependency
Depends of what you do? If you are opening a next-digg or YACW2A (yet another cool web 2.0 application) then stay in your day job, because generally you can do both, especially if you got your friends with you. If it's a bigger scope you might want to stick with your day job until you got a almost there product.
Don't forget, also you can find an investor, sometimes it's best way to go. So you can just quit and still have a salary in your own job.
Verbal Confirmation
It's great that you already got couple of potential clients, now you need to look into and make a business plan. Understand your monthly cost including salaries, and see what percentage of it you can get out of these clients. If it's good then get some more certain answers from these clients and go ahead. If possible establish the company beforehand and get them buy the product. (one of your friends can do it, not all of you need to leave your day job straight away)
Product Development
Being the big market means do the core functionality perfect, it should just work, and it should be easier. Price by itself can not justify a buy unless you get the core functionality right. Ignore useless enterprise features, or any useless feature. You need to be aware that you got so much more limited resources than your competitors therefore 20/80 Rule (Pareto Principle) is for you. Do not try to satisfy 20% of the market by including crazy features, stick with 80%'s requirements. Big players can satisfy or can try to satisfy 100% of the market, if you try to do the same thing you gonna fail miserably.
Finally
Read Getting Real, Do not follow religiously but this book will give you good ideas and will explain advantages of being small.
You didn't mention, but I wanted to write. Make a proper agreement between you and your friends, ensure everything is in the paper before doing anything! I've seen so many similar startups fu*ked up before even start because of this.
If you think you can build a better product than the ones already on the market, sell it a fair price, and reach your target audience with a limited marketing budget. Absolutely, Go for it!
Our motto is not to beat all those players (As we can't)
First, change your motto. There isn't a product in existence that is perfect for everyone all of the time. There is always a niche to exploit. How can the current products be improved or simplified?
Second, don't focus on price. Customers expect to pay a fair price for a quality product, but they won't buy poor software at any price.
Well. Me and my fellows from our current company having the similar aims.
Here's few our ideas about it:
We are developing (web-based) product that we will use too. This is important for us and hope will help to improve our own performance in some areas and will give inspiration for new features.
We are going to develop product in stages. Not just sit and code silver bullet for industry. Going to start with core and minimal feature set.
Pricing. We are going to give options: use product on our hosting or purchase own copy and install it on own server. Additional and obivious things are different feature sets (technically -- different plugins integration).
Even more, think we'll make the core (as framework) and some plugins public. It'd be good (even neccesary in our case) to create community.
We already have few customers that would like to have highly customised versions of product. If this will have progress, we're going to focus on such activity and provide community with more and more free basic plugins.
That's just general ideas set. Hope you'll find some of them useful.
If by doing so you can satisfy your own requirements (e.g. for risk+cost-versus-reward)
You might want another USP as well: for example, ease-of-use
Work on this in your spare time, or have a part-time job
?
If you don't finish, or if customers don't want what you offer, then you don't get paid
Write up a proper business plan. Be sure to include critical risks and defensible barriers to entry. If no one on your team knows how to do that, then you can stop now as you don't have the right team in place yet.
The business plan is not just another marketing brochure that targets VC. Tell the truth. After you are done, turn it over to people you trust and ask for money. If they wouldn't invest in it, then why should you?
Have you identified a market for a reduced feature (and hence reduced price) product? It sounds like you have not.
Does your group have a passion for a particular product? It doesn't sound like you do. It might be difficult for everyone in your group to really inspired by just some program. Especially if you haven't done the market research.
I wouldn't count on the 'verbal confirmation' customers. Of course, it depends on the amount of money involved. The larger the price of the product, and the longer it takes you to make it really work, the less chance they will actually buy when you have it ready. Do you have reason to believe that there will be many more people that would be interested and would actually buy your product?
If you have enough market research, and a marketing plan, you may be able to get some venture capital, quit your current jobs, work on this full time, get paid, and hopefully make some big money when it goes big.
Best of luck.