Help me change my life and career.

Started by
30 comments, last by M6dEEp 11 years, 9 months ago
Hello guys!

In the last two and a half years and specially this last semester I have come to the realization that I hate my life. I'm studying something I don't like and working in a field I don't care about.

This past month I decided to react. I'm you average gamer/geek guy. Always been found of technology and well, I work in the finances department of a car factory and I'm recognised more by my tech skills than my accounting/administrative skills, so that's got to be an indicative.

I'm going to graduate in economics this year and I'm considering applying for a computer science or engineering course next year.

You are probably wondering why I'm writing this here. Here is the deal, me and a friend decided to start developing a game. We are focusing on learning java and doing an android/iOS app. I decide to do this because since I don't know anything (except the thins I've learned by curiosity) I think the experience is going to be good to start learning and picking up some experience.

The thing is, as I said, I don't know anything practical about this stuff. I downloaded the JDK and eclipse, then I downloaded the android SDK. My plan was to learn trough the internet (videos, ebooks, forums).

Just want to know what you guys think about this. Is java a good introductory language? Should I learn it in a more formal way? Should I just go for the C++? Should I focus on a platform different from android/iOS? Should I travel to the Himalayas and become a monk?

I know there are a lot of FAQs about this and a lot a people have made the same questions, but I want a more personal opinion from you guys. And, if possible, some links or information you guys thinks might me useful for me.

Any reply is appreciated. smile.png

Thanks!
Advertisement
Java has a huge standard library.. I mean, it's humongous! If you're the kind of guy who thinks 'more is better', then go for java. Personally, I hate the language. It's pure mess in so many ways, and oracle is just in it for the money. I really don't know why anyone wants to willingly use java.

So, enough about that.. C++ is my forté and while it has its own set of issues, I think it's a great language. It's low level while still being manageable and it's extremely versatile. This comes at the price of being fairly complex, but the features are well thought through (in most cases anyway) and it doesn't jump on what ever is all the rage at the moment. If you learn it now you should find out what's special about the latest specification, C++11. It introduces smart pointers in the standard, and many other things which makes a world of difference to manage your objects.

C++11 isn't fully supported by any compilers yet though. It's simply too soon since its release. But a good few things are already implemented in pretty much every compiler, which includes: smart pointers, the auto keyword, lambdas.. which I find the most useful anyway.. you won't need the rest for a year or so while learning the language anyway.

I started with python actually, but I was so put off by its performance. A year programming python and I moved on to C++. The problem with going from a managed language to C++ is to learn the differences about object lifetimes. Python, java and C# runs garbage collection, which sucks a lot of performance at unspecific times. C++ has scope lifetimes. When an object reaches the end of a scope, it destructs. Simple as that really. You exactly control the lifetime of your objects this way. Old C++ had some issues with this, but the new smart pointers makes it so easy even a beginner will be unlikely to have much problems with it (exceptions to this rule may apply).

I've been programming for some.. 5 years I think, in a semi-serious way. I've had a few jobs and some education along side it, but I've learned the trade solely via the internet. So it's quite achievable to learn to program with just the net as a tutor. You'll probably find out more up-to-date knowledge by actively reading on the net (and books!) than going to any school. Collage/uni has a great merit value though, and for someone who's never programmed it may be fitting. I'll be trying to get a computer science degree, starting this fall. It's mostly a way for me to get some income (living in Sweden, I get paid to educate myself), and to get a job after if I don't manage to pull off releasing a successful game before I'm done!

But hear this: Don't expect to make a game in a year from now if you're just starting out. You'll be able to make something very simple and maybe only a proof of concept demo.

Learning a language is merely a fraction of what it takes to build a game. You need to be a good code designer, and learning how to be that takes years. You got to get accustomed to different development tools to be effective, such as version controls, your IDE and debugger, documentation generators, repository sites. Not to mention getting to know the libraries you'll use for your games for the graphics, sound and even logic and system structures.

It's daunting! It's difficult and plain frustrating.

Is it worth it? Hell yes
Well,

Zoomulator, we can see by what you're saying that you REALLY need to go to proper programming jobs, and really need a degree in computer science too.

First of all, Java is a great language to start with, for learning programming. You don't have to worry about the memory, so it lets you learn the OOP, Design Patterns, and the logic of programming easily. You don't see why any body would learn that, well it's because you don't have any solid knowledge about its uses....Java is used in many websites, big companies that have databases, etc...because you got the magic J2EE that lets you do all of that easily. How do you think the big supermarket manages their resources, etc...They have software using J2EE and Database.

Second, Python is a good language, and it seems obvious you don't have any clue how to use it. Python is great for pre-processing datas in games (and probably more in general). Python is also incorporated in Blender, and lets you write your own script to export datas from Blender...which can be quite usefull for games development.
You can combine Python and C# when writing such tools.

C# is used a lot for writing Tools, such as Level Editor, Sprite Editor, because it incorporates Windows Main Forms, and it's really easy to learn and use. I know really good and experienced programmers who use C# for their tools, Python as the scripting language of their C++ game.

C++ is the main language for games, although android uses java, and the mobile games were developed in java using the J2ME template a few years back.

When Zoomulator puts Python, Java and C# in the same bag, it just shows he doesn't know the difference in terms of how/when to use those languages. I bet he would put Lua in the same bag.

Python/Lua are scripting language, you can make games with them, it's true, but it's not designed for that. And FYI Zoomulator, Sony uses Lua (yeah a scripting language with a shit Garbage Collector, My God), for programming gameplay state in one of their last game...so you see The croaker, even such a language is used by a big games company.

I have worked for 4 games companies in 4 years, first one was making Java games on mobile...they were Konami, the 3 other ones were using Lua and C++. the last one was using C# for Tools, and Python for pre-processing datas.

So Yeah, the thing is it all depends on what you want to do. I recommand reading books, etc...and create programme on your own to learn. If you want to do C++, it's a big step, but You need to really download games example, etc...study the code to see how they do it.
Your post focuses on Java with other languages just being some kind of alternative learning experience, but you claim to want to make a game on both Android and iOS.

So I am a little confused. If you focus on just Java, what do you plan to use on iOS? iOS is 99% C++, 1% Objective-C++, and 0% Java.
If you are planning to learn a language based on what works with both Android and iOS, then C++ is basically the only answer.


And if so, then I have to question your sanity if you want to make games for Android.
Google dislikes people who develop for Android, and provides them with terrible tools for programming. All people I have known who have worked on Android NDK have gone mad except one, and that is just because he is a “special” person who likes debugging with sprintf() and #if 0 instead of using breakpoints and watchpoints.

It really isn’t a joke. One of my coworkers confessed yesterday that since he got tasked with Android programming it is the first time in 5 or 6 years at this company that he has considered quitting. The other one literally has some kind of addiction to debugging, and so he is happy with Android programming.
Because that is basically all you are doing when working with the NDK. Pure raw unabridged debugging, and nothing else. Not moving forward, just debugging.


And in the end, the Android market just makes it a waste of your time.
They have only 20% of the share and you have to code tons of special cases for all kinds of devices with different capabilities, as apposed to iOS in which there are basically only 3 classes of devices (none of which require any special coding to handle), 3 total resolutions to handle, etc. So not only are you reaching the larger share, you are also saving yourself from a large pain in the ass, multiplied by a larger pain in the ass.


So your choices are to code in Java and drop any notion of iOS, code in Objective-C and drop any notion of Android, or code in C++ in order to keep both on the table.
Since the obvious choice is C++, you then have to decide between the pain of supporting both Android and iOS, or the easy feeling of just supporting iOS.

Ultimately the choice is fairly clear, and you can save yourself hundreds of dollars by not having to buy a wide variety of Android devices too!


L. Spiro

I restore Nintendo 64 video-game OST’s into HD! https://www.youtube.com/channel/UCCtX_wedtZ5BoyQBXEhnVZw/playlists?view=1&sort=lad&flow=grid

Just want to know what you guys think about this. Is java a good introductory language? Should I learn it in a more formal way? Should I just go for the C++? Should I focus on a platform different from android/iOS? Should I travel to the Himalayas and become a monk?


Java is a good introductory language. If you learn java, move on C# afterwards, cause it's used with Xna, and you can release game on the Xbox Live using that. The thing with C++ is that companies like to know you understand pointers, references, and some basic libraries used in common C++ development. But you should probably develop a PC game in Java using a 2d engine, and know what are the mechanics of Game Development, and Design Patterns.

More over, if you want to develop a game for Android and IOS, use Unity, you can develop in it using C# or Javascript.

You should Focus on PC, cause first you can develop in most of the languages on PC :P, you can use XNA and Unity as well. Developing for Android/IOS is usefull for knowing how to optimize your code, because the devices have limited memories and generally capacities. Most of the time, companies want you to have knowledge of such platforms for optimisation reasons and the fact that as I said, you will be aware of the devices limitations, unlike on a PC :-)
kcrik,
of course each language has its use and I merely stated what I didn't like about it. I didn't say they're all awful for every purpose and that you should never use them. I'm not such a C++ bigot that I can't see that.

Scripting is great for productivity. Most games doesn't need blazing performance for their logic or general structure, and puts most of its effort into the graphics engine. Those engines are low level and handles those things where the scripting doesn't have to.

Tools and pre-processing data is part of a production tool chain, which is naturally part of making a game, but my post was about the core language making the heavy lifting. I didn't crack down on scripting languages, so ease down.

Yes, java is used largely in server applications, search engines and management software, and it is mainly the standard there. It doesn't mean people using it actually enjoys working with it, even though it gives reasonable production value. As for learning via Java, I have no say other than that I found learning C++ and it's "memory management" less difficult than it's made out to be. How ever, learning java is a top down approach to learning how to program. It shields a programmer much like you said, from more low level operations. There's a lot to unlearn when going to lower level languages after and I think it's more benefiting to go bottom up. Just my opinion.

My post was about my experiences, which was what the OP asked for. Make an objective case instead next time.
I'm just going to throw this out there because it is hardly ever given as an option to do, Web development is pretty fun and you see results very quickly. With that said you could always learn PHP but I wouldn't recommend it as your first lang. You can make mobile apps as well using something like Phonegap. The only thing with Web is you have to know HTML, CSS, Javascript (Not the same a Java) and PHP is a plus in this area but not required. If you are dead set on learning standard application development, I would start with C# it is a very easy to understand and you don't have to worry about garbage collection and all that other stuff that is in C/C++. My language of choice is actually C/C++ though that is what my school taught me out the gates.
Croacker, Travel to Himalayas and become a monk it's far less stressful than coding:)
I like Java. I like C++. Both are interesting languages with a different underlying philosophy which require different mind sets. Both can (and are) used for game development. Both have unfortunately (but expectedly) their own group of extremist fanboys and haters, but that is the Internet we live with.

If your goal is to get a game done and you are fluent in neither Java nor C++, then my advice is to work with Java (or C#. Or Python. Or <continue list>). The huge drawback of C++ is not that it is more difficult to learn, the really big issue is that it allows you to do some really horribly wrong things while still appearing to work fine. You can be one very tiny poke away from disaster and the poke that makes everything blow up has nothing obvious to do with what is actually wrong.
You can still get weird problems in Java or the other languages but C++ really stands out here because it takes "the programmer knows what he is doing" to the extreme. People often start to believe they know what they are doing, especially after their first (apparent) successes with the language. From both my retrospective experience and also working with other people's code (who are generally not completely incompetent, despite what some of the curses during debugging sessions might suggest), I can say that is not as much the case as it often should. I now have 15+ years of hobbyist and professional experience with C++ and only very recently I would have said "I *really* know what I'm doing" and still think that is true. I still encounter or read a few gotchas. They just don't happen that often anymore and tend to be in the more obscure corners of the language.

To make a long story short: if your aim is the game, don't try learning C++ at the same time. Learning any language while trying The Game is probably not a good idea, but the worst idea in C++. Also, whatever the language I would stay away from mobiles until you are reasonably proficient in a more forgiving environment.

My post was about my experiences, which was what the OP asked for. Make an objective case instead next time.
[/quote]

So it's not objective, why should I be objective ?

Java is great to start learning...because it's high-level as you said, and so you can get easily into programming. That will help to get into more low-level stuff later on. Really important stuff, is to learn as I said games mechanics/fundamentals of development, and Design Patterns. You will be often asked about design patterns in games interviews. That's probably more important than learning a specific language.

If you have good knowledge of mechanics, design patterns and have a demo in C#, I can tell you, your chance to get a job over a guy who only knows C++, are much bigger.
Making, even a small game from start to finish is, as well, much more important than the language, cause it shows you've managed to do it, and it's great value for companies.

You don't have to unlearn stuff, you have to learn how to manage other stuff, that's different.

I think I made a more objective case than you did, I explained what some languages are used for, so he will know if he wants to get into those languages or not.

This topic is closed to new replies.

Advertisement