In this analogy, would you say jumping into the jungle straight away is stupid? Brave? A great learning experience, if one survives?
I love learning stuff. Unknowingly, I followed a methodology. After learning different domains, now I call it 'zoo theory of learning'. You will know if you learnt a programming language from 'Hello World' (especially C programming language through the book by Kernighan & Ritchie). It goes like this,
- Learn individual components of the language like variables, for loop etc (like going to zoo to look at individual animals. By looking at them, you get a fair idea of animals, birds, reptiles. You won't be harmed because it is a controlled environment). Before venturing further down, you should spend as much time as available here, learning individual components, differences between different components. It is safe, because, you know, it is controlled. You write a python program, you execute it locally and see the results. The program may contain security holes, performance issues, and all other issues. But that is ok. It is local. It is safe.
- Next in step is going on a safari in a natural park. You are visiting the ecosystem. It is little more dangerous than above, but still you are with experienced guide and probably you won't die by doing stupid things. Equivalent for us? Get into an open source project and implement a module; or scratch your own itch and develop a module. Release it to the public. If you do it with Django or Flask, it is difficult to shoot yourself in the foot. May be someone will hack your program. Again, if you take help of existing modules, you should be lot more safe than you think.
- Once you get confident, go into the jungle and pitch a tent to observe the wild animals in their own eco-system. It is dangerous. But now you are an expert. You know how to safeguard yourself. Write a new framework, or start a new startup and take care of everything from design, development to marketing. Lot of risks, but you have knowledge and drive. You will survive.
Because of this method, I always look for a good tutorial that takes me from an absolute beginner level to a decent level. For learning Flask, a python framework, that tutorial would be, the The mega flask tutorial by Miguel. He takes you from writing a hello world to deployment in about 18 lessons.
I hope I have not abstracted the answer too much. BTW, I wrote about this method at my blog. You can read it there (Not much details than this answer).
Mistakes I did :
- I wasted much time in just reading, didn't practise the code.
- Didn't stick to any one resource to learn programming.
Recommended resources :
If you are just starting to learn web programming, you should follow the following websites
Depends on what you consider programming. I started making HTML things since 1996, you know: table layouts, no CSS, dial up connections. It was all static HTML with links and photos, nothing big.
I started off looking at source codes of other sites to see how they did it and shamelessly copied a lot.
Started working professionally in 2001 and learned CSS at the first company I worked for. At first it was a big hurdle, especially because the browsers back then weren't complaint, so you would think of a solution which then didn't work in 2 out of 3 browsers. This is in the time of IE 5, 5.5 and 6 (and Netscape!), so things have really improved since then ;)
From my point of view here's the things I would recommend:
- Read a lot of articles (CSS-Tricks, Smashing Mag, A List Apart etc. etc.)
- Subscribe to daily/weekly newsletters, Like HTML weeky, CSS weekly, JS weekly, RWD weekly. Lots of good stuff in there
- Don' t get intimidated by demo's and tutorials showing 'that one special effect you need to have'. There's a big chance you'll never use it in a production site anyway... but: look at code to see how it's done. Which brings me to my next point:
- Copy, copy, copy! And then change it to however you see fit. Learn how it works and improve from there.
- Don't expect to be an expert overnight. Experience comes from practice, running into weird problems, finding solutions and just building a lot of websites and apps. Each project will move you on, no matter how small.
That's about it really. :)
I picked up HTML in 1994, putting my first website online a year later. CSS wasn’t around back then. It lived on a tilde-domain since TLDs weren’t easily available and certainly not affordable. I learned everything i needed from a book, which has later turned into a website: selfhtml.org (It’s all written in german). The web was wild and small back then. :)
Great to read all these beginnings. Mine began by buying a 386 pc for the last money I had left while being a computer science student. It soon became clear that the teacher had only abstract knowledge and no practical experience. I learn't everything at home on this slow but trusty machine.
At that time a friend of mine started working for an adult entertainment company and I immediately followed. And boy that was a great school. The adult entertainment part was hard, because of the nature of people who make money in that market. But the tech part was awesome. Everything was new. Nothing had been documented. This was the time the first college websites started to emerge. There was obviously no jquery, no code igniter, no zend, no angular, node, no frameworks at all. And no stack exchange or devmag yet. Future Splash was still in development and people did not know the term dhtml yet ;-)
I've learnt a whole lot by "just doing it". You want something? Try it. Make it. And then debug the hell out of it. The absolute best teaching is making the obvious mistakes. Don't just download a framework and copy examples. Begin from scratch. Make all the mistakes. Put logs and alerts on every line of code to see where it breaks. And learn why you made mistakes. Only then start using a framework. You'll see that many framework devs came up with similar solutions. Then try to improve it.
And one of the best things you can do as a dev: help out. There's lots of unanswered questions at stackexchange. I'm sure you can answer at least one. I've learnt many things from posting my faulty code on stack. Like on devmag (you can feel it already), there's lots of devs out there who are willing to help out. The problem solving is in our nature, and we're all enthusiastic about sharing our solutions.
Hmmm... It seems like I have been doing web-programming all along, so I had to rack my brains to remember when was the first time.
It was circa 1998!
CSS support was rudimentary and so were HTML forms. Static websites were OK, but to dynamically generate pages there were very few options. We used Java Servlets and did everything in doGet or doPost. Perl-CGI or DLLs running within IIS would have been the only other alternative.
I have written my own HTTP server in perl, written CGI based dynamic web-servers in apache / bash / xslt, created my own templating engine in perl and even a rudimentary ORM in Java. It felt like whenever we needed a more efficient way of doing things, we invented something but soon enough it became available as an open-source library or framework. Then we would switch.
All that has helped me learn what goes under the hood of all the good stuff that's available today, and it also makes it easy to understand when something new comes up.
If any of you are just starting out, I'd advise something similar: Build your own web-server, write your own stuff at the lowest level (ie, without jquery / jsp / angular or bootstrap) to understand how things work. Write your own Ajax calls and generate your own cache headers.
Once you have done that, then the rest is a breeze.
I never had a computer until high-school, we were doing Pascal initially in computer class and I got bored, got a copy of Delphi and started building free desktop applications that was useful to other people. It wasn't till my final year of high-school that we got dial-up internet and a new world emerged for me. Varsity, I was studying Engineering Science (Computer Science + Applied Maths + Electronic Entineering), first year, I was selling computers to help cover the cost of my studies, only in my second year did I discover that I could personally build websites and only another year later did I find some time to setup a PHP forum, restyle it and created my first web page. Varsity actually gave me internet access and would spend almost all my time on it since it was completely new to me.
My first ever web page was this one back in 2006, it never had much content on it: web.archive.org/web/20061005144731/http://w.. As you can see, it's still all tables and inline colours, CSS was still the new kid on the block and browsers was just starting to support to.
It's only in 2007 that I started building useful stuff on the web: web.archive.org/web/20070317152233/http://w..
In 2008 I built two sites that were paid projects, this is one of them: web.archive.org/web/20090423090753/http://w.. This was the second paid project I did, I see what I did in 2008 is still there exactly as I left it: audioauditing.com
2009 and onward I almost never touched a soldering iron again and focused solely on web development since I enjoyed it so much.
My way how I became a web developer was a bit chaotic.
I started with 12 years to design my own pages with photoshop. They looked miserably but i was proud of them. Back then, I had a friend who was a really good programmer (or i thought it, can't really say something about his skills now) and he transformed my .ps files into templates for different CMSs.
After a while he told me, that he will go on tour as a concert pianist, so he will not be able to create my templates. I was really sad about it, and asked if he could show me how to do it my self.
He told me, that it was not so easy and he couldn't teach it to me in this short time, but he has a tool, with which i can get some viewable results.
In the tool you could load an image, slice it, and the tool would make a html template out of it.
That was my first contact witch html and later css.
Long time I did nothing else. I went to a technical school were we learned html and css (which i already knew already) and today I have to say... our teacher just read an online blog and had the smallest knowledge of the theme possible.
When i was in the 12. class I realised i was about to fail the school. So I left it, without a graduation and started to look for a job. No one wanted me, of course. Who wants a dude without graduation, who whants to be... a media designer. Jear, honestly. I wanted to be a media designer.
My father told me some day the the university had an open position as web developer (training). I applied for the position and because of a friend of a friend, i also got it.
I was so good at what I did, that my trainer offered me to shorten the trainee. So, after two and a half years I was a web developer.
When I think back it's really nice how everything played together. I never wanted to become a web developer. I wanted to work as an event manager, than as a system administrator, than as a media designer. But in the end, i got the right job and i couldn't be more happy about it... except i would be a youtuber, or a pro gamer... or a power ranger batman!
Three years back I didn't even know how to build a web page, I had a background in electrical engineering and some knowledge of BASIC and C. What really got me in to web applications were MOOCs started by couresera and udacity. Build your own Wiki was the very first course that I took and helped me a lot. It was taught by none other than Steve Huffman reddit founder. After completing couple of more courses like Intro into computer engineering, Programming foundations with Python, Programming Languages, I had a firm grasp on how things worked. Later I joined a very early stage start up company and built their platform on Django. Django's documentation is crisp, concise and one of the best resource for learning web development using Django.
Currently I am working as a full stack developer and have been using Ruby on Rails. Rails cast and Ruby Tapas have been really good resources as well. There are a lot of small tutorials on Tutsplus although these are paid, but would help a lot.