[T-Mobile myTouch 4G Slide] Blue6IX:
Not too long ago someone asked me the same question. It was an in-person thing, not over the net, and it is really a hard question to answer. Though yours poses a slight bit more information as regards to the how. Try this analogy:

Q - What's it take to make a new car?

In that respect, why don't you like the car you have?

- Not enough horsepower? Color bothering you?

- Maybe the interior is a little beat up. Could you use some more room in the trunk maybe?

Navigation system would be cool too.

...

Just like deciding if you don't like your car, what don't you like about your ROM now?

- Are you looking for an overclock kernel? Do you want to mess with themes maybe?

- Wanna edit Rosie or change something in Sense? Get rid of some apps to make room for...what?

-In my case I took on GPS, why I mentioned that.

----

You should have some kind of idea what you want out of a ROM. Even if you're just tinkering with it to see what happens, sooner or later you will want to change specific things.

Get used to managing the flow of information. That's probably the best advice I could give anyone. Time is your competition, and you are competing against yourself.

To me, it seems, you have a finite amount of time to invest in the endeavor - nowhere is it more apparent to me then right now when I have a lot of other things making demands on my time. Depending on how much time you have, decides what you can do.

Time management is your most valuable skill at your disposal. Forget anything about languages, coding, graphics or any of that stuff. You won't get to any of it if you waste all the dev time you have trying to figure out or attempt to do everything at once.

This being the root of all you build on, the more efficiently you manage your time and projects, the more you can accomplish per time invested, maximizing the range of projects you can tackle.

Too, as you learn more skills it increases the range of what you can try to do. But the foundation of that is taking the time to search for information on how to do things. Knowing even rudimentary search techniques becomes a huge asset when trying to find guides, tutorials, manuals and documentation.

If you want to work on the device, then you should at a minimum have read the user manual cover to cover more then once, reviewed the HTC and T-Mobile web pages for it and read through them.

Don't forget to stop by Qualcomm's web page and read up on the processor.

Some Device / Documentation Links:

- HTC

- HTC doubleshot Product Page

- HTC doubleshot User Manual

- HTC Dev

----

- T-Mobile

- T-Mobile doubleshot Marketing Page

- T-Mobile product pages for the doubleshot: Black or Khaki colors.

- T-Mobile doubleshot Specifications Page where you can download the user manual.

----

- Qualcomm

- Qualcomm Snapdragon Product Page

- Qualcomm doubleshot Product Page

- Snapdragon S3 Processors Overview

- Snapdragon MSM8x60 APQ8060 Product Brief

- Snapdragon Fact Sheet

----

- PDAdb entry for the doubleshot

- PDAdb entry for Snapdragon Processors

----

- Revolutionary: S-OFF & Recovery Tool

- doubleshot Fastboot Drivers

- HTC Sync

--------

Right behind Time Management, information is your next greatest asset. The reason you always strive to maximize your efficiency in gathering and learning from information is to build your skillset and be able to tackle more complex operations.

Resource management is one of the ways you save yourself a lot of time. Naming conventions and structures are important to designate what file belongs where. Don't just make generic names for things, give everything you are doing a label.

Versioning is extremely important. You need to keep track of what files belong to what versions. It is so easy to get things mixed up, lost or what have you.

Optical media will save you a whole lot of time. If you save something to a disk, finalized...none of that multi-session, then you have a static copy of something according to how you made it. It hasn't been changed, altered or anything - you always have a clean source.

That doesn't mean don't keep things on dynamic media, portable hard drives, flash drives, partitions of your internal hard drive structure...these are all good locations for backups and duplicates. The optical media you know is pure.

Depending on what kind of prior computer skills and habits you have before you start will set your base level of efficiency. As we've seen efficiency equates directly into all forward progress, this whole subsection applies to you. The message?

Take some time to learn how to learn before you start.

Before you even start to work, concentrate on setting up your work environment. Think about how you will name stuff, and how you will keep track of it.

Check out this portable program for the computer

That program will let you keep track of things by setting up notes in a directory tree, so this would be a good thing to use to test out file structure, how you expect folders to develop as you envision the project and so on.

This is a tedious task at first, because you don't know how the project will develop, but just making the attempt every time makes it a part of your process. As you take on bigger and bigger projects, it makes you stop and give yourself an overview before you start.

Get a dry erase board. You'll thank me later. I have a 4x8 sheet of plywood next to my desk with sticky-mount dry-erase on it and a handful of markers on my desk. I also have a small 9" x 11" one I drilled 3 holes in to fit in a 3 ring binder.

The binder has folders with printouts and handwritten notes on my projects. Whenever possible I try to write my code outside, usually sitting in or under a tree. No computers, no anything but peace, quiet a notebook an a pen. A memory exercise to force me to recall it from my mind and not google.

I learned that writing web pages a long time ago. Just go sit somewhere quiet and write out your HTML code in a notebook. This is probably where everyone should start if they want to learn code. It's probably the simplest, most forgiving language to familiarize yourself with the higher programming languages. Try to learn a few after learning HTML first.

If you want to get into graphics, while you're learning HTML is a great time to do so. You can start messing with images and learning how to use graphics programs at the most basic of levels to start small. There are a lot of options in things like photoshop and gimp, so knowing what they do doesn't all come at once.

...and then we're back to time management again. By piggybacking the skills, we are learning the very basic structure of what some of the code we'll come across later looks like while simultaneously introducing ourselves slowly to complicated graphics software.

From here, if you get into graphics, or if you skipped the HTML part because coding doesn't interest you - learn about icons.

What else do you know about computers? The first real problem I tackled once we got root was to dive into GPS issues. I needed the GPS to replace the standalone gps unit I used to have, and out of the box it was just not sufficient.

In the beginning don't be in a hurry. Rushing gets you nowhere but tired. Take your time and learn good habits, however much longer you think it's taking in the beginning.

Development at it's core is doing something new or more efficiently, really. To do either you have to know what is, so you'll be spending a lot of time learning what the android SDK is and how to use it. Definitely read as much literature as you can from Google's site. Again, though, back to information being your friend.

But above all, enjoy yourself. It's fun, exciting learning new things, and there's no reason why anything can't be done that's a reasonable expectation of performance - it's just a matter of making it happen. The more you put into it, the more you get out of it.

You left a really open ended question, and I sense the excitement behind it - ( believe me I know :D ) - figured some theory would be helpful in guiding that.

Edit:

This thread: Windows XP - Fresh Dev Computer setup is one i'm putting together to show one way to set up a windows environment. I have some links to tools in there, and i'll be adding more as soon as I get the time to straighten it out. It's a WIP right now, but I just have to find the time to type it out.

It might be helpful in getting started, and i'm sure you could find some linux guides floating around XDA if that's your preference ;)