Just the weekly tutorials.

How to Become a Web Developer - Part 1

Table of contents

During the course of running my jQuery and JavaScript newsletter, many people have asked me for help with questions about jQuery. However, a small number of people would also ask about help with more general subjects. I've been asked a lot about things of "where to start" nature.

In my book I talk about jQuery and JavaScript. But not enough in the way of general principles that mostly apply to the psychology of getting things done. As a computer programmer self-discipline should be equally important as is knowing the computer language, because programming takes a lot of passion and effort.

Over the years I have learned several Important concepts that to this day help me increase productivity.

In this edition of my free newsletter, I'd like to share some of these principle with you. This newsletter is long. It's a medium-length chapter of a book in itself. I could have put it into my book and sell it, but I made the decision to distribute it for free to all subscribers.

As you may know, I always expand the content of my book Understanding jQuery and send an upgraded version to everyone who already bought it for free. The ideas represented in this newsletter will also make it into future versions of the book, which I am currently working on very hard right now.

What knowledge is required to be a web developer? What languages you should know? We already know that jQuery is easy, fun, and incredibly helpful. Yes, we know that. But what does it take to be an effective programmer? One who could effortlessly write programs for any specific purpose?

In this edition, I'll try my best to point you in the right direction. This may be helpful for those who are looking to get a job as a computer programmer or more specifically, a web developer. Also, often generally referred to as software engineer.</span></div>

A Change in Attitude

Many people believe that the answer to becoming a web developer lies in the number of languages they know. They ask questions about the order in which programming languages should be learned. What language to learn first? Do I need to know PHP or MySQL, and so forth.

And I can understand this. When I myself first developed an interest in computer programming, I always wondered about questions that were very similar to these:

1. Am I using the best language?</span></div> 2. Can this language do the cool things I saw on other websites? 3. What are the limitations of this language?</span></div>

Even though, these are completely legitimate questions, years later, I realized that there was a fault in this type of thinking. Looking back, I see now that this has been halting my own progress. I'll be honest, I felt stuck. And nobody was there to answer my questions.

Often, I felt like I had to read a random 1000 page book, hoping that somewhere among those pages, I would find an answer to just one simple question I needed to be answered then and there. Of course, this sounds very frustrating. And it was.

My new approach is simple, and it is something I still use to this day. This approach helps me with many other things in life. It is a universal set of rules I like to follow. This is also why I often write about productivity and personal development. Without these things, being an effective programmer is difficult. But if you keep an open mind to these concept, if you make it a part of your daily activity, I promise that in just 3 to 4 weeks, you will start seeing progress.

In other words, following intuition and thinking you can do everything on your own, when you are just starting, is not enough. You'll get to that state of mind later, but for now we need a more concrete, more disciplined plan. We need to do things that are in tune with our nature to create.

The New Approach

I find that the best approach to learning anything lies in things that have nothing to do with the subject you are learning. How is this possible? It's simple. Over the years, I have developed a set of rules that I use to accomplish anything. I, myself, still learn new things about programming!

Below I will list a few things that outline my general ideology about getting things done. These principles can be applied to anything, not just programming.

1. Curiosity and passion

Do you have a desire to learn programming? I mean, really do it. Not just mess with a few variables and functions, or copy and paste the code. Not just get something done for work and forget about it. Do you really want to do this? Do you want to be a programmer? Maybe programming is not for you. I don't know that. But the first step is to determine whether you really want to do it. If you signed up for my jQuery newsletter, there may be a chance that you do.

Without passion and desire to want to be a programmer, you will face many difficulties in getting anything done at all. But how do we develop passion? Where does it come from? A lot of times, it comes from the results of our creations (A computer program, in this case). But if we don't know what to do in the first place, how can we achieve those results and be inspired by them?

2. Maturity

Passion without maturity is nothing. You have to start taking things seriously. You can't laugh it off. Sometimes by taking things lightly we forget how important it is to not only to follow our inspiration, but to be mature enough to get things done. You have to kick your own ass sometimes.

3. Self-inspiration

In order to really be something, one must not look outside of oneself to find answers. One must look on the inside. Inspiration is within, it is not outside in the world, it is within you. Human nature is already to be inspired, to be gifted. It is just waiting to be discovered, like some treasure. So take a shovel and start digging.

4. Honesty (with yourself)

Being honest with yourself is important. You can't procrastinate, you can't allow yourself to avoid learning new things every day. Every time you don't do something, you are losing valuable time. Every hour is an opportunity. Will you make the choice to sit and do nothing? Will you tell yourself "Ah, I don't want to learn this because it's too simple, I probably don't need it anyway." Or will you tell yourself: "I will get it done no matter what.

Often, we lose touch with our productivity by not doing a series of small things. In other words, it's easy to become frustrated with not being able to finish an important task. But a bunch of small things add up over a period of time into wider perspectives. In the end, not being able to accomplish a big task is almost always to do with the fact that you don't know a number of smaller concepts that you could have known by simply learning just one every day.

Be honest. Every day, you must do at least one thing, learn at least one computer language concept, no matter how small or simple it seems. You will find, that after doing this for a few weeks, your ability to write and understand code will begin to increase at an exponential rate.

5. Breaking the pattern

If you are struggling with writing computer code right now. It means that you are in a pattern that will not change. Tomorrow, it will be the same. But, it's not necessary to remain in this pattern, however. If you would like to move forward, it is important to understand that you have the power to break out of this pattern, and create any pattern of your choice.

6. Stealing time

You can choose to only work 3 hours per day, but really put your all into those 3 hours. Put your everything in it. Bleed if you have to. Instead of going through your day slowly, barely accomplishing an amount of work equal to just 1 hour, only pretending that you are working. We have to know how to manage our time. This becomes an important productivity tool.

By optimizing our days, by doing less every day, but more often consistently, on a longer time scale, we can steal time :) 3 hours per day adds up to 21 hour per week, or about 84 hours per month. These are the hours of working full force. It is enough to accomplish so many things. But only as long as we actually do put in work into those hours.

Have a long-term mindset, and try to avoid thinking like you need to get anything done right this second. You really don't. If you need two days to accomplish a task, then so be it. Often, focusing on trying to do everything in the same day, or even week, will actually have a negative impact on overall productivity. It sounds a little counter-productive at first, but try it out. Try to work less, and have consistency in your daily work. You will see how things will begin to grow exponentially.

7. Discipline

This one is one of the most difficult lessons. It's difficult to get things done as it is. It seems nearly impossible to get things done consistently on a daily basis. But that's what the word discipline means. Someone, for some reason, had developed discipline and invented the word. But why do we need discipline at all?

While getting things done, every day, on a consistent basis is a difficult task, developing the personal  trait of discipline is incredibly rewarding. With discipline you can accomplish things you never knew you could. If only, you make an agreement with yourself, that you will get things done every day, no matter what. No matter how difficult things are, you must do them, every day.</span></div>

Remember, that the last 50 feet before the finish line are the most difficult. You are much closer to victory than you may think. It is at our times of great adversity, that is when our ability is tested. But if we pass this test, all doors will start opening to us. Even ones you didn't know existed.

You can say, but Greg, this is so difficult. I can barely get anything done in one day, how do you suppose I gather enough strength to be able to do this every day? How do I develop discipline and make it a part of your life? You can say, what if... after all the trouble, after all the effort, I don't?

Then I will say to you. What if you do? What if, by the method of self-persuasion, you do develop discipline? Would it not change your entire life for the better? How would you like to be able to finish tasks on time? Or before a set deadline? Discipline can make all this possible.

8. Renewal of existing knowledge.

Many times people believe that they need to always learn new things in order to become a better programmer. And in many ways, it is true. But I learned that, by focusing on things we already know with the desire to improve them, we can increase our productivity and effectiveness.

Let's say you wrote a program and you are satisfied with it. Instead of moving on to writing a new program, could you think a few ways in which the current program can be rewritten? Made better? Could you think about a few things you already know and try to see how you can improve your knowledge?

The same goes for other things. You may know what functions are in JavaScript. But could you discover new ways in which functions are used? For example, what is a function closure? What are nameless functions? What situations are they used in?

Don't neglect your current knowledge. Don't think that just because you know about something, that you can't possibly know more about the same subject. By expanding your knowledge on the same subject, you widen your horizons of knowledge. And I'm telling you, you will become a much greater programmer if you do this.

9. Spontaneous creativity

As you may have noticed. I haven't mentioned a single computer language anywhere in any paragraph above. Why not? Because it doesn't matter. When you focus on thinking that you need to know 10 languages, you create a feeling that you have 10 languages to learn. Procrastination sets in. How long will it take to learn 10 languages? It will take a long time. All of a sudden, your day is at a halt. At the end of the day, nothing is done.

Instead of focusing on the amount of work, I recommend to start focusing on spontaneous creativity. That is, if you find things to do out of random inspiration, instead of some logical construct or a formula, I guarantee you can accomplish so much more, and you won't even notice it immediately.

To spontaneously create, means to choose tasks at random. For example, the following can serve as a number of things that ignite your inspiration to write a computer program:</span></div>

1. Learn about what functions are in other languages like C++, not just JavaScript. 2. Dig at the essence of why we have variables, where are they stored? In memory. Why? 3. Learn to draw a line using JavaScript on HTML canvas tag. Change it's colors. 4. Create a small "Guess this number" game, or "Tic Tac Toe" 5. Read a computer book all day long, take in as much information as possible. 6. Challenge yourself to draw a triangle using only HTML elements and CSS. 7. Learn about how a switch statement works in any computer language.

These are just the ones off the top of my head. It can go on forever. Just push yourself to find things to do. Find one task, just do it. Get it done. Have fun. Don't worry about making mistakes.

Yes, it may not be related to your project at work, or your homework assignment. But what is important, is that you have practiced your brain, You have given it new spontaneous tasks to work on. You have made your brain think. Try doing this for 1 week. Or 2? Pay attention to how you end up being more effective at writing computer programs.

Now this is what's going to expand your mind. It's finding things to do. I promise that in 2-3 weeks of doing these spontaneous exercises, you will be amazed at how many things you learned you can actually implement in your computer programs.

Some of these spontaneous projects will require you to do things you've never done before. And that's the point! In a few weeks you will gradually see that all of a sudden, you understand JavaScript better. All of a sudden, you will see why jQuery was written in JavaScript, or how JavaScript fits into the picture of website development.

This sounds like something counter productive compared to finding a direct answer. But that's the truth about human creativity. It is really a spontaneous process. The best thing is that it makes you feel free. It doesn't tell you how many languages you need to learn. It doesn't tell you what language to learn first. Just dive in. And have fun. And you will eventually learn what you need to know. In a way,  I like to think of it that I am really not in control of my own learning process. I just ignite inspiration. And then I let my brain process all the information by itself. I think our brains learn even in our sleep.

* * *

I don't expect you to understand and apply all 7 principles right now. But it would be a good idea to revisit them every 2-3 weeks. new ideas will appear in your head, and as you will start seeing things in a new light, these ideas will contribute to your overall progress.

To this day I am using these principles to get things done. It is what makes me actually get this newsletter done and sent to thousands of subscribers. Mostly, productivity is an intuitive process for me. I like to think that I have abandoned logic. Some people think that's a weird thing to say.

But I think results speak for themselves. And I hope that someone out there gets it too.

* * *

So, that was a lot of theory. And if you put at least some of the ideas above to action, if you execute any of them, you will start seeing changes. But what about computer languages? What about the tools? Knowing this theory, what are your next steps?

You can learn a lot more from the jQuery book I wrote "Understanding jQuery". It's about jQuery and JavaScript. The book is written in an easy to follow language that avoids technical jargon. There is something for everyone. And as always, I encourage development of creativity in all of my work.

I wouldn't want to leave you with just theoretical observations and ideas. But before I send you Part II, I want you to think about what was discussed here. Let it sink in. Yeah, I know it doesn't have anything to do with HTML, JavaScript and jQuery, but these productivity techniques are at the core of becoming good at anything.

My suggestion is to try to actually implement at least one in your life. And once you see the results, which you are likely to start noticing in just 2-3 weeks, you will be so much more motivated to start doing all the other things on the list as well, making you more effective at programming and some other tasks in your life. It is only when we see actual results of what we do, we are motivated to do more of it. It's a real, natural phenomenon. It's the starting that is difficult.

Of course all of that you have just read is just opinions and observations: they are alternative ways of thinking. Are they true or not? Well, I don't claim that they are. The purpose of this article is to discover a few ideas, that came purely from imagination.

On this note, I'll see you in the second part of this edition, which will touch upon programming languages and some programming tools.

Just the weekly tutorials.