- There are a few students who will be visiting our office today, and here's an overview of the kind of talk i'm going to give later. What do you think, anything else i should add or take away? Of course, it also includes the mandatory Steve Jobs commencement talk viewing.
a CodrSchool inception plan
*Figure out what you want to do in life.*
- Figure out your vision, what's burning inside
- Keep a vision as a guide, and execute for the short term.
- Don't worry about 5 years, or 10 years. Just do it. Get it done. Do something.
*Programming*
- is not a job, not a profession
- it's a lifestyle. it's who you are.
- it's not an 8-to-5 job, it's something you live with.
- day-in-day-out, you are a programmer, you constantly think about programming, about computers, about solving problems.
- it's a natural type of job. it's what you really do.
- it is a creative work, you're required to create/innovate, and not encode, or type source codes.
- you can only master progamming through years and years of practice
- earn your 10,000 hours to greatness
- using a software tool or technology, will *NOT* make you a great programmer.
*Opportunities now*
- The world is flat. A com. sci. student in US is in the same playing field as we are. The Internet is a great leveler. We can compete. If they can code, so do we. If they can build Google or Microsoft or Apple, so do we.
- Internet access is cheap, at least cheaper than 10 years ago.
- More people has access to computers, an entry-level netbook is more than enough to start learning.
- Open source has made it easier for all of us to learn, and improve our skills.
*Learning Strategy*
- Experiment a lot
- Read lots of code -- lots of it, until your eyes pops-out
- Don't worry about your parents or friends tell you that you spend too much time on computers. It's normal to be obsessed with computers. There-is-no-other-way.
- Explore what programmers are doing
- Download open-source codes
- Ditch Windows or Mac, and exchange with Ubuntu, or Linux, or any of the hackers OSes (BSD?).
- Use software tools that you have access to its code
- Try to change parts of it, and compile, change more, and compile
- Explore more, figure out how things work, why things work
- Stop using F1, or don't read documentation. Read the code! Yes, turn-off auto-complete, that's for n00bs (alright, i know i'm going to be flamed for this, auto-complete n00bs!).
- Learn at least 4 programming languages. Master a few core ones, like C. Yes, C. Yes, that C. Yes the one they all called to be dead already. C.
- Then, master a few more, compiled, interpreted, or whatever. Try to learn Ruby, Python, PERL, sh, Javascript, PHP, all kinds. Or the exotic ones, Scala, Erlang, LISP, Clojure, Go. I'm sure there are more older, exotic ones.
*Experimentation*
- Change your main desktop to Ubuntu, or any Linux variant
- Learn how to install server kind of tools; Web server, Database server, Proxy server, DNS server, SMTP server
- Do it the hard way: Why? Because we're all programmers, we want to learn. Learn how things work, and don't stop on being just a user.
- Build your own simple project, a simple application. Have other people use it, test it, critic it. Get feedback, go back and improve it, then release it again.
- Take risk, try it. Failure is always an option. Fail once, fail more. Fail everyday.
*Startup*
- You don't need to work for a company to learn. Or, don't need to work for the sake of working.
- Find what you want to do in life, and figure out a way to earn money from it.
- You can start at home, start with your computer
- Join mailing lists, contribute to open source
- Try freelancing, learn on your own
- Or, work in a company. No harm in that. Though, you won't learn a lot from a company, apart from what the company wants to extract from you.
- There is more learning outside of what you do in a company. Yes, i operate a company, but i still say this, because it's true.
*Read lots of codes. L-O-T-S*
*EXPERIMENT A LOT**SIDE BITS*
- Discuss the difference between how learning is viewed now, versus what is really learning.
- It's not about achievement, grades or honors. It's an external symbol, but only a symbol. It doesn't mean you have learned or not. It means, you have achieved something based on the criteria of the award.
- Learn, because you want to learn. Not learn, so you will have something to use when you plan to work later on. It won't work like that. Of course, you can go on with it, but it is something not sustainable.
- Imagine, cavemen going to college so they can apply at tech company later on. Impossible. Whoever invented education and work anyway? Of course, there's no point going back to stone age. There's a lot of benefit towards a good education and a good set of skills. That's it, beyond that, what you do, you don't have to work.
No comments:
Post a Comment