Highest Rated Comments


EmeraldKnight92231 karma

We're also betting that the stigma surrounding adult gaming will be broken down over the coming years

Normalization is the key to breaking down stigma, and providing a common platform and the resources for indie devs to find success is a great step toward helping that.

EmeraldKnight9271 karma

As a computer science major about to enter my final year for my degree, I'm going to give my opinion on these online resources like codecademy:

These resources are really good for introducing you to coding, but that's really all they're good for--an introduction. They're like the tutorial levels of videogames. Sure, you'll learn a number of things that are absolutely essential for everyday gameplay, but you won't be learning the more advanced stuff and you won't be gaining that finesse that comes from hours of playing.

Hell, I went back and tried some of the codecademy tracks recently and found that there were some serious issues with it. Even if it can be relatively good for an introduction, sometimes it can't even do that well.

As the OP stated, it's best to take a project-oriented approach. Looking up the tools required to build a project and learning as you go along is a pretty good start for programming. There's nothing quite as effective for programming concepts as actually implementing them and experimenting with them. That tangibility can easily be the difference between scratching your head for a few minutes or days and scratching it for a few weeks.

And, as stated, reading and understanding the theory is essential. Don't just choose a data structure because you know what it is; read up on the different data structures, how they work, their strengths and weaknesses, and utilize whichever one works best for your given project. And don't just use any search algorithm; the difference between a linear search and a binary search on sorted entries can be the difference between searching through over one billion entries or searching through only 30--that's a huge difference in resource usage.

And, as my own personal addition, code your curiosity. Have you learned about a new concept and wonder if you can do something in particular with it? Try it. Fail if you have to, and look up how to implement the various components as necessary, but do it nonetheless. If you're sure it's possible but can't do it yet, then that's alright; come back to it after a month or two of working on other projects and try it again later. You might find that your problem-solving and coding abilities have gotten a lot better by then.

Hell, I did the above with a simply python script drawing a Sierpinski triangle some time ago. I originally did it with some simple dot plotting (just a simple for loop), but wanted to see if I could figure out how to do it by actually drawing the triangles (a recursive algorithm). I couldn't, for the life of me, figure it out. So I gave up and went back to other projects, including the ones in my classes. I came back to it about a year later, though, and the solution seemed incredibly simple to me. I had no trouble solving it.

Not only will following your curiosity help you get better as a programmer by getting you to practice your problem solving and coding, but it will help serve as a way to measure your progress as you get better. Personally, I find that aspect to be just as important as the actual improvements.

Anyway, those are my thoughts on the subject. Happy coding!

EmeraldKnight9232 karma

Tabs. I have never had an issue with code format when another programmer uses tabs, but everywhere in the code base I'm maintaining that uses spaces has the most fucked, inconsistent eye-sore formatting I've ever had to deal with. Additionally, I don't want to have to backspace four (on average) fucking times when once should be sufficient to get rid of indentation. Tabs are also typically resizable for display purposes in any decent editor. They just make more sense in terms of actually maintaining code.

EmeraldKnight927 karma

Many of the things you said sound like they would be more useful for someone who has a basic understanding of coding and wants to get better, but I don't really know what you mean by some of it.

That's certainly the case. You need a basic understanding of programming in order to create a foundation upon which you can build your knowledge of more complex concepts.

Do you know of any resources that would be better for getting started from scratch besides codeacademy?

Codecademy can be fine for your initial introduction because it walks you through the steps of the basics. In a way, it's like sitting in class. Just understand that it's not effective as more than an introduction because of it. You need something more project-level in quality, an assignment of sorts to make use of that classroom-like material. Something that you're not being walked through the whole way, in order to better facilitate a problem-solving mindset.

As for specific resources, I would recommend looking at some of the resources here. In particular, start with the first item, as it has some perfect beginner-level problems.

EmeraldKnight925 karma

I don't like these companies presuming that it's their job to put things on our displays in ways that suit them, with no regard for how we would shape what's on our displays to our own liking.

This is where I have to interject as a programmer. There are some very big reasons for the lack of customization available to users. The biggest reason is the cost of developing the software that would allow users to perform that customization. Developing that sort of functionality would make for an entire app in itself. Doing this for each individual app would be prohibitively expensive, both in the initial development costs and in the long-term maintenance. They could develop a flexible system that could be applied to any app, but that would require its own set of APIs, maintenance, probably legacy support, and a whole host of other complications and costly labor. In general, the customization system itself would be a huge money sink and wouldn't provide any immediate financial benefits to the company, and would actually very likely divert attention away from building and maintaining core functionality.

The other reason that immediately comes to mind is that most users really don't care about having that much control over their software. They just want the software to work right out of the box and to be simple to use. Providing UI customization that, quite frankly, has a lot of potential to introduce some pretty nasty and unexpected bugs in the backend and might take a lot of thought from the user or from the developer to ensure 100% fool-proofness just doesn't make sense when such a small percentage of your users will even bother to make use of that feature in the first place.

In short, it's not so much a matter of companies wanting to control the user experience so much as it's a matter of development and maintenance costs, an assessment of probable user behavior, and the need to avoid unnecessary additional risk with a system that might not even work.

If you want to see more control over UI customization, then you first have to convince users that they want it as a feature and then convince software companies that the users want it as a feature. Until then, it seems unlikely that customization will be a wide-spread feature.