Slide 1

Slide 1 text

LARRY ULLMAN @LARRYULLMAN, WWW.LARRYULLMAN.COM BOSTON PHP DECEMBER 12, 2012 HOW TO BECOME A WEB DEVELOPER Hello and welcome to “How to Become a Web Developer”. My sincerest thanks to everyone for coming out tonight, and to Boston PHP for having me.

Slide 2

Slide 2 text

LARRY ULLMAN HOW TO BECOME A WEB DEVELOPER 12|12|2012 ABOUT ME When I do presentations, I don’t normally talk so much about myself. But most of the information I’m sharing with you today comes from personal experience. To start way back when, I have a degree in English literature, with a minor in Philosophy and Religion. I took 2 years of Latin in college. I pretty much avoided anything useful. And, I’ve been a Web developer for 13 years now. If I can do it, based upon that background, so can you. Now, to be clear, I have very little foresight on what the future looks like, and only a smattering of insight on where things are today. But I’ve got excellent hindsight, and that’s what I can share with you. My hindsight can be your foresight. Here’s an example: [[STORY: WWW in 1994]]. Again: foresight not so much, but in hindsight I’ve been able to figure out that this World Wide Web thing might just be going somewhere. So how do you become a Web developer, just in case the WWW does have a future?

Slide 3

Slide 3 text

LARRY ULLMAN HOW TO BECOME A WEB DEVELOPER 12|12|2012 PRESENTATION 1. GETTING STARTED 2. CORE CONCEPTS 3. THE YII FRAMEWORK 4. GETTING WORK Tonight, over the next hour or so, I’m going to tell you everything you need to know to become a Web developer. Which is a lot like saying I’m going to show you everything on Earth by presenting a globe. No, the information will be on a macro scale, but you’ll find out what you need to learn and in what logical order. The order is not cut and dry in terms of beginner, intermediate, advanced, so much as a logical progression over time. You’ll need to learn this, before you learn that. At the very least, this is because what’s intermediate for one person is advanced for another. [[GO THROUGH THE LIST]] I’ll spend approximately 15 minutes on each topic. Now there’s a range of experience here tonight, so if I’ve done my job right, some of you will be bored early on, some of you will be lost later on, but everyone should learn a few things. Also, I thought that just presenting a list of technologies and topics is the kind of thing you can find online and that you’re not likely to remember today anyway. So I’m going to mention lots of stuff tonight, and plenty of resources, but I’ll put together a page online with all these for you to refer to later. Just head to LarryUllman.com this weekend or next week and you’ll find it there, along with these presentation slides, of course. So in this presentation I’ll provide an overview of being a Web developer, but I’m also going to stress some key points along the way. Just to make things interesting, I’m going to do a fair amount live on my computer tonight. That introduces the potential for colossal and public failure on my part.

Slide 4

Slide 4 text

LARRY ULLMAN HOW TO BECOME A WEB DEVELOPER 12|12|2012 BIG PICTURE HTML CSS JAVASCRIPT DATA PRESENTATION INTERACTION WEB PAGE SERVER PHP MYSQL WEB SERVICES Admittedly, I can’t reasonably teach you everything you need to know tonight, but I can provide an understanding of the big picture and how the pieces fit into that. And that’s really very simple: [[WALK THROUGH]] Stress client side vs. server side.

Slide 5

Slide 5 text

LARRY ULLMAN HOW TO BECOME A WEB DEVELOPER 12|12|2012 WHERE TO BEGIN? So, you want to become a Web developer: where do you think you should start? [[HANDLE ANSWERS]] Those are all very good guesses, but my answer tonight is that you should begin by learning about

Slide 6

Slide 6 text

LARRY ULLMAN HOW TO BECOME A WEB DEVELOPER 12|12|2012 Yourself. I’m not a self-help guru, but when I think about what people should do to become a Web developer, I think you should start by looking inward.

Slide 7

Slide 7 text

LARRY ULLMAN HOW TO BECOME A WEB DEVELOPER 12|12|2012 YOU • STRENGTHS & WEAKNESSES • WHAT YOU LIKE & DON’T LIKE What is it that you are good at? What aren’t you good at? What do you like to do? What don’t you like to do? Keep in mind that sometimes you’re going to have to do things you’re not good at or that you don’t like. And that’s actually for the best. But whatever your answers are, simply answering these questions will help you plan and spend your time wisely.

Slide 8

Slide 8 text

LARRY ULLMAN HOW TO BECOME A WEB DEVELOPER 12|12|2012 CONDITIONS “I NEVER TEACH MY PUPILS; I ONLY ATTEMPT TO PROVIDE THE CONDITIONS IN WHICH THEY CAN LEARN.” --ALBERT EINSTEIN Throughout the rest of the presentation I’ll talk about the many things you should learn, but you also to learn how to learn. As I said, I majored in impractical education. But I learned how to learn. I learned how to absorb information, synthesize it, use it, and, if need be, restate it. [[QUOTE]] You need to provide your own conditions. Furthermore, the most important piece of advice I have for you tonight is this: never stop learning!

Slide 9

Slide 9 text

LARRY ULLMAN @LARRYULLMAN BOSTON PHP DECEMBER 12, 2012 HOW TO BECOME A WEB DEVELOPER In fact, the title of this presentation shouldn’t be how to “become” a web developer, because it’s not a matter of learning this, that, and the other and you’re there. No, it should be called “how to be a web developer”. It’s an active thing you do. I’m certain this is true for many careers, but it’s so applicable to computers. Many of the things I know didn’t exist 5 years ago. People ask kids what they want to be when they grow up? Well, personal computers didn’t exist when I was a kid, so how could I know this is who I’d become?

Slide 10

Slide 10 text

LARRY ULLMAN HOW TO BECOME A WEB DEVELOPER 12|12|2012 HOW TO LEARN • LEARN HOW TO ASK QUESTIONS • LEARN TO BE OKAY WITH SAYING “I DON’T KNOW.” • BE A FOLLOWER UNTIL YOU CAN BE A LEADER So how do you provide your own conditions? How do you learn new things? I’m not talking about resources here, but a mindset. First, you need to learn how to ask questions, especially with the Internet, where you can get free help from strangers, but also be berated because you top posted when you should have bottom posted. There’s a classic Web page titled “How to Ask Questions the Smart Way” which I’ll include in my page of resources. Next, you need to be okay with saying “I don’t know”. A hallmark of a professional is being aware of what they don’t know. By admitting that you don’t know something, you put yourself in a position to learn. And finally, be a follower until you can be a leader. That’s a bit hokey, but it’s flows nicely. Get on Twitter, Get on Facebook, get on that Google thing. Follow people of note. Don’t ask them questions, don’t interact, just watch what they’re up to. [[STORY: MOBILE WEB DEVELOPMENT CONFERENCE]] Subscribe to newsletters, lots of them. Use Prismatic or StumbleUpon and other tools for finding recommendations. Use Stack Overflow and Quora. In short, overwhelm yourself with input.

Slide 11

Slide 11 text

LARRY ULLMAN HOW TO BECOME A WEB DEVELOPER 12|12|2012 HOW TO LEARN And because you’ve overwhelmed yourself, you need a plan. You’ve got all this stuff coming in through your browser, your email, Twitter, etc., and you’re not going to read it immediately. So you need a plan. Find a tool you like for managing things to read later. Instapaper or Pocket or whatever. Then, and this is important, set aside time each week to actually read these things. I make it a todo list item. Finally, be sure you’re taking notes and bookmarking or otherwise storing the resources you’ve read so you don’t have to hunt them down later.

Slide 12

Slide 12 text

LARRY ULLMAN HOW TO BECOME A WEB DEVELOPER 12|12|2012 WHAT TO LEARN One last thought about learning...this is the Pragmatic Programmer, is a classic book. How many people here have read it? I will say that a lot of its content will be beyond the beginner and even the intermediate developer. But you should read it eventually. I’m mentioning it now because it presents the very interesting idea of managing your intellectual portfolio. Your knowledge is a resource that’s vital to your job. If I stop learning today, I’ll be irrelevant in two years. The same is true for you. You should attend to your intellectual portfolio as you would your retirement portfolio. This means that you need to constantly put new knowledge into it. But the more interesting idea is that you should also balance how you invest your knowledge. Spend a little bit of time learning something that’s riskier, that may not be useful, because it could pay off big. But spend most of your time learning something that’s guaranteed to be useful. Manage your intellectual portfolio.

Slide 13

Slide 13 text

LARRY ULLMAN HOW TO BECOME A WEB DEVELOPER 12|12|2012 0. KNOW THYSELF 1. GETTING STARTED 2. CORE CONCEPTS 3. THE YII FRAMEWORK 4. GETTING WORK PRESENTATION To start being a Web developer then, first know thyself.

Slide 14

Slide 14 text

1 GETTING STARTED “COMPUTERS ARE INCREDIBLY FAST, ACCURATE, AND STUPID. HUMAN BEINGS ARE INCREDIBLY SLOW, INACCURATE, AND BRILLIANT. TOGETHER THEY ARE POWERFUL BEYOND IMAGINATION.” --ALBERT EINSTEIN Okay, so you’ve thought about who you are, what your strengths and weaknesses are, what you like, what you don’t like, and how you best learn. Let’s get into the actual technologies. What’s first?

Slide 15

Slide 15 text

LARRY ULLMAN HOW TO BECOME A WEB DEVELOPER 12|12|2012 Backup system. Seriously. I’m not talking about version control, I’m talking about frequent, reliable, offsite backups of your most important work. We all know we should do it, but many of us don’t. Start today. But then...

Slide 16

Slide 16 text

LARRY ULLMAN HOW TO BECOME A WEB DEVELOPER 12|12|2012 BIG PICTURE HTML CSS JAVASCRIPT DATA PRESENTATION INTERACTION WEB PAGE Earlier I showed this slide which shows the three main parts of a Web page. There’s also media, such as images and videos and such. The first thing you must learn are these components. In decreasing order of importance, that’s HTML, CSS, and JavaScript. HTML is the one ring to rule them all. If you’re a Web developer, there will never be anything more important than HTML. There will be more useful and valuable technologies, sure, but without HTML, there’s no Web. I’m not going to talk about JavaScript quite so much tonight, but that’s not because I love it any less. It’s just harder to demonstrate and appreciate in a short time period.

Slide 17

Slide 17 text

LARRY ULLMAN HOW TO BECOME A WEB DEVELOPER 12|12|2012 TOOLS You’ll need a few tools in order to develop Web pages. I’m thinking of three categories in particular. - Browsers, for testing your site - Text editor or IDE, for creating you site - A graphical application for basic image manipulation. Crop. Change sizes. Change formats. Photoshop or a cheaper alternative

Slide 18

Slide 18 text

LARRY ULLMAN HOW TO BECOME A WEB DEVELOPER 12|12|2012 {LIVE} So let’s play a little bit here...

Slide 19

Slide 19 text

LARRY ULLMAN HOW TO BECOME A WEB DEVELOPER 12|12|2012 BIG PICTURE HTML CSS JAVASCRIPT DATA PRESENTATION INTERACTION WEB PAGE SERVER PHP MYSQL Now, you’ve created a static Web page, which is great. But static pages really aren’t manageable over the long run and they don’t provide the functionality expected by today’s users. You need to learn how to create a dynamic Web site. Doing that requires use of a server side technology. My technology of choice tends to be PHP, but you can use ASP.NET or ColdFusion or Ruby or Python or whatever.

Slide 20

Slide 20 text

LARRY ULLMAN HOW TO BECOME A WEB DEVELOPER 12|12|2012 {LIVE} Let’s take our static page and make it dynamic.

Slide 21

Slide 21 text

LARRY ULLMAN HOW TO BECOME A WEB DEVELOPER 12|12|2012 0. KNOW THYSELF 1. GETTING STARTED 2. CORE CONCEPTS 3. THE YII FRAMEWORK 4. GETTING WORK PRESENTATION To get started being a Web developer then, you have to learn how to create static Web sites using HTML et al. Then you can begin creating dynamic Web sites using PHP and MySQL.

Slide 22

Slide 22 text

2 CORE CONCEPTS "THE MAJOR DIFFERENCE BETWEEN A THING THAT MIGHT GO WRONG AND A THING THAT CANNOT POSSIBLY GO WRONG IS THAT WHEN A THING THAT CANNOT POSSIBLY GO WRONG GOES WRONG IT USUALLY TURNS OUT TO BE IMPOSSIBLE TO GET AT AND REPAIR." --DOUGLAS ADAMS

Slide 23

Slide 23 text

LARRY ULLMAN HOW TO BECOME A WEB DEVELOPER 12|12|2012 CORE CONCEPTS • LANGUAGES • SECURITY • IDEAS • TOOLS

Slide 24

Slide 24 text

LARRY ULLMAN HOW TO BECOME A WEB DEVELOPER 12|12|2012 LANGUAGES • MASTER PROCEDURAL PHP • START LEARNING OOP • MORE SQL & MYSQL • REAL JAVASCRIPT http://jsbooks.revolunet.com/

Slide 25

Slide 25 text

LARRY ULLMAN HOW TO BECOME A WEB DEVELOPER 12|12|2012 SECURITY LESS MORE EASIER CHEAPER FASTER HARDER COSTLIER SLOWER Know that security is not a binary state! [[Car metaphor]] Match the level of security to the application.

Slide 26

Slide 26 text

LARRY ULLMAN HOW TO BECOME A WEB DEVELOPER 12|12|2012 PERCEIVED ACTUAL SECURITY [[EXAMPLE: SSL CERTIFICATE]]

Slide 27

Slide 27 text

LARRY ULLMAN HOW TO BECOME A WEB DEVELOPER 12|12|2012 INPUT VALIDATE ESCAPE OUTPUT USER PHP PHP HTML SECURITY validate input/escape output prevents most attacks never trust user input

Slide 28

Slide 28 text

LARRY ULLMAN HOW TO BECOME A WEB DEVELOPER 12|12|2012 IDEAS • AJAX • WEB SERVICES • ALTERNATIVE DATA FORMATS AND STORAGE How does a site function without an input device? Section 508 How does it function with JavaScript disabled?

Slide 29

Slide 29 text

LARRY ULLMAN HOW TO BECOME A WEB DEVELOPER 12|12|2012 E-COMMERCE e-commerce: not for beginners; must use SSL; payment gateways

Slide 30

Slide 30 text

LARRY ULLMAN HOW TO BECOME A WEB DEVELOPER 12|12|2012 DEBUGGING • XDEBUG • RUBBER DUCK DEBUGGING • HANDLING ERRORS GRACEFULLY

Slide 31

Slide 31 text

LARRY ULLMAN HOW TO BECOME A WEB DEVELOPER 12|12|2012 TOOLS • MASTER YOUR TEXT EDITOR OR IDE • MASTER BROWSER DEV TOOLS • SERVER BASICS • COMMAND LINE • JAVASCRIPT FRAMEWORK OR TWO • PHP FRAMEWORK OR TWO Server basics include: .htaccess files, mod_rewrite, etc. Maybe also another database

Slide 32

Slide 32 text

LARRY ULLMAN HOW TO BECOME A WEB DEVELOPER 12|12|2012 0. KNOW THYSELF 1. GETTING STARTED 2. CORE CONCEPTS 3. THE YII FRAMEWORK 4. GETTING WORK PRESENTATION To really become a Web developer then, you have to learn several core concepts. Not just about mastering the technologies, but also about learning how to use them in different ways.

Slide 33

Slide 33 text

3 THE YII FRAMEWORK

Slide 34

Slide 34 text

LARRY ULLMAN HOW TO BECOME A WEB DEVELOPER 12|12|2012 REASONS TO LIKE YII • ACCESSIBLE • LET’S YOU BE LAZY! • SCALES WELL • JQUERY BUILT IN Flexibility: swap ORM, db library, template library (e.g., to Twig), etc. Works well with third-party software Great for beginners, and fine for advanced programmers, too.

Slide 35

Slide 35 text

LARRY ULLMAN HOW TO BECOME A WEB DEVELOPER 12|12|2012 GOODIES • BUILT-IN AUTHENTICATION & AUTHORIZATION • WIDGETS & EXTENSIONS • THIRD-PARTY LIBRARIES • CACHING You can also do auth via OpenID LDAP, Twitter, Facebook by extending CUserIdentity Widgets put complex pieces into HTML. Self-contained unit, like a complete Yii application within the application (but cannot be used on its own) Examples: admin, forum, store

Slide 36

Slide 36 text

LARRY ULLMAN HOW TO BECOME A WEB DEVELOPER 12|12|2012 MORE GOODIES • INTERNATIONALIZATION • TESTING • CONSOLE APPLICATIONS • WEB SERVICES Can store single piece of data, pages or page fragments, or database stuff. l18n: message translation, date, time, & number formatting

Slide 37

Slide 37 text

LARRY ULLMAN HOW TO BECOME A WEB DEVELOPER 12|12|2012 0. KNOW THYSELF 1. GETTING STARTED 2. CORE CONCEPTS 3. THE YII FRAMEWORK 4. GETTING WORK PRESENTATION And that’s a quick introduction to the Yii framework. As a Web developer, you need to know a couple of PHP frameworks, perhaps Yii might be one of them.

Slide 38

Slide 38 text

4 GETTING WORK “A PROFESSIONAL IS SOMEONE WHO CAN DO HIS BEST WORK WHEN HE DOESN'T FEEL LIKE IT.” --ALISTAIR COOKE [[MY STORY ABOUT LOW INCOME HOUSING AND GETTING STARTED]]

Slide 39

Slide 39 text

LARRY ULLMAN HOW TO BECOME A WEB DEVELOPER 12|12|2012 GETTING WORK • CREATING A BUSINESS PLAN • DEVELOPING SKILLS • ACQUIRING TOOLS • HOW TO GET CLIENTS • WORKING WITH CLIENTS So let’s walk through getting work. I’ve got five relatively short subtopics. [[WALK THROUGH]]

Slide 40

Slide 40 text

LARRY ULLMAN HOW TO BECOME A WEB DEVELOPER 12|12|2012 EMPLOYMENT First, though, I need to clarify what I’m talking about here. There are two general paths I could be discussing. One is being employed as a Web developer, in other words: working for someone else. It could be a clear technology company, a university, or just a business. This, admittedly, is not my area of expertise, but I should at least try to address it. Really, it’s a three-step process. First, find out what employers want. These is easily done using job ads and descriptions online. Second, make sure you fit those criteria. Ironically, I could have a hard time getting a tech job with many employers because I don’t have a computer science degree. Third, get a foot in the door somehow. You can get a foot in the door via internships or by starting in another department. [[GEORGETOWN]] For the rest of the presentation, I’ll specifically address working for yourself as a Web developer. It doesn’t matter whether it’s your primary job, or a part-time gig.

Slide 41

Slide 41 text

LARRY ULLMAN HOW TO BECOME A WEB DEVELOPER 12|12|2012 LOGISTICS SIGNS OF FAILURE GOALS FOR SUCCESS BUSINESS PLAN You need to come up with a business plan. I say this as a person that never did. I’ve been working for myself since 1999, and literally just this year have I taken certain steps I should have taken years ago. So be smarter about that than I was. The main point of the business plan is to identify your goals so that you can think of how you will get there. The business plan does not have to be too detailed or in stone. Just figure out who you want to be and fake it until you make it. Also, vision boards. I also think you should prepare for failure as part of your business plan. Not that you will fail, but just as you want to identify what success means, you should identify the circumstances for throwing in the towel. Failure includes clients not paying. You need to figure out how to cope with that. Finally, think about the logistics. For example, how much money do you need to be making? What will your expenses be? For how long can you afford those expenses? What kind of marketing are you going to do? Plan on doing more marketing than you’d care for. Who is going to do the accounting? The payroll? Consider targeting specific business types (lawyers, doctors, etc.) or platforms (WordPress, Joomla, etc.). Consider working with others.

Slide 42

Slide 42 text

LARRY ULLMAN HOW TO BECOME A WEB DEVELOPER 12|12|2012 COMMUNICATE DEMONSTRATE SKILLS OUTSOURCE WEAKNESSES DEVELOPING SKILLS http://www.flickr.com/photos/ 64379474@N00/5264881890/ KEEP YOUR PROMISES “WE ARE WHAT WE REPEATEDLY DO; EXCELLENCE, THEN, IS NOT AN ACT BUT A HABIT.” --ARISTOTLE There are four key skills I think you need to master. The first, and by far the most important, is the ability to communicate. Learn how to communicate effectively. You don’t have to be profound, but you must be comprehendible, honest, and punctual. Comprehendible, honest, and punctual. There is nothing more important. The next two skills are related. One is that you must learn how to demonstrate and accentuate your skills. You are going to be a salesperson, whether you like it or not. Similarly, learn how to outsource your weaknesses and dislikes. This goes back to what I said when we first started. Once you know yourself, use that knowledge to your advantage. Spend your time wisely. Finally, keep your promises. Do what you say you’re going to do. If you’re going to miss a deadline, be honest and open with the customer. Many people hide when they’re behind schedule, which is the exact opposite thing to do. And it makes customers furious.

Slide 43

Slide 43 text

LARRY ULLMAN HOW TO BECOME A WEB DEVELOPER 12|12|2012 GREAT HOSTING & SERVICES GOOD SOFTWARE & HARDWARE DON’T SPEND MONEY ACQUIRING TOOLS OUTSOURCE Here’s a great fact: unlike architects or doctors, you can be a Web developer without putting in much time or money. You don’t have to go to medical school, you don’t have to find someone to actually build the house you designed. I’ve developed many Web sites on this laptop. In all likelihood, the computer you have already is fine. If you’re dealing with open source technologies, such as Apache, PHP, and MySQL, those are all free. So, when you’re just starting, try not to spend any money. Honestly, you can start a Web business for a couple hundred dollars. That’s it. Eventually, buy good software, like a good IDE. Eventually, buy great hosting. Generally, though, spend money on the things you’d rather not do or are not a good use of your time. For me, that’s design and accounting.

Slide 44

Slide 44 text

LARRY ULLMAN HOW TO BECOME A WEB DEVELOPER 12|12|2012 ONLINE SITES FRIENDS & FAMILY YOU GETTING CLIENTS USER GROUPS So how do you get clients? That’s the big question. One solution I’ve found is to write books, but that’s not the most practical solution for everyone. My first piece of advice is to be your own client! Come up with an idea and implement it. Maybe you’ll make money this way, maybe you won’t. But you’ll gain experience, which is more important early on. There’s a woman by the name of Amy Hoy that teaches a class called 30x500. The class teaches you how to create and develop your own business. The premise is that too many people want to create the next Facebook, which isn’t feasible. But if you can create a site or service that 500 people are willing to pay $30/month for, you’re now bringing in $180,000 a year. Not bad. By the way, Ms. Hoy charges about 3 grand for that class. Similarly, use your friends and family as clients. You probably can’t charge, or can only charge a nominal amount, but again, you’ll build up experience and a portfolio. Finally, use some of the online sites for getting work. You won’t get great jobs from these sites and you won’t get rich, but you can make money this way. The general advice I have is: Early on, you’re going to have to literally or figuratively give it away. It sucks, but it’s true. Two stories: [ME AND CHARLIE] [The Yii BOOK] I should also add that you want to make sure you’re using contracts with clients. It’s an easy step to skip, but you really shouldn’t. Any other suggestions anyone has?

Slide 45

Slide 45 text

LARRY ULLMAN HOW TO BECOME A WEB DEVELOPER 12|12|2012 THINK ABOUT THE FUTURE GIVE MORE COMMUNICATE WORKING WITH CLIENTS Finally, and I do mean finally, let’s speak a couple minutes about working with clients. I have three pieces of advice for you here. First, communicate. Be comprehendible, honest, and punctual. Reread your emails before you send them. Be forthright and informative. Second, give the customer more than they were expecting. Always. You don’t have to do a big extra thing, just something. Third, and this is related, think about this client as a potential future clients. Too many businesses focus on getting new customers when it’s much easier to retain existing ones. That client I mentioned here in Boston that I did the JavaScript work for years ago: he’s still a client, and last year I finished another decent sized project for him.

Slide 46

Slide 46 text

LARRY ULLMAN @LARRYULLMAN BOSTON PHP DECEMBER 12, 2012 HOW TO BECOME A WEB DEVELOPER And that is how you become, I mean BE, a Web developer. Thank you.