How do I create a Cocoa Touch Framework?

Is there a good road map for an aspiring web app developer/designer?

  • I have always wanted to work for companies/startups like Path/Instagram/eightbitme/Digg/Oink and have always had an extreme passion for creating digital things. I see people like Brian Wong and Danny Trinh and have wanted to create something not for the money/SV fame but the satisfaction of knowing I created something that changes the way we think/do things. I have always been able to find a lot of good resources on how to learn specific things. Yet I am not seemingly able to find a good list of things to learn. I'm not in any way, asking for a list of tutorials on how to learn, and I do understand that projects like these require a team and resources. But what I am asking for is a short list of things I need to learn to be able to get my own little web app shop off the ground (maybe something like a small forum that I hand coded and designed). I have dabbled in Python3.0 and have a fairly good understanding of HTML. I get that down the road development and UI path splits so heres what I would like to do and what I think is an accurate road map. I for now would like to have the ability to make small apps like a lite version of Wunderlist for example. In the future I see my self as more of a developer rather than a designer. And if I had to chose for a learning experience sake, I would rather use Python/Django over Ruby/Rails just because I feel as a novice Python has a lot more practical applications for future jobs within and out of web development. My estimated road map: Python (to understand a grasp of programming and server side) HTML/5 (HTML and HTML5 for design/uiux aspects) CSS/3 (CSS and CSS3 for design/uiux aspects) Javascript (more design and front end) wxPython (to have an understanding for ui creation in Python) Django (for a framework to add my HTML, CSS, and JS to) MySQL / MongoDB (databasing for my users) Tornado (not sure what it is but I know it is an important aspect, and is a framework for web app development written in Python) and further down the road I could learn some Obj-C and Cocoa for some iOS goodness. And is there a resource on combining these resources? And would you all suggest to add Python later down the list sense I will not be creating anything "user practical" until down the road? I am 18 and a senior in high school so I understand that college is right down the road but I know that not all schools (with the exception of SF schools) teach these specific things. At the end of the day I would like to be able to say I made a fairly popular site by my 20's and be able to be a software engineer and developer for a startup by the time I am out of college. Again I am in know way asking for a list of tutorials but a list of things to learn in a logical order that makes sense to you or that you even learned your self. Thanks a ton, and sorry for the excessiveness. PS here is an example of a fairly heavily customized Squarespace site I made for a project in english class http://mythos.kylesnav.com

  • Answer:

    One approach would be to do it in increasing order of abstraction: HTML: Understand what HyperText, Markup and "Language" mean in this context, how it has evolved and what are the best practices. CSS: Understand why and how style should be separated from the markup. Discover browser quirks and ways to get around it. Possibly uncover your hidden talent for design. JavaScript: Learn the differences from your previous languages (http://javascript.crockford.com/javascript.html). Learn about the DOM, event handling, asynchronous requests, JSON etc. This takes a lot longer than the above two. PHP/Python/Ruby/Java/etc.: Several languages can be used to do server-side programming (including JavaScript). Pick one that you prefer and understand how it connects with 1, 2 & 3. MySQL/Other: Learn about databases and what problems they solve. Learn SQL and write some applications that make use of a database. Learn efficient ways to do things and why they are efficient. (This is technically a career in itself, but a general idea helps). Web frameworks: There are numerous web frameworks, each with their own philosophies. These are best learned in a working environment where someone else has designed a good part of the website so you can quickly learn the quirks of these systems.

Shrey Banga at Quora Visit the source

Was this solution helpful to you?

Other answers

As someone who fell ass-backwards into this career after treating it like a hobby, here's what worked for me. To be fair, it's what worked for me partly because I started in about 1998, and the world is now different. I will try to generalize and not linger on my exact path. 1. Get a passion--- for something other than webdev. Nobody wants an app about development (ok, maybe devs do, but not the general public). You are going to build something, and that something needs to be about something. And, if you're not passionate about it, it won't matter. 2. Find a problem you have. People who share your passion will also have that problem. Developers are problem-solvers. Nothing more, nothing less. (That might be a bit hyperbolic, but it's generally accurate) Define a problem, and set out to solve it. 3. Make a small app that solves, or lessens the burden of, your problem. Just something you can use--- and I mean just you--- to alleviate some kind of burden related to your passion. Perhaps to make the enjoyment of it easier/more pleasant. 4. Add features as you come up with them. I have nothing to add to this header. 5. Let other people use it. Whether this is by running an app on a webserver and allowing the public to join in, or releasing your code on Github to let others download and tinker with, it doesn't matter. Involve others. You've just created a calling card. That's it. These days, if you don't have experience on a major app/site, (and, even if you do) people expect to be able to see some examples of what you've worked on on Github (or Bitbucket, or something similar). So give them something. As far as which technologies to learn when, I would suggest the following: 1. Back End -- Whether Python, Ruby, PHP, something .NET, etc. 2. Front End -- HTML/CSS/JS 3. Server -- Not as crucial, but this covers a lot of bases and knowing at least a little about how Apache/Nginx work, about how to use services like Heroku, EC2, etc., is only going to help you.

Steve Paulo

There are many, many paths you can take to get to where you're going. I can really only give you advice based on how I went from an aspiring web designer/hacker in high school to where I am now. It is not the only means to your destination. Some background: I am a Carnegie Mellon School of Design graduate, so this will be heavily skewed towards a design student's perspective. Pick a specialty, but don't be afraid to double dip It's very important to pick a specialty. Are you going to be a designer or a developer? Which one do you generally enjoy more? This will set the trajectory of everything. It's not important that you religiously stick to one or the other, but its good to know where you're going. One of my professors (who, unlike many of the professors at the School, was very involved in current trends in design) would always tell us that you can be a designer or a developer, but you can't be both. His rationale was that he'd never met someone who was amazing at both. Good, but not great. I took several computer science courses in school and built programs in my free time, so I considered myself to live somewhere in the middle.  Over time, I realized that there is a semblance of truth in what he said. In fact, within the first five months of working in the real world, I've learned that it's very, very difficult to stay on top of both design and development and actually be a functional human being. Someone with better time management skills than I do can probably pull it off without problem, but that person isn't me. Does that mean I'm going to stop developing make hyper-textured icons on Dribbble in my free time for the rest of my life? No way in hell. Just because it's hard isn't any reason to give up. Don't be lazy, be curious, and be able to prioritize In school, I met a lot of people who wanted to do things and had the capability of dreaming big thoughts, but they weren't ready to sacrifice the time or effort to make it real. If you want to go the route you say you do, you have to never be afraid to execute and be very aware of how you spend your time. I'm bad at time management, so I never went to parties (I still don't). That was the tradeoff I had to make to get good. Thursday through Sunday were my hack days, where I didn't look much at schoolwork and instead focused all of my time and effort on my personal projects or things I thought it would be cool to build. Social suicide, but being able to make cool stuff is more rewarding to me. Most of the time, the things I'd build would be things that make you go "Wouldn't it be cool if you had an X that could do Y?" Personally, I think that these are where really good startup ideas come from. But you can't stop at the idea. There's an entire department at my school dedicated to teaching students how to come up with ideas and never execute on them. I'm an asshole for saying this, but don't be one of those people. I think that you should always be curious about why a certain interaction makes sense, or how a certain visual effect was achieved, or why a technology makes sense and how it works, but even more so, be curious how to do it yourself. Curiosity and executional ability are a two-sided coin, and you need to have both. Plan Ahead Plan for the long term, not the short. Treat every idea as a startup that you've funded out of your own pocket. After all, your time and energy are the two most valuable things you have. Weekend projects are great things to learn technical skills, but I don't think that if I did a bunch of weekend projects I'd be where I am today. Also, plan for your career. Figure out where you want to work, and then figure out what it's going to take for you to score an internship there. It's all about company culture and what they value. For example, I knew very early on that I wanted to work at Facebook, and focused all of my attention on building and shipping actual products. It took a couple tries, but ultimately I got what I wanted, and I learned more that summer than I did through all four years at school. Absorb Everything Reading is important. Absorbing is important. Figure out who leads the industry in whatever it is you chose when you picked a specialty, and follow their every move. Form opinions. Test apps and figure out why they provide value, and how they don't. You learn just as much by passively absorbing information as you do executing and building something of your own. The best part is you're learning two different sets of skills, so you're not double dipping. Start Something The best and most important, piece of advice I can give you is to start something as soon as possible. Find a problem in your community, figure out if it scales to a wider audience. Build it, and if you really want to be a designer/developer hybrid, see if you can do the whole thing by yourself — you'll learn a lot. Ship it to your friends, even if they're not designers or developers or techies. What's the worst that could happen? I realize that this isn't exactly a "roadmap," or set of steps that you take to get from high school graduate to startup superstar, and if there was, I wouldn't know it because I'm not there yet. I believe that there is no set path. My path to get from point A to point B will be different from yours because I'm a different human being with unique experiences that make me 'me', and that journey is ultimately much more important than the destination.

Justin Edmund

You will learn by doing.  Just start building something.  Your own ideas, someone else's, offer your help to others for free so you can learn.  Think of your end goal as a journey.  You can do all the packing and preparation ahead of time, but you are still no closer to your destination until you walk out the front door and take some steps.

Dave Hagler

Related Q & A:

Just Added Q & A:

Find solution

For every problem there is a solution! Proved by Solucija.

  • Got an issue and looking for advice?

  • Ask Solucija to search every corner of the Web for help.

  • Get workable solutions and helpful tips in a moment.

Just ask Solucija about an issue you face and immediately get a list of ready solutions, answers and tips from other Internet users. We always provide the most suitable and complete answer to your question at the top, along with a few good alternatives below.