[T-Mobile myTouch 4G Slide] Blue6IX:
Hey guys!

I would say that making a post or thread like this is really the first step - knowledge can be gained, but the passion, that drive to work through all the tedious testing, retesting, writing and re-writing is not something that can be taught.

So start small.

We all have grand designs, plans and ideas - heck there's so much this device is capable of that I want it to do, starting everything at once just leads to unfinished projects and fragmented learning.

If you bring that excitement, that hunger for knowledge, then the rest falls into place but it takes time.

"I never let school interfere with my education"

...is such a fantastic quote. It's up to you to choose to take the time to sit down and read a technical document, white-paper or tutorial while your friends are out wasting time.

Definitely make time to walk away and socialize with real people, but remember that learning how to do this stuff takes a lot of time, effort and tons of frustration and dead ends.

I've been playing with software code for near 20 years now, and I still consider myself not much past amatuer status.

...and status means literally nothing. The only two things that matter are what you know, and what you don't.

So don't lie to yourself. Don't pretend to know something just because you are afraid of what people will think if they find out you don't. It's okay to say "I don't know"

In fact, it's essential to be able to say that not only to yourself, but to be able to admit that to the community, your friends, whomever.

If you don't, then you have no place to start learning. Pretending to know something just prevents you from actually being able to start learning how to do it.

So, after you are comfortable with a truthful assessment of what you can and can't do, the next step is to figure out how to go about learning what you don't know.

The biggest mistake everyone makes is taking on a huge project because that's what the end goal is.

"A journey of a thousand miles begins with a single step"

...another good one!

I'm sure we've all heard it before, but haven't pondered it so deeply. Another way to say it might be:

"The making of an awesome ROM begins with changing a single icon"

Break down the project you want to do into the smallest possible steps.

Can you decompile an app?

If not, definitely learn how to do that.

Once you have it decompiled, browse all the code. Especially what you don't understand or makes no sense. Don't try to understand it all, just absorb it and get to know what it looks like.

Now do that with every app on your device (play with all the stock apps first - they all came from the same place and reflect a certain coding style)

Now that you've browsed through all the code of all your stock apps, do it again. ...and again ...and again ... and again.

Sick of it yet? It's been a few weeks now and you've learned nothing you can directly use.

This part always separates the people serious about doing it from the ones turned off by all the tedious work with nothing concrete to show for it.

I mean, you've spent a couple of weeks just looking at code with no idea what you are looking at.

What you don't immediately notice is that you start to get a sense of the pattern, the layout, and what things are the same, similar, and completely different.

Now you start looking at tutorials you've read in the past and go 'wow, I know kinda what that means, I saw something like that in the code here!'

Ah - now it begins!

When it gets to be too much, do something you can handle from start to finish.

Change an icon, tweak the color of a font, something simple, but that you can feel the pride of success and accomplishment in.

Can you compile an app?

Decompile a working app - change nothing - then recompile it. Install it on your device.

Does it still work? Probably not.

Why?

Ah - the question that drives us.

9 times out of 10 someone releasing something cool is not because they wanted to make it, but because they wanted to learn how to make it.

One thing people forget all the time is that the stock software on the device is built by teams of people with delegated tasks and diverse talents that TOGETHER contribute to the success of the final product.

You? You're alone. You have to do it all. Graphics, sound, coding, planning, research, testing - you are taking a project that requires untold hours of dedication from a team of people ... Maybe just on the graphics alone. A whole other team is working on sound, another team is working on code, there is management to structure goals and delegate tasks.

Managers who may have no technical ability but a good handle on how to keep everyone moving and workikng cohesively. Other management that is keeping the teams on point with each other.

...and it still takes them lots of time to get things done. Not because it's some bloated over-staffed group with too much red tape (though that does happen) - but more because there is simply so much to do.

The next time I spend 40+ hours behind the keyboard with maybe not even a bathroom break won't be the first nor the last. I've sat down to do something on Friday and had someone stop by on Sunday night and I'm still in my work clothes from my day shift Friday, didn't even realize Saturday came and gone.

Does it all require that level of dedication - no, but, you get lost in it and that can happen. Never force myself to do it, just get caught up in learning it all.

Don't expect too much from yourself. You absolutely have the community behind you and so much knowledge here, tons of people willing to help, but in the end it's up to you.

You to do graphics.

You to do sound.

You to write the code.

You to compile it all.

You to figure out why it doesn't work ( and it rarely does).

For every success, you have many, many failures to get there. Especially starting out. Expect to get it wrong. Expect it to be broke just because you touched it. If it isn't, honestly, you're doing it wrong.

We learn so much less from success then we do from failure. If you aren't failing you aren't learning. If it always works the first time, then you are just doing the same tired stuff you always have.

You wanna learn how to code for Android?

Read everything you can, absorb the forums, go download source and browse it. Decompile all your apps and browse them. Start looking up what you don't know.

For every one thing you do learn, you realize there are ten new things you never knew you didn't know.

Now go learn about them, because each one of them will lead you to something else, or many something elses that you didn't even realize you didn't know.

...and did I mention put lots of time into ignoring what you want to do, and learning how to do it one tiny little piece ata time?

Patience is most important.

The patience to only change one variable, recompile, test, test, and test some more. Then, when you are satisfied with the result of one minor little change, make one more tiny change and repeat the process.

Learn the scientific method, and follow it rigorously. If you don't, might as well not bother getting into this stuff because all you will do is get frustrated.

You have to work slowly, patiently, one small step at a time. Try to predict the result of the tiny change you made, and then see if it was what you thought or a surprise. Why was it a surprise?

The question of why is the only thing that matters. Every one of those you answer is one more weapon at your disposal for the battle, one more tool in your box, one more pencil on your desk.

If you have little to no coding experience and expect to sit down and whip out a ROM, you are only setting yourself up for failure. But one day you can, with hard work, lots and lots of time, uncountable failures and hours of frustration and coding something just to have it not even compile, let alone work.

Have you taken the time to map the device?

When you got it stock, you should have put a file browser on it ( root explorer - just buy it already, you need it) and browsed the entire device.

Take a notebook and write out a full device tree on paper, everything you can see. Every folder, every file or folder in them, sizes, permissions, any detail you can see.

Why? Because it already works. You are lookoing at how a working ROM is structured.

I mean, how can you make something if you don't know what it is, looks like, how it acts?

Learned ADB and fastboot yet? Why not? You wonNt be successful if you don't.

This is a pretty long list already - and we've barely scratched the surface. A ROM is not a Sunday afternoon project - a ROM is a dedicated months and months long never ending project that eats up more time then you have every day.

So I'll leave you with one last thing before I go make a thread that people aren't gonna want to see - but I'm not leaving you guys, far from it.

Learn algebra, learn it well, or don't bother attempting to write code. (Or work in any construction trades/build anything professionally.)

Algebra is the single most important learned skill one can pick up across just about anything you can ever do with your life, and absolutely vital in computing.

There really is no "go here, learn this" method - you need to aquire the skills necessary to succeed in your project.

So go break something (minor - don't brick your phone) and then learn how to fix it. ...and pay attention in math class.

Sent from a digital distance.