Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I feel like I'm getting stuck lately when it comes to learning about programming-related things; I thought I'd ask a question here and write it all down in the hope to get some pointers/advice from people. Perhaps writing it down helps me put things in perspective for myself aswell.

I study Interactive Multimedia Design. This course is based on two things: graphic design on one hand, and web development on the other hand. I have quite a decent knowledge of web-related languages (the usual HTML/JS/PHP) and I'll be getting a course on ASP.NET next year. In my free time, I have learnt how to work with CodeIgniter, aswell as some diving into Ruby (and Rails) and basic iOS programming. In my first year of college I also did a class on Java (19/20 on the end result). This grade doesn't really mean anything though; I have the basics of OOP down but Java-wise, we learnt next to nothing.

Considering the time I have been programming in, for example, PHP.. I can't say I'm bad at it. I'm definitely not good or great at it, but I'm decent. My teachers tell me I have the programming thing down. They just tell me I should keep on learning. So that's what I do, and I try to take in as much as possible; however, sometimes I'm unsure where to start and I have this tendency to always doubt myself.

Now, for the 'question'. I want to get into iOS programming. I know iOS programming boils down to programming in Cocoa Touch and Objective-C. I also know Obj-C is a superset of C. I have done a class on C a couple of years ago, but I failed miserably. I got stuck at pointers and never really understood them.. Until like a month ago. I suddenly 'got' it.

I have been working through a book on Objective-C for a week or so now, and I understand the basics (I'm at like.. chapter 6 or so). However, I keep running into similar problems as the ones I had when I did the C class: I suck at math. No, really.

I come from a Latin-Modern Languages background in high school and I had nearly no math classes back then. I wanted to study Computer Science, but I failed there because of the miserable state of my mathematics knowledge. I can't explain why I'm suddenly talking about math here though, because it isn't directly related to programming.. yet it is. For example, the examples in the book I'm reading now are about programming a fraction-calculator. All good, I can do the programming when I get the formulas down.. but it takes me a full day or more to actually get to that point. I also find it hard to come up with ideas for myself.

I made one small iOS app the other day and it's just a button / label kind of thing. When I press the button, it generates a random number. That's really all I could come up with. Can you 'learn' that? It probably comes down to creativity, but evidently, I'm not too great at being creative. Are there any sites or resources out there that provide something like a basic list of things you can program when you're just starting out?

Maybe I'm focusing on too many things at once. I want to keep my HTML/CSS at a decent level, while learning PHP and CodeIgniter, while diving into Ruby on Rails and learning Objective-C and the iOS SDK at the same time. I just want to be good at something, I guess. The problem is that I can't seem to be happy with my PHP stuff. I want more, something 'harder'; that's why I decided to pick up the iOS thing.

Like I said, I have the basics down of a lot of different languages. I can program something simple in Java, in C, in Objective-C as of this week.. but it ends there. Mostly because I can't come up with ideas for more complex applications, and also because I just doubt myself: 'Oh, that's too complex, I can never do that'. And then it ends there.

To conclude my rant, let me basically rephrase my questions into a 'tl;dr' part.

A. I want to get into iOS programming and I have basic knowledge of C/Objective-C. However, I struggle to come up with ideas of my own and implement them and I also suck at math which is something that isn't directly related to, yet often needed while programming. What can I do?

B. I have an interest in a lot of different programming languages and I can't stop reading/learning. However, I don't feel like I'm good in anything. Should I perhaps focus on just one language for a year or longer, or keep taking it all in at the same time and hope I'll finally get them all down?

C. Are there any resources out there that provide basic ideas of things I can program? I'm thinking about 'simple' command-line applications here to help me while studying C/Obj-C away from the whole iPhone SDK. Like I said, the examples in my book are mainly math-based (fraction calculator) and it's kinda hard. :(

Thanks a lot for reading my post. I didn't plan it to be this long but oh well.

Thanks in advance for any answers.

share|improve this question

closed as off-topic by MichaelT, Bart van Ingen Schenau, gnat, GlenH7, Dynamic Apr 24 at 23:51

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Questions seeking career or education advice are off topic on Programmers. They are only meaningful to the asker and do not generate lasting value for the broader programming community. Furthermore, in most cases, any answer is going to be a subjective opinion that may not take into account all the nuances of a (your) particular circumstance." – MichaelT, Bart van Ingen Schenau, gnat, GlenH7, Dynamic
If this question can be reworded to fit the rules in the help center, please edit the question.

2 Answers 2

An uncreative Graphic Designer? Well, now I've heard everything. No, but in all seriousness, I think you are selling yourself short. I am probably not the best person to answer this question because I have a strong math/science/engineering background and have been programming since I was 15, but I'll give it a try anyway.

Part A

A lot of programming, especially application programming, does not really involve math. However, a lot of programming books use mathematical examples because the authors assume that it is common knowledge for their primary audience (i.e. CS majors). The only thing I could suggest here is to possibly get a different book? Apple has a very detailed book about Objective-C that you can download for free. I haven't read it myself because I have no interest in learning Objective-C, but it may have less math.

As for creativity, I think the best way to come up with ideas for applications is to think about what kind of apps you would like to have. Are there any problems that you have that could be solved by an application?

Part B

It's probably best to focus on a specific language for a while until you become proficient. If you try to learn too many things at once, you will just burn yourself out without really gaining anything. What do you want to learn most right now, web applications or iOS applications. I suggest concentrating on one of them for the moment. Keep in mind that web applications have a wider audience since everybody has a web browser but not everyone has an iPhone. Why does this matter? Mainly because it will be easier for you to get feedback from your friends on your applications if they can, well, use your applications. That being said, iPhones are still very popular, so if you really want to make iPhone apps, the more power to you.

Part C

Not quite sure about lists of programming ideas. Normally, I would recommend the Project Euler, but since you don't like math, I suppose it rules that out. One thing you can do is try to reverse engineer programs that you already use. Some of the standard UNIX command-line utilities are a good choice. I'm putting a few examples here I can think of off the top of my head. Later posters will probably have better examples.

  • caesar cipher program - Basically, take in a string, and shift the ascii characters by a certain amount. For instance, the string "iOS" encrypted with a caesar cipher with a shift of three would be "lRV". See the Wikipedia article for more. This could teach you how to work with arrays as well as how characters are represented on the computer. Bonus points for implementing a Vigenere Cipher instead.

  • vending machine simulation - This was a homework problem I once got in a programming class I took (actually it was a subway ticket machine, but same concept really). Basically, design a program that asks the user what they would like to buy, take money from them, and give correct change. It is a good way to learn Object-Oriented design and how to implement robust error-handling to protect your application from incorrect user input. Bonus points if you can deal with having a finite amount of change and/or products in the vending machine.

  • checkbook program - Write a program that allows the user to input records into a checkbook and gives them info about their current balance and so on. You could store the records in an SQLite database. Knowledge of SQL databases is a vital skill for both web and iOS applications. Bonus points if you make this an actual iPhone app.

Come to think of it, all of these ideas involve math to some extent, but hopefully not too much. At any rate, the Caesar cipher and checkbook only involve addition and subtraction.

So, that's my long-winded answer to your long-winded question. Hopefully you find it somewhat helpful. Best of luck to you.

share|improve this answer
    
Oh. Thanks a lot for your answer. I really like the vending machine and checkbook ideas. I'll try to work on those because they are quite interesting, at least a lot more interesting than a faction calculator. Thanks for the heads up aswell. –  Joris Ooms Jun 24 '11 at 22:58

Never think "I can't do something, it's too complex", that's the fastest way to make sure that you never get to where you want to go. When you feel like something is over your head (or you're under water), that's a good thing - it means you're learning something and challenging yourself.

To address your specific TL;DR questions (I could go probably write a TL;DR in response, but I'll save you that pain for now ;)):

A. I want to get into iOS programming and I have basic knowledge of C/Objective-C. However, I struggle to come up with ideas of my own and implement them and I also suck at math which is something that isn't directly related to, yet often needed while programming. What can I do?

Brush up on basic geometry and trigonometry (high school level math). There are a ton of resources online to assist you there. Most resources are quite easy to follow along.

As for your own ideas, don't bother. Find an open source project that interests you and start learning the code base and playing with it. Maybe figure out one or two small things that you'd like to change in the project and work on doing so. At first, I'm sure you'll struggle to understand what's going on through the source code, but don't get discouraged. Also, don't shy away from asking the author questions if you can't find answers in their documentation - usually you'll get a helpful response.

B. I have an interest in a lot of different programming languages and I can't stop reading/learning. However, I don't feel like I'm good in anything. Should I perhaps focus on just one language for a year or longer, or keep taking it all in at the same time and hope I'll finally get them all down?

It all depends on what you want to do. Do you want to be a generalist or a specialist? Generally speaking, it's probably easier to get your foot in the door professionally as a generalist as it opens the doors to a wider variety of potential employers, but being a specialist, while potentially more difficult to find employment, may yield a higher initial salary (of course, this would be difficult to prove without work experience).

One of the things that I found out when I first start started was that I needed to narrow down my focus to feel productive. Once you've been a developer for a number of years and have a good grasp on lower level/algorithm/design pattern knowledge, bouncing between languages and platforms becomes much easier. It's pretty tough to do out of the gate though. My suggestion here would be to focus on one thing at a time. Forget setting a time limit on it (as you mentioned, a year) - work with it until you feel comfortable with the tech: There isn't much that you couldn't with it. Either that, or until you become bored ;)

C. Are there any resources out there that provide basic ideas of things I can program? I'm thinking about 'simple' command-line applications here to help me while studying C/Obj-C away from the whole iPhone SDK. Like I said, the examples in my book are mainly math-based (fraction calculator) and it's kinda hard. :(

Most entry-level tutorial books provide sample projects. Find one and try replicating the projects that they include. Most provide source code. When you're done your replicas, compare your code to theirs.

share|improve this answer
    
Thanks for the heads up. I've heard the open source project thing before, but it seems so daunting to take on, you know? Thanks! –  Joris Ooms Jun 24 '11 at 22:57

Not the answer you're looking for? Browse other questions tagged or ask your own question.