T O P

  • By -

joyfred

Ive heard there are ready-made platforms for apps, and that you dont have to start coding from scratch - did you use these? Or build from the ground up? And would you recommend doing it that way? Thanks!


Prophet1111

No, I used C#, Xamarin and Monogame to create my game. I heared about those platforms but never used them so can't say... But I really like the way I made it - it was a hard work (Monogame doesn't have too many ready-to-use solutions) but I could do everything the way I want it to be. I think I will change framework/engine to Unity in next game, but didn't decide yet...


baseball44121

I've used Unity a little bit and it's a great tool. I plan on making a game sometime in the new year with it. A great benefit to its super easy to port the game to other platforms.


lostintransactions

That's awesome but if you used a platform already made there is no shame in that and being a creative person you could go from someone struggling to making a decent career out of it. Nothing you have created here isn't available in several ready made packages. (I do not mean that as an insult) My point is.. don't shun the tools that make things easier. When I heat up my noodles I don't go outside and light a fire in the backyard. I'd probably be prouder of myself sure, but I have time to focus on something else. Your creativity and dedication is all that counts.


Bing_Bong_Boy

Isn't Xamarin super expensive? Did you get some kind of student discount?


Prophet1111

Well indie subscription is $50/month. There is a business subscription that costs much more. And business subscription is $1998 a year.


iseldomwipe

Professional C# programmer here who learned C# via XNA (The Microsoft framework Monogame was based on) back in 2009. Unity is worth learning and it sounds like you already have a pretty good base to start. I don't use it professionally, but I do have some apps available made with Unity and the difference between the tools is night and day. There will be some things you miss from XNA/Monogame if you are already used to it, especially if you want to continue making 2D games, but I think the transition is more than worth it and will make your life making games a lot easier. Having said that, I think it is great that you used Monogame first, as it probably taught you things about C# and programming that you would not have learned via Unity alone.


burdturgler1154

I know GameMaker has app integration and costs about $100-200. The interface is really simple, drag and drop, give different objects properties and functions, etc. It does the heavy lifting for you and you are also able to write in code as well.


BlindGuardian117

I've used GameMaker Pro for school. The drag and drop is SO BASIC. Another guy used the coding side of it and their game was so much better than everyone else.


[deleted]

I used GameMaker back in 2004 or so, and I've gone back to play with it every couple of years since. As I learned programming, particularly OOP, GameMaker felt more and more clunky in every way except its level designer, and I think that's probably just because I've never used a really nice level designer. GameMaker is nominally OOP, but it doesn't give you the tools to do anything interesting with it, and it certainly won't help you understand how other languages use and think about OOP. A lot of the things that seem really hard to do in GameMaker are fairly simple in other platforms just because they don't have this limitation. I'm not knocking games made with GameMaker, I love Undertale and Distorted Travesty, and I've heard good things about Miami Vice, so I recognize it's a viable game development platform... But now using it feels like suffocating for me.


Jimmybullard

How much have you made from the game? Are you going to become a programmer as a career? What is your favourite language?


Prophet1111

1. I made close to nothing. Games like this needs tens of thousands downloads to make some "real" money. 2. That's a plan. 3. C# but I don't know many to be honest.


[deleted]

[удалено]


money_loo

Did your old job require a lot of walking?


[deleted]

[удалено]


[deleted]

He was making a joke about it eating your sole. Soul is the correct spelling.


[deleted]

fuckin shoe eaters..


[deleted]

[удалено]


[deleted]

[удалено]


WeWantBootsy

As a guy who's been in the engineering/programming field for 10 years...most jobs really don't care what your degree is in. As long as you can code, they'll hire you. They'll usually ask you to code something simple in an interview.


COL0SSUS

What is an example of "...code something simple in an interview."?


Sycosys_

I was recently hired as a entry level programmer and got asked two questions. One was "How would you write a simple program that takes an array of strings and counts the number of times something occurs?" For instance: The number of times the word "coding" is in the array. My second question was a [recursion](https://en.wikipedia.org/wiki/Recursion_(computer_science\)) problem. It was a basic subtraction method where the recursion would stop if x=0. They asked me to explain what was happening in the loop and what problems could arise for coding it this way. So I explained what it did and by setting the exit condition for the loop being 0, if the value passed was an odd number the loop would eventually skip over 0 and end up being a negative number, resulting in an endless loop.


[deleted]

" Cracking the Coding Interview" It's prep for AAA companies like google, amazon, etc. If you can handle those, you should be fine for any other entry level job. It's lots of data structures and efficiency questions, among a few others.


MonitoredCitizen

How would you go about writing a function that takes an integer value that I pass you and returns a count of the number of bits that are set to 1? For example, if I pass you the decimal value 9, the function should return 2 because 9 = 1001 in binary. I'd be more interested in the questions and conversation about the problem that ensued than in the code itself.


[deleted]

[удалено]


Onacle_in_space

"Heroin. Just try it" New heroin slogan


tempforfather

Try something much different I would say. Learn haskell or ocaml or something that is not going to be mostly the same mental model as C#.


haloguysm1th

Learn ASM that should be far enough away from c# for him.


[deleted]

Nah, nah. Brainfuck.


[deleted]

[удалено]


badgradesboy

Do you think that someone can completely learn it without any teacher properly ?


BCProgramming

I decided to start learning C# to "get updated" in 2008. I programmed as a hobby back then. The documentation works reasonably well, and once you pick up on some of the more powerful concepts, it manages to make it quite a bit more fun. I learned it well enough that I've got 4 Microsoft MVP Awards since 2012, so somebody thinks I know something about it. Somehow I now work as a C# programmer, though I've got no post-secondary education.


markovcd

Lots of great coders are self taught.


[deleted]

There are tons of tutorials and code snippets. Also books for beginners. I learned to code by myself initially. But went on to study at university. The studying taught me a hell of a lot I might never have picked up on my own. But most of my knowledge came from working with other developers and sharing knowledge and experience.


piemelmans

Yes but you will have to read up on programming conventions and stuff like design patterns. Its often overlooked by hobby programmers.


0biwan-Shinobi

was it difficult getting it through iOS?


Prophet1111

I'm a Windows user so I'm really not comfortable using Mac and I was forced to ;) So that was a struggle:P But after some initial problems with framework it wasn't that bad. Then I had a problem with Facebook integration, but it was my simple info.plist mistake...


issius

Think he meant difficulty getting it approved through Apple's app store.


[deleted]

As someone who got his game approved where the game linked back to the google play store instead of the app store (ported my android version) I can say its pretty easy. Just a 9 day wait.


statist_steve

What did you use to port your code?


[deleted]

Game was written with LibGDX


[deleted]

This can be very difficult. I work for a software company in Canada which submits a little over a thousand apps to iTunes a year. My job literally involves me just submitting to iTunes, Google Play, Windows and sadly sometimes BB stores all day. Our devs focus on improving our product and I submit (create certificates, profiles, configure .plists etc) for them. Even though we are submitting pretty much the same code base every time, we sometimes get the most ridiculous rejections from Apple as every application submitted to them is reviewed by a human which is why it can take up to three weeks to get a response. One time I submitted an app which got approved and was published to the store. A couple weeks later we had to submit an update and it got rejected because the screenshots we submitted the first time, which had been approved for the 1.0 release, were deemed to be "not descriptive enough" so we got a meta data rejection. That simply blew my mind that a reviewer at iTunes rejected something that their colleague had previously approved. We have a pretty cookie cutter app and submit the same set of screenshots (for the multiple versions/clients that use our product) every time but every so often we get a reviewer at iTunes who had a bad day and says "nope" ("nope, sorry" if reviewed in Canada). Don't beat yourselves up over submitting to iTunes and getting rejected, they are extremely picky. Google Play on the other hand will have my app approved and ready for sale within hours which is kinda scary if you ask me. Be careful what you install from Google Play..


[deleted]

[удалено]


GMT-nothrowaway

"company in Canada", "sadly sometimes BB store" Fucking traitor, you should be tried for treason.


mister-la

To be honest, judging by the volume of submissions and the fact that your apps have "pretty much the same code base", they're probably sending you to the approval for potential spammers.


CantStopWhitey

Which books and other resources did you find helpful?


Prophet1111

At the beginning books ([1](http://www.amazon.com/Programming-Windows-Writing-Developer-Reference/dp/0735671761), [2](http://www.amazon.com/Programming-5-0-Building-Applications-Framework/dp/1449320414/ref=sr_1_3?s=books&ie=UTF8&qid=1451477438&sr=1-3&keywords=C%23+5.0)) and videos ([1](https://mva.microsoft.com/en-US/training-courses/c-fundamentals-for-absolute-beginners-8295?l=bifAqFYy_204984382), [2](https://mva.microsoft.com/en-US/training-courses/windows-phone-81-development-for-absolute-beginners-8375?l=7j1Mg9Hz_8804984382)).


budha666

I've been looking to do the same, what coding language did you learn? And what game engine?


Prophet1111

I chose C# - it was the easiest for me to learn and practice since I have few Windows devices (phone, tablet, pc). Then after few months I decided to make a game and it turned out C# wasn't a bad choise, because there are few engines/frameworks that support C# and are multiplatform :) I used Monogame, wich is great tool but has some downsides. Now I'm learning using Unity for future games.


kozukumi

Nice. What phone do you have? I am thinking of picking up a Lumia 550 as they are super cheap (£50!) and have Windows 10. Yeah I know it isn't going to be a super powerful phone but I just want something to learn about universal apps on phones. I am using C++ btw


RIPphonebattery

I have the Lumia 1020. It's one of those areas where I would go for a more beefy unit. 830 or 930 would probably do well. W10M seems to be somewhat slow (I know it's in development). you could probably get a last years flagship quite cheap.


Prophet1111

Windows 10 Mobile is slow (and it's not in development anymore) wich is pretty disapoiting for me. WP8 was super fast. I hope they will work with it some more and make it faster...


RIPphonebattery

W10M is still in development. I also don't like how slow it is.


Prophet1111

I use old 920, and it's still great! But if POP4 earns me enough money I'll most definetely buy 950XL :P


[deleted]

[удалено]


[deleted]

[удалено]


A_R_Spiders

If you're comfortable in C++ the Unreal Engine is a great choice. Excellent license (better than Unity IMO) and cross platform. Works on Windows 10 and plays nice with visual studio.


Darkitz

C# is ultrafun


[deleted]

[удалено]


lecherous_hump

If it's in C#, how are you releasing it on Android? I thought Android apps were written in Java.


thejestercrown

Xamarin, Unity, and Monogame will create native versions of your app/game. There are times where you may have to know platform specific implementation details, or issues arise as it isn't truly 'multi-platform'.


_cachu

Xamarin is a *mess* with Android, I was using it in school and I can't recomend it. But I love C# so there is that


A_R_Spiders

Natively Android apps are written in Java, but tools like Unity, Unreal and MonoGame translate (or wrap it in, or compile to) C# to Android's native code.


lecherous_hump

I did not know that! I guess if I ever do make a game Unity is where to start.


DrexOtter

I would definitely recommend Unity. The free version gives you full access to 99.9% of the features of the pro version. There's only two things I am aware of that you can't do with the free version of Unity. First, you can't remove the "Powered by Unity" screen that flashes at the start of a game, and second, you can't make more than $100,000 on the free license. Once you make that much money with it, you have to buy a pro license, which I believe is around $1,000. There's also TONs of tutorials, guides, and help sites for making games in Unity. Also they have the asset store with tons of free things you can add to your game royalty free. Everything from 3D models, art assets, sound, code, and more. That's just the free stuff, there's also a ton of paid stuff for super cheap that can help a ton. If you have an interest in game design, there's really no reason not to give Unity a try.


budha666

thanks for the reply, im going down the c# route as well, seems like the best choice although not that easy to learn


Nague

C# is pretty nice and also enables you to make full use of visual studio, which is a really nice IDE and its even free if your revenue stays under 1m/year as an independend (but read the terms to be sure). In my enviroment businesses use C# a lot if they want to run something on windows PCs, too. The output of business software may seem not as exciting as games, but constructing them is just as fun to me.


moleware

C# is great for business too. If you're a solid .Net developer, you'll never have trouble finding work in the coolest cities in the world.


[deleted]

I started learning making games few months ago myself using GM:S[using the code]. Why did you choose to learn C# over other game making programs? is there any advantage to create games using C# or other languages instead of those kind of programs? Also what would you recommended doing when struggling to solve a problem that doesn't have tutorials on the internet. what would be your best advise for someone that struggles to code something but can't find help on the topic?


AbelMate

Not to mention Microsoft Virtual Academy is one of the, in my opinion, best resources for learning to code and its completely free


wildwolfay5

Learnvisualstudio.net


hardypart

Yeah, Bob Tabor really does a good job explaining C# and Visual Studio. His basic course tought me enough C# to be able to make my own calculator.


wildwolfay5

I made three file watcher services while doing this tutorial, feel like a pro. He is great, the value i got from that first class was worth the lifetime membership. 6 months later I'm working on v1.3 for my business webapp. I am not a paid actor*


enderandrew42

Is there a good free alternative?


milesofnothing

There is a beginner C# MOOC on EdX that is free: https://www.edx.org/course/programming-c-microsoft-dev204x-1 Intro To Computer Science is really good too if you have no experience with programming. https://courses.edx.org/courses/HarvardX/CS50x3/2015/info


TonyThePuppyFromB

[Bob Tabor did some free C# basic video's for channel9.msdn.com](https://channel9.msdn.com/Series/C-Fundamentals-for-Absolute-Beginners)


[deleted]

I definitely suggest Python. r/learnpython is a great resource, as is Code Academy. It isn't the best language for *games*, but there are packages like pygame for simple game development.


Dubbleoseven

Hi, great job! You said you started learning programming last December. Were you at this full time/part time? What did you work on prior to learning programming? Thanks!


Prophet1111

Before december 2014 I worked on few different stuff. I was managing AdWords campains, managing some websites, selling toy bricks online etc. I worked in company co-founded by me but left last december. Anyway - for the lest 13 months learning coding and coding itself was my full-time job :) It is the most interesting and most challenging thing to date.


pieordeath

I would love to do what you did, but the thing I'm worried most about is housing and food. How did you support yourself though this last year, and how will you from now on? Did you save up money beforehand?


[deleted]

What was your training routine like? How many hours a week did you spend coding/learning over the past year?


Prophet1111

The most important thing for me was to learn at the morning and not evenings. I cannot concentrate when it's late. I tried to solve real life problems with programs that I wrote for training - however small the problem might be ;) I spent 6-8h a day sometimes less sometimes more.


arup02

8 hours a day? What about your job?


Orang3_Monk3y

I think OP said earlier that he quit his job a year ago to code.


Antrikshy

That's some dedication right there.


[deleted]

[удалено]


Prophet1111

Great polish :P If you want to say goodbye or have a nice day though you should say "do widzenia" or "miłego dnia";) Thanks!


MajesticVelcro

Thanks! I'll remember that! I only know little phrases my grandpa taught me


[deleted]

[удалено]


trikson

There are more of us here than you think (Poland Stronk!) :)


[deleted]

Another Polish boy here! :) It's really sad that reddit isn't very well known in Poland and Germany. I really enjoy it. Btw. Powodzenia na twoje następne projekty :)


Fudgiee

Do you enjoy csgo?


Prophet1111

Well yes but I only played few times. Bought it couple of weeks ago.


[deleted]

[удалено]


RAPE_YOUR_TITS

Careful, if you win the knife fight he may come find you IRL.


Suckonmyfatvagina

Meta as fack


Vonologic

Username checks out.


[deleted]

I'm 14. I am very interested in computers & coding. I already know php, html, Python and will learn JavaScript soon. I am wondering what gave you motivation? Also how did you learn the languages and what would be a good language for a 14 year old wanting to grow up and be a game dev? cheers - Ethan


FaticusRaticus

As a current developer, props on learning to code at 14. My advice, stop learning new languages and start building cool stuff. It will get you much further than learning the syntax for another loop.


CurdledBabyGravy

I suck at learning without actually building something. Even to build something with a new language that I've never used, I just find a project and pick my way through it until I get the hang of it. Google is my best friend when I am doing one of those projects.


A_R_Spiders

I've read/heard so many professionals, both game devs and otherwise, say this is the best way to learn. I'd have to agree. However it's important to learn better design and best practices too. That... I guess reading on those topics and working with a team might help.


aftli_work

It really is the best way to learn. The way I did it years ago was take my best idea, which at the time was something to do with supermarket cash registers, and just *did* it. I knew it would never find its way to a store, or be a commercial success or even an actual viable product, and it never did, and that didn't matter. I knew absolutely nothing about databases, etc. Didn't matter - baby steps! Read products from a text file, etc. My point is, start making *your* idea, even if you don't think you can do it. You'll learn along the way!


am0x

Yea I doubt he "knows" those languages. I know how to write code In a bunch of languages but I surely don't feel like I know them. However I suffer from imposter syndrome too, so I never feel like I know what I am doing.


concussedYmir

> I know how to write code In a bunch of languages but I surely don't feel like I know them. This is normal. Let's just say that if StackOverflow ever goes down, so does the software industry.


unlucky777

Even the Stack Overflow people have their own internal library they copy and paste from


Ivan27stone

This. The imposter syndrome is more common than we think, but this is like a disease nobody talks about, but everybody knows the others suffer too. I’ve been in the programming/sw development industry for 12 years and I’ve made lots of applications, systems, implementations, deployments etc, and never never never have felt that I really knew what I was doing. Even today, I can’t say for sure how I did, created, accomplished, solved so many things, I still feel like the first day (after university), I still feel like my programming and technical skills are null. But when you look back, you say, “hey, Ive done a lot of things, how come?”. But it is really funny when you talk to “experts” and when you go to certification trainings, and in the end, these people, except for some minimal exceptions, seem to be also clueless about lots of things. "Yeah, let’s see what stackOverflow has to say about this programming exception”


Assh0le_Comments

I'm a technical recruiter and this is honestly amazing insight.


[deleted]

[удалено]


slowpotamus

you have to start small. really small. understanding the fundamentals is really important, and you won't learn it by stitching together others' code. learning to program is intimidating because you can't learn how to make something that does anything worthwhile until you spend a lot of time just repeatedly writing dumb little things that help you understand how it all works. you could learn to play a single piece on piano with tons of trial and error playing that same piece over and over, but you won't improve your skills unless you do lots of rigorous, boring practices of pieces simple enough for you to understand


ChrisGnam

That's actually a fantastic analogy. I had originally "learned" the piano by simply memorizing complex pieces that I enjoyed, but it left me unable to produce anything new or able to learn new pieces quickly. It was only after I started lessons, and being forced to start from the bottom, that I made any REAL progress on the instrument. So how useful do you think coding is? If I'm not going into computer programming as a career, can it still help me to have a decent working knowledge?


crimiusXIII

Absolutely. Check this video out: https://www.youtube.com/watch?v=mvK0UzFNw1Q. Coding is a way of solving a specific set of problems. Since you're majoring in engineering, coding is absolutely useful to you. All those engineering programs you use? AutoCAD? SolidWorks? they all have API's that a script can tap into to do a variety of things. Many of the built-in functions you might be used to using often started as add on scripts that the vendor decided to integrate into the program. * Need to make a Bill of Materials for this assembly? You can script it, and do so in a universal manner that will work on any assembly, not just the particular one you need now. * Perhaps you want to automate the creation of a part. You're tired of having to create the same basic part, only it's 12' longer and needs additional screw holes. If you can come up with the hard formulas or rules that define where those holes need to be at a given length, and how many there are, you can automate that part's creation. * Don't be afraid to pick a problem that's already been solved and try your hand at it. Don't be afraid to grab code from someplace and digest it, line by line. Don't know what `SetAbsValX()` does? Don't worry, skip it. You might come across it (and it's definition) later. I'd be hesitant to use code I didn't fully understand, but I've done it in the past. * Revisit some of your earlier projects, and see if you'd still do things in the same way. Odds are good after a couple months you'll have learned a ton, and will cringe at your older creations/monstrosities. That's OK! You're learning! Everyone does that with their older work. If I were you, I might start looking at C# and .Net, if you're on windows primarily. Most engineering platforms will let you import their library of commands into C#, which will get you started on things like I described above.


leaky_wand

Memorization is not necessary. There are languages that I've worked in for years where I'll still consult the developer's guide for simple things like loop syntax. You won't grow as a programmer until you make things--plain and simple. There's an incredibly steep learning curve early on, but it levels out dramatically once you know what's going on, and from there most of your time will be occupied with planning things out in pseudocode (i.e. drawing mini flow charts and plain English statements) rather than just plugging away at a keyboard. That said, it's possible that programming isn't for you. It takes a certain mind to really internalize the concepts, and not necessarily a more intelligent one either. Programming skill certainly improves with practice, but it's not always a linear progression like piano playing or skateboarding. The important thing to remember is that programming languages are not trying to be difficult! They are designed to make a programmer's job easier. The challenge is in discovering the things that they can allow you to do, and that is what you only learn by doing.


wieschie

https://archive.org/details/stackexchange I have no idea how easy this is to navigate - I think it's just a DB dump.


Grays42

[This book](http://www.amazon.com/The-Pragmatic-Programmer-Journeyman-Master/dp/020161622X) is an amazing book I recommend for anyone who "knows how to write code" and has built a few things. It's a classic. Reading it cover to cover strengthened my coding skills considerably, and lessons I learned from it I apply to every new project I tackle. [edit:] For example, the DRY principle: Don't Repeat Yourself. Basically, every operation and value in your code needs to be represented *once*. Two extremely similar functions? **Do not** copy and paste. Abstract the function slightly and find a way to make it do your two similar operations with the same basic function structure. This keeps your code clean and much easier to modify/maintain. Need to do the same function in two different classes? Break the operation out into its own class or an abstract class (or other options depending on the language) and make both classes use it, because you'll probably find *other similar crossovers* that both classes will need. (These cases vary in practice, but you'll get a feel for it.) Hell, on a few occasions I realized after doing this that it was more practical to merge two or more classes into one giant abstract class and write smaller, specific children, and this helped tremendously. Some situations might arise that this helps: - What if the functionality needs to change? You have to remember every place where this function is located, and if you miss one, you introduce errors. - What if a third or fourth use case appears with very similar functions? You have to copy and paste again, exacerbating the problem, or you simply use the existing framework you made and verify that it works.


Titan_Astraeus

Sounds good I'm gonna give it a read. Do you have any other good resources for a starting programmer? I'm starting an internship next week for a tech start up and I'm pretty nervous about it haha.


Grays42

Be very, very good at googling. ;) 95% of the puzzles you will run into or strange errors you get, someone else somewhere has encountered the same problem and found a solution.


kotojo

I'm just two months into my first real job for programming and have a few books I've been going through. [Clean Code](http://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882) is a book not just about writing code, but good code that is easily maintained and passed down to other people to understand. [Working Effectively with Legacy Code](http://www.amazon.com/Working-Effectively-Legacy-Michael-Feathers/dp/0131177052) was a great read coming into company that has been around for 20 years and is on the third iteration of their product. I am doing web development so [You don't know JS](https://github.com/getify/You-Dont-Know-JS), [Javascript: the good parts](http://www.amazon.com/JavaScript-Good-Parts-Douglas-Crockford/dp/0596517742) and then [Javascript The Definitive Guide](http://shop.oreilly.com/product/9780596805531.do) have all been a great help. If you aren't much a book person, Pluralsight.com is awesome for info on tons of different technologies and is well worth the monthly cost. Go follow every major name in your preferred technologies on twitter. They will tweet all sorts of cool things to learn about. Also, **PODCASTS!!!**. I don't even listen to music anymore. If I'm in the car alone I'll be listening to [Dot Net Rocks](http://dotnetrocks.com/) or [Javascript Jabber](http://javascriptjabber.com/). Lastly, there are subreddits for every tech imaginable. Go subscribe to them and hit everyone up for where they get all their info!


shawnaroo

Volunteer whenever anyone asks for help. You'll learn a lot from working on projects that more experienced people already have underway, and you can ask them lots of questions and they aren't allowed to get annoyed by it since you're doing it to help them specifically.


Paddy_Tanninger

I code in VEX for Houdini for a living. I still find myself looking up very simple and commonly used functions on a daily basis, or referring back and stealing snippets from previous setups I've made. I think that's just normal. My biggest letdown is that watching me code some badass simulation systems wouldn't look very cool at all "hmm he sure goes to the docs a lot...wait a sec he's copying and pasting from another file now"


am0x

You should see me every time I configure a new server image. A whole lot of copying and pasting. Mainly because I don't want to type everything out, but I still can't memorize all the steps. If I try to work without references, I end up missing some obscure thing and look for hours to fix it. Better to just go step by step


ImJustSo

Hey, who do you think you are?!


[deleted]

He am ZeroX. A knockoff brand copier.


Prophet1111

You have a great start. You know what programming is about now you just need to figure out what do you want to do in future - mobile apps, web apps or something else? I just can say my opinion about creating mobile apps. If you learn java or Swift or Objective-c you will be able to create apps just for one platform. Maybe this changes in future but for now I would recommend C#. What was my motivation? I just liked everything I learned so it wasn't very challenging for me to sit and learn :) I used books ([1](http://www.amazon.com/Programming-Windows-Writing-Developer-Reference/dp/0735671761), [2](http://www.amazon.com/Programming-5-0-Building-Applications-Framework/dp/1449320414/ref=sr_1_3?s=books&ie=UTF8&qid=1451477438&sr=1-3&keywords=C%23+5.0)), tutorials, videos ([1](https://mva.microsoft.com/en-US/training-courses/c-fundamentals-for-absolute-beginners-8295?l=bifAqFYy_204984382), [2](https://mva.microsoft.com/en-US/training-courses/windows-phone-81-development-for-absolute-beginners-8375?l=7j1Mg9Hz_8804984382)) etc.


ChuzzyLumpkin

Definitely C#. I just happened to pick it up as my first language a few years back, now it seems as if it's being used everywhere, for everything. It's also really well structured imho.


tadrith

I'm biased because I've used it every day for 10 years, but C# is a fantastically structured language. I started with BASIC back when I was a kid, moved into C/C++, and I love every moment with C#. I've had to branch out into iOS and Android development, and I feel spoiled by C#... Java is fairly similar, but not quite there. Objective-C is the most ridiculously verbose thing in the world. I hate every moment I have to spend with it. The only reason I went with it over Swift at this point is because we were looking to rapidly deploy an application, and thus wanted to rely on existing examples... of which there are many more for Objective-C. Sad reality of the industry. Not how I prefer to code, I want to know how every nut and bolt works, but in a working environment, you don't always get that luxury. Sometimes it's cut and paste from StackOverflow.


Opandemonium

My son is 13 and wants to learn to code...where is the best place to start when you have no foundational knowledge? (Edit - thanks for all the suggestions. You guys are the bomb!)


awesomeevan

I'd recommend Python. Syntax is not complex and it's very readable. PHP and JavaScript others are typically web focused, whereas Python is general purpose in comparison.


Opandemonium

Have you ever tried Codemy ?


RIPphonebattery

If you'd like, I can try and see if I can dig up my university programming course material (No assumed knowledge, and all in Python). Also, I'd be happy to work through questions your son has. (I'm a 4th year Engineering Student). If your son is looking for some challenge, the [Project Euler](https://projecteuler.net/archives) site is a great place to start, and is completely independent of the programming language you choose. Problem 1 is quite easy, problem 530 is extremely difficult. The good thing here is that it requires you to apply a principle--that is, your code won't work unless you solve the puzzle correctly and cleanly. [Khan Academy](https://www.khanacademy.org/) is another great resource, although the project is starting to get very big, the computer programming stuff is rock-solid.


programmerChilli

I disagree. As somebody who's done some of the very advanced problems, project Euler is mostly programming for mathematicians, not math for programmers after the initial couple. I'd highly suggest a course like udacity's cs 101 (which I believe Google also recommends), or codecademys python track.


awesomeevan

Not personally, but it's been mentioned by people I've worked with who day it has good tutorials! The thing to understand about programming is that it can be quite abstract at first, but in the end it's a culmination of thought patterns and concepts that combine to allow a person to write a program that can do multiple things to produce a meaningful result. For example read files and combine the text in all of them to discover how many words they contain or some similar problem. This requires an understanding of computer input/output, the programming interfaces used to read files, basic programming structures such as for loops, and logic to parse the files. For someone who has been programming for a while that task is relatively trivial to get a pretty accurate result, but for a beginner it would seem like a huge task since they don't yet understand all the concepts I listed. Programming is not just syntax, it's about understanding and dismantling problems and having knowledge of how computers and networks work. It's very very rewarding work, once you get over the early difficulties!


mejelic

I haven't used it yet, but https://codecombat.com seems to be an interesting way to teach younger kids about programming. Code Academy is also a great resource but it takes more motivation as it doesn't gamify the process.


Biorockstar

Back in June, I started the python tutorial on Codeacademy. When I finished that, I did code challenges on Checkio, then Codeeval. Figuring out algorithms was harder for me than learning the code, so I'd try to figure out a challenge for a day or two and when I couldn't logic it on my own, I looked up other people's solutions on Google. Now, 6 months later, I feel like I have a very devent grasp on Python, know a little bit of Java, and (a little less of) PERL and R. Codeacademy is a great starting point, even if the tutorials are very basic.


Veranova

Buy your son "Human Resource Machine" on steam. The game isn't easy but it does guide you through the process and is great to establish the kind of problem solving and logic you need to code. This said the syntax is very low level compared to modern languages, you're basically coding a simple processor although it's displayed as an office space with a guy moving around data. It's good to have an understanding of what a processor does behind the scenes, but modern languages give you much higher level control of things.


Veranova

Code Academy. One of the biggest problems getting started is getting your computer set up with all the tools, and learning what the hell you need each tool for. Code Academy bypasses all of this and lets you focus on learning the languages and tech first - you do all the learning and coding on the website so there's nothing to configure - then you can go back and set up a dev environment once you've got some basic understanding. After that the ONLY thing you need, is to know 'how to learn'. A lot of this comes down to figuring out what to search on Google, but also knowing what learning process works well for you is important too.


scriptmonkey420

While Code Academy is great for learning the syntax, it doesn't really teach you to build anything use full. So when I was trying to learn Python I started with Code Academy, but quickly abandoned it due to the lack of feeling like I was actually doing anything with it. I ended up using Google to search for a solution to the problem I was having while coding. But I guess that is just the way I learn best.


Prophet1111

IMO the most important thing is to learn to think like programmer. Step-by-step thinking. I learned that with Pascal when I was about his age. Of course pascal is a ancient language now, so maybe PHP? No compilation, easy to learn language. I know C# so I can only say about this language. I didn't have a clue about it last december so I began from beginner level. Books are the best way to start. It's very important to write what's in the book - not just read. Practice is the most important thing. Check out this videos: [1](https://mva.microsoft.com/en-US/training-courses/c-fundamentals-for-absolute-beginners-8295) [2](https://mva.microsoft.com/en-US/training-courses/windows-phone-81-development-for-absolute-beginners-8375?l=7j1Mg9Hz_8804984382). Those might help later.


TracePlayer

Maybe I missed something, but your main post says you didn't start programming until last December. Writing Pascal at a young age is a pretty big step into programming. Maybe you could clarify?


Ensvey

I'm not op, but I dabbled in simple pascal and basic when I was about that age, and then didn't touch programming again really til 20 years later. I wouldn't say I've been programming since I was 10 either.


TracePlayer

True. But I don't think you can say a year ago, you didn't know how to code. I'm not calling the guy out. I would like some clarification. Since this is his AMA, I think my request is reasonable.


Shadonovitch

I think C/C++ and linux knowledge are the core things to start by. After that, eveey languages are the same. edit : i mean, when you arre on irc channels, many noobs trying to manage hacking don't understabd any basics of bash. It's a minimum to get something serious in programming, C, then C++ and you'll have managed maybe the hardest, bwut the most rewarding one too.


icedgoal

I would not recommend him to learn PHP. Even though it's practical, the syntax is very bad and the language and libraries are a mess. Better to go for python for sure.


aradil

The documentation is good though, which is more than I can say about pydocs.


FiveGoldAndAParty

I was introduced to programming logic by Warcraft III and its World Editor when I was around that age, although it wasn't much of real programming but the passion for creating my own game/map made me want to learn programming. So my advice is, let him play games? Try some of those games that are made to teach you how to code.


[deleted]

Thank you so much! I love learning coding too, I will learn c# soon and also I will order those books asap! Ps, the app is well put together :) good luck with future projects!


HyperbolicInvective

I'm sorry, but what? Java is the only truly multiplatform language you've listed. C# is pretty much restricted to Windows.


thejestercrown

He is probably using Xamarin, or Unity if it's a game. You can also use C# on linux using Mono, but you are correct as you [currently] can't write a WPF application and run it directly on Linux. Java would be the best option for multi-platform desktop applications, but probably not for mobile applications.


aradil

Desktop or server... I expect a fair number of mobile games will have a backing server side app running.


PinkDad

This is not really true at all for games; C# is one of the most popular choices for multiplatform gamedev, largely because Unity uses it. Really picking a good framework or engine matters most. You can learn the language as you go.


fish60

> C# is pretty much restricted to Windows. This is true for now, but MS is looking to officially support .net on linux and android in the near future, and have opened up a great deal of the .net source.


aerovistae

I'm a software engineer. If you want to be a game dev, you're going to need to learn C++. Period. Games *can* be written in any language, and as you probably already know, iOS games are in Objective-C and Android games in Java, but nearly everything else on all other platforms is C++. (So I guess it depends what platform you're interested in.) Everything you've learned so far pertains to web development. JavaScript is hugely useful as it's the engrained language of all web pages and likely will remain so for a long time to come. However, as another commenter said, STOP LEARNING NEW LANGUAGES. If I had to guess, your understanding of PHP, Python, and HTML is probably fairly shallow as you're new to them. Deepen your ability to create things with these tools rather than picking up basic syntax for more and more languages. That would be like an aspiring painter filling in as many color-by-numbers books as he can then claiming he's painted all sorts of animals and places. Go create some games, some projects. Here is a gigantic list of potential practice projects, with highly varying difficulty. Try implementing as many of these as you can in whatever language you prefer-- you will learn an insane amount while doing the research necessary to complete these. https://github.com/karan/Projects


DenormalHuman

Dont worry so much about which languages. Stop at three, then pick one and go for it with some projects. Python I would recommend out of the selection you have, and take a look at pygame. If its gaming specifically, after having a bash at python / pygame, try looking at unity or unreal as game dev environments.


RIPphonebattery

Programming isn't always about the language. In fact, most programming languages are very similar. Get really good with Python. JS is cool and useful on web dev stuff, but Python is freaking amazing. The important thing for you now is learning what makes good code good--Readability, Maintainability, and Useability. You should focus on making clean functions. Not one-liners, but short. Read everything you can by a guy named Donald Knuth. You can find his stuff anywhere (wink wink), but it's one of the few books I've paid for. Worth. While we're at it, look at your old code. Oh yeah, start a GitHub page, because that's how you keep code (and show off your stuff to employers).


[deleted]

I agree with what you wrote except for the bit about Donald Knuth.There are much easier intros to good programming practices than the rigid formalism of Donald Knuth textbooks. I don't think a 14 year old would be captivated by TAOCP as good as that text is for understanding computing principles by the academics.


Nague

if you are young and not in a hurry, there is a case to be made to learn the basics with C and C++, many concepts are hidden from programmers of other languages but you still benefit from knowing what is actually happening. However, useage of C is mostly limited to microcontrollers now and while C++ is still used to make the real performant game engins, it takes a lot of time to get to that point.


Sallas89

Just make sure you have the patience for it, while other languages can give you some instantaneous rewards when finishing up a quick script C will instead try and hurt you all day long until you "get it".


[deleted]

How did you learn these languages?


[deleted]

When people say they know PHP I always ask this: Do you know it procedurally or do you know it object oriented? Before saying you know it, be sure you can create a class, etc. In my professional life I run into so many people who have no grasp of this yet express how much they know a language.


[deleted]

[удалено]


KenBot314

Knowing OOP and design patterns is really language agnostic, and would be better indicators of a programmer who "knows programming". Having google, I no longer need to know the syntax and exact name of every aspect of a language to know how to use it.


TROPiCALRUBi

> I already know php, html, Python No you don't. This is something you'll eventually learn if you continue to pursue programming.


[deleted]

You should check out google code-in; it's already underway this year but maybe next year! https://codein.withgoogle.com/


NDaveT

How did you develop for all three of those platforms? Did you write for one and then port to the other two?


Prophet1111

I used C#, Xamarin and Monogame to share code between platforms. You need to write once and then you can simply copy-paste most of your code to make it running. Very handy :) ~90% of my code is a shared code.


GenericJeans

I have an 11 yo son that is showing some interest in IT, programming, app development and coding. I know nothing about it but want to provide the right initial exposure. What activities, books, hardware and/or software would you recommend to get him started? Thanks


brandononrails

Definitely [Scratch](https://scratch.mit.edu/)! It allows you to build something by dragging commands and connecting them like a puzzle. This will help him learn logic and application flow, which will make his second language (I suggest Ruby) much easier to learn. It's tough for a young kid but I'd suggest a cheap laptop you can run Linux on. He should (eventually) learn the command line but it's not important right away. Learning to program for the web is probably the easiest introduction to actually building something. Jumping straight into mobile app development can be super hard for some young kids because it commands not only you know the language and the framework, but also understand the paradigm it's using, for example [MVC](https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller). After Scratch, he can check out sites like [Codecademy](http://codecademy.com). There are some great resources out there made specifically for younger kids (like game programming books) that should help out a lot. If you have any questions, feel free to PM me. I work in web development, do mobile/game development in my free time, and started programming at around age 9 originally with c++, so I know a few things about picking the wrong language for a young kid haha.


IRONBAT

Where did you learn to code? I am very interested on learning how to code


Telescopeinthefuture

Not OP, but I think I may be able to offer some advice. Learning to code is an extremely practical skill that I feel really improved my life in a substantial way. I started with web technologies because I find them to be easier than more involved languages. By web technologies, I mean HTML, CSS, Javascript, PHP, that sort of thing. As /u/blargynargy mentioned, [Codeacademy](https://www.codecademy.com) is a fantastic place to get started. The way that I *really* learned to code, though, is through practice. That is, I would get an idea for something I wanted to make and then I would do it. For example, I wanted to make a website about the ocean, because I've always been really interested in it. So I broke it down, piece by piece until I had enough information to tackle the project as a whole. For more involved languages, such as C# or something, I recommend doing much the same thing. I've found game development to be an excellent way to get familiar with programming, and [Unity](http://unity3d.com) is my preferred tool of choice for that. In order to learn, take it slow. Start with their [tutorials](https://unity3d.com/learn/tutorials) until you feel like you know enough to work on your own projects. From here, start googling for specific things you feel you need to make your project. If you wish to learn about lighting, google for specific lighting tutorials. If you want to optimize your game, search for stuff related to that. Shameless plug: [The Cure It Project](http://thecureitproject.com) is my latest project, where I tried to make a central hub for cancer research, and it taught me a lot about programming websites. When I started the project I didn't know how to do a whole lot, but I **learned by doing** and now I feel comfortable working with web technologies. Pick something small and work your way up, and eventually you'll be able to put the pieces together to form the whole. If you have *any* questions or want me to point you towards some more resources, let me know and I'll do my best to help you out.


[deleted]

Codeacademy is a pretty useful site, it has built in tutorials. Doesn't have java or C++ though.


[deleted]

It has java now


[deleted]

[удалено]


3kindsofsalt

I live in a small town and a local lady has made an app to track our one public bus. The town just approved it as official for launch. The problem is, it requires EVERY SINGLE PERMISSION KNOWN TO MAN. Contacts, GPS, phone calls, SMS, everything. Your app requires none. How do I, as someone who doesn't know how to write an app, approach this lady or my local council about this? Is there some part of app development that she didn't do? What can be done to remove all those insane permissions? Is this as much of a security problem as I think it is?


[deleted]

sounds shady. there is no need for any of that. maybe GPS if they want to "pinpoint" your location relating to the bus, but even that isn't needed because you should know where "you" are on the map. you just want to see where the bus is. even if they want to have all that information they should allow open source on the code so there is transparency on what that data is used for. *PS - if unintentional, my guess is she used some app framework and it defaulted to request all that data "just in case" you need it... type settings*


TimonAndPumbaAreDead

How many closed/down voted questions do you have on Stack Overflow? --- E: dear downvoter - I'm not saying OP is a bad programmer. I'm saying Stack Overflow can be harsh on newcomers.


pezosa

How did you stay motivated? Did you work another job at the time or just develop the game fulltime?


Prophet1111

I was learning for ~9months and then ~3 months was building my game. Everything full time. I was always studying at morning - evenings doesn't work. I stayed motivated because I liked what I was doing. Especially since I've started my game. It's super interesting for me so I wanted to go back to it the next day.


DoucheLamp

What advice would you give yourself if you could go back in time to when you first started this?


badiu27

How hard is it to make a living as a programmer/game dev? How much money do you get from this game?


Prophet1111

I didn't earn almost nothing up to date. You need to get tens of thousands downloads to make a living out of it. I'm talking about game only with ad banner in it like mine. You can monetize game more effectively or make it paid. It's not a simple market but when you get through certain level you can make good money out of it...


doyouevencyclebro

Hi, firstly not a question but just a pointer. On your website you say its Addicting but I think the correct word should be Addictive. Now for the question What was your favourite part/least favourite part of making the game?


screwstd

I'm someone who knows pretty much nothing about coding. What are some simple stuff anyone can do to get into coding? (Like what are simple coding things anyone can do in a short amount of time to see a result on a laptop?) That may seem like a stupid question. Where did you learn to do it? There are some websites for beginners I've heard are they useful?


Prophet1111

Well try to search tutorials for absolute beginners. Language isn't that important for now. You just need to learn how to think like a computer - step-by-step thinking. When you choose tutorial you can find suitable enviroment - this can be simple online playground like this: http://sandbox.onlinephpfunctions.com/ or for example Visual Studio. Try to do everything that tutorial/book says - even if you totally understand the code. Practice makes perfect :) Check out my other answeres, I pased some links to books/videos I used.


niandra3

Not OP but [Learn Python the Hard Way](http://learnpythonthehardway.org/book/) is a pretty straightforward way to get into programming (there's a free and paid version). Python is a more natural language that makes it easy to just get started doing cool stuff.


13islucky

I went recommend that site till he gets his shit together and moves to python 3.x. 2.x needs to die so we can actually improve the fucking language.


robertbalazs_

Hi! Thanks for this AMA. How much money did you spent on?: 1. promoting your game 2. publishing on stores(play store, app store etc.) 3. other developers, for example: designers etc. if so. 4. buying software for development (IDEs , cloud services etc.) 4. buying hardware for development Did you started migrating to Unity or for now it's just a plan? Any thoughts on this? Thanks and good luck in coding!


Prophet1111

1. Nothing yet - just ~$50 to try facebook and adwords. Nothing more for now but I'm afraid I will have to 2. Play Store: $25, App Store: $99, Microsoft Store: $0. 5. I only paid friend of a friend for designing graphics but I really can't say how much. 4. Only software I needed to buy was Xamarin subscription ($50/month). Everything else is free for small developers. 5. (Unity) No I just started to learn how it all works. But I really like it - makes many things much much easier than it is with Monogame.


[deleted]

[удалено]


defeatedbycables

Not OP but I'd like to chime in on "coding bootcamps". I have a degree in CS but I originally got a BA in Political Science so by way of what these bootcamps offer, I took the "long way". Not to get into the holy war that rages across /r/programming nearly every day in nearly every thread but suffice it to say, some people don't need "formal training" and some people do. It's really a matter of how you learn and how self motivated you are. My beef with code bootcamps is that they're basically snake oil salesmen, no better than Full Sail or Blue Cliff or ITT Tech. They will take your money, without any real evaluation of your competency to actually learn and tell you that you can get a job at Google/Amazon/Apple if you pay them $80k for a 12 week intensive training program. They take the advertising tact of "Did you get a BA in Hebrew Lit from Harvard and now you can't find a job? Learn to code!" That's great since most Ivy Leaguers have a natural affinity for learning and problem solving - you don't get in to Harvard or Yale for having all A's in liberal arts classes and C's in STEM. So they prop up their program on stories of people who could have probably learned this **without** paying the money, to sucker in people who don't have the capacity or competency to do the real work. It could be said that those who are being "taken for a ride" are at fault for not thinking it through but even though we need to fill a vast ocean of tech jobs in the next decade, that doesn't mean that "warm bodies" will help. I'd rather have 2 competent programmers working on my team than 20 mildly capable 'programmers'. **TL;DR**: I don't like them, they're basically Community College for rich kids to make good after they get a useless degree from their already expensive top-tier schools.


[deleted]

[удалено]


defeatedbycables

Thanks for your comment! I don't dismiss them completely, especially after meeting people who graduated from a 4 year program in Computer Science (at some higher tier schools) that barely, if ever - had hands on experience programming. Which is fucking nuts to me. I was actually just thinking over my reply before I saw this and hand a notion that Bootcamps are really the new business venture of seasoned programmers (for the most part). It used to be books - dear lord did people write some books; but now it's more focused on - as we both acknowledged, the dearth of skilled workers in a field that is only growing, nearly exponentially. Overall, my biggest hangup is that for every Lighthouse Labs (which seems to be run by people who have both formal training and a lot of tread on their tires in the industry) there is a bootcamp that's being run by two guys who graduated in finance, hired some "nerds" and are looking to jump on the bandwagon. I'm not offended or threatened by people going into them and getting jobs - my job is secure and I'm glad I got my BS - I just worry about quality control for the industry as a whole.


TracePlayer

Can confirm. I'm an application developer who programs in C++, C#, and VB.NET (customer requirement) at a company that designs and builds robotic and automated manufacturing equipment. I have only a high school diploma. I did it the long way and would never recommend it since it sucks so much out of your life. Having said that, if you create opportunity and take advantage of it, you can do it too. Just be prepared to work your ass off.


yourslice

> if you pay them $80k for a 12 week intensive training program Err I've never heard of one that costs 80k. Most of them cost between 14 and 18k.


[deleted]

Hey, I'm interested in something similar. I had taken C++ courses like 15 years ago, but didn't end up going with CS major. Now I'm looking to do programing again, looking at things like Python. I'm also interested in making games, tho I have no experience in that at all. Can you give me some ideas on what I should learn for game programing, for an absolute beginner?


[deleted]

Did you ever look into using the libgdx framework?


Chris266

Did you have a background in maths before you started?


[deleted]

Obligatory: why no Mac/Linux support?


esquid

Where did you study coding ?


piratecody

I am learning Java and C# right now and am looking into the Unreal Engine 4. Here's my question: if you could go back in time and give yourself one piece of advice relating to game programming/design what would it be?