7 Crazy Tips That Will Help You Become a Better Coder

Sep 27 2011 by Louis Lazaris | 114 Comments

7 Crazy Tips That Will Help You Become a Better Coder

There are a whole slew of developers writing amazing and practical code and there are thousands of public code repositories on sites like GitHub. Meanwhile, the rest of us are content with just cutting and pasting the code of these industry geniuses.

For the majority, it seems that true coding has become a lost art. Almost every project, it seems, now uses some sort of library/framework or contains a heap of plugins.

It’s rare to see any front-end coding project truly start from scratch anymore.

In this article, I thought I would give some somewhat off-the-wall tips on improving your skill as a front-end coder.

These tips will likely not be used when coding paid client projects where time and budget are factors. These are tips that we can put into practice in our own personal projects or in our spare time to try to improve our coding abilities and problem-solving skills.

While I do think the tips below can contribute to a developer becoming a stronger coder, they may not always be practical.

1. Write Your Own Framework

As mentioned, there’s almost no such thing as a from-scratch project anymore. Everything starts with some kind of code base or boilerplate. Even industry leaders with cream-of-the-crop engineers like Google have leveraged open source JavaScript frameworks such as jQuery.

On the back-end, you’ll probably be using something like WordPress or another CMS. On the front-end, you’ll likely be including your favorite JavaScript web development library/framework and a CSS reset.

Forget those bloated things. Write your own code base instead and adapt them to your own needs. Yes, something like this will probably take you many hours, and potentially weeks or months.

You’ll likely end up scrapping the whole thing and never using it on a real project. But you’ll have no choice but to learn how to do it, even if that means doing it badly.

It’s a daunting task, but something that will reap great benefits. You’ll understand the language’s syntax better, the concepts will become clearer, and your problem-solving skills will improve.

Even if it’s something small like your own tiny JavaScript library (e.g. a JavaScript animation framework) that has a half-dozen modules, it will be well worth the effort.

It might even be a good idea to keep this type of thing as an indefinite project that’s continually on going. You can keep going back to it, improving it, learning new lessons and adding new features. It probably still won’t be as good as the popular, open source ones out there, but you’ll probably learn more than you ever would otherwise.

2. Don’t Use Developer Tools

If you’re like me and you run into a scripting problem or a selector specificity issue in CSS, the first thing you might turn to is some developer-related tool like Firebug, Web Developer extension, Google Chrome’s Developer Tools and the like. For instance, Firebug provides invaluable features for tracking down and fixing almost any front-end coding issue.

However, remember that tools like Firebug are fairly young. Developers in the late 90s and early 2000s didn’t use these types of robust tools.

Although those rudimentary development techniques might be considered "slow" by today’s standards, the developers that used such archaic debugging methods understood their craft as well as anyone.

If you can debug a CSS or JavaScript problem without using any special tools, then that shows you have a solid understanding of CSS and some of the deeper parts of JavaScript.

This topic, specifically in relation to debugging tools, was covered by Jens O. Meiert and I wholeheartedly agree with his theory.

Sure, you won’t solve any problem as quickly as you would with Firebug or your favorite developer tools, but there’s a good chance you’ll learn more and avoid making the same mistake again in the future.

3. Don’t Use a Browser

Creating websites without testing them in their environment? Did I mention that these were crazy coding tips?

Well, customarily, if you’re developing a CSS layout or some kind of JavaScript functionality, it’s pretty common to switch back and forth between editor and browser, checking your stuff as you go.

Instead, try this exercise some time: Code an entire web page layout or JavaScript widget without checking it in the browser until you’ve completed the whole thing. This will cause you to stay focused the entire time, ensuring that every line is coded properly. And you’ll be forced to visualize the outcome of your code.

From my experience, being able to visualize the results of the code you write is an important part of understanding it. Ignoring, to some degree, the actual output forces you to think through your code line by line, and this will help you understand every bit of it more fully.

4. Don’t Use a Code Generator

This tip is especially important for learning the ins and outs of CSS3. There are dozens of CSS3 gradient generators, button makers, and other tools that can help you write CSS faster. Those are useful, especially when you’re facing a deadline.

A CSS3 gradient generator can be useful, but can also hamper learning of underlying style sheet concepts.

But if you take the time to type every line of CSS3 manually, you’ll be forced to learn all the different parts of the various syntaxes.

Take for example the simple box-shadow property (example below):

.shadow {
  box-shadow: 4px 4px 8px rgba(0, 0, 0, .2);
}

If you’re using a code generator to spit out that code, then you’ll take much longer to get used to what each of those values represent.

On the other hand, typing it manually likely means you’ll have to check a reference or even the CSS3 W3C specification draft. All of this will lead to a better understanding of how the code works.

5. Type Book Code Examples By Hand

Pretty much every computer programming book written nowadays will include a code archive that’s available for download or on an accompanying CD. This is great. But how much can you learn from copying and pasting so much code?

So forget about the code archive. If you have the time to do an in-depth study of the material in a book, complement such study by typing all the examples by hand, then test them to ensure they’re working properly.

This will have a number of positive effects on your coding abilities. It’s inevitable (especially if the concepts are new to you) that you’ll type a lot of things incorrectly, leading to error messages. This will force you to have to pore over the code examples in the book while comparing them to your own until you find any problems.

You’ll be debugging code almost immediately after learning it, and I’m sure we can all agree that many of the most important coding lessons are learned when debugging. You might also find errors in the code printed in the book, so this presents further opportunities for getting a stronger understanding of the concepts involved.

Even more crazy: You might want to do the same thing with code examples you find online in tutorials and articles. Don’t copy and paste them, but instead, type them manually. Again, you’ll see many of the same benefits mentioned above.

6. Use a Vanilla Text Editor

What I mean by "vanilla" is a text editor that has no helpers or auto-complete functionality. Or else you could just turn off any auto-complete functionality your editor has, and pretend you’re using something like the Windows-based classic Notepad.

I used to code classic ASP-based websites in the early 2000s, and for a number of years I wrote all my code (front-end and back-end) in Windows Notepad. Although there were times when this seriously slowed me down, I learned to write a lot of it from memory, and I was able to debug pretty much anything without any special tools.

If you get zero help from your editor when writing code, you’ll be forced to memorize much more than you would otherwise.

7. Re-Invent the Wheel

Whatever project you’ll be working on next will likely require something that’s been written a million times before. It could be a lightbox, a content or image slider, a photo gallery script or a tab switcher.

Almost every developer will tell you you’d be crazy to write one of these yourself. But think about it: Do you know how to write (for example) a lightbox function in JavaScript? If you don’t, then how would you ever learn?

The concepts you’ll pick up from these activities will have tremendous long-term value.

It’s ridiculous to never re-invent the wheel. If you spend your entire developer career cutting and pasting other people’s code, then you’ll only make minimal progress at best.

Of course, if you do write your own lightbox script, it will probably be one of the worst lightbox scripts ever. But who cares? You’ll learn a ton of stuff along the way, and you could always go back to it later and see if you can’t make any improvements and optimizations that you might have picked up elsewhere.

Conclusion

As I mentioned early on in the article, these aren’t going to be the kinds of tips you’ll want to use regularly or on important projects. But if you have some time to spare, use some of this advice — even if you’re just applying it in a small way.

In my opinion, these crazy suggestions will help you develop your own coding style and you’ll have a better understanding of the underlying concepts of the code you’re working with.

Related Content

About the Author

Louis Lazaris is a freelance web developer based in Toronto, Canada. He blogs about front-end code on Impressive Webs and is a co-author of HTML5 and CSS3 for the Real World, published by SitePoint. You can follow Louis on Twitter or contact him through his website.

114 Comments

Tom

September 27th, 2011

I’ll try telling this to my boss then add 3 months to all my project deadlines ;)

Manuel Ruiz

September 27th, 2011

Very good points.

I already follow some of those tips:

1. I never use a code generator when I write CSS3,
2. I type all the code by hand when I’m following a tutorial or studying from a book, and,
3. I don’t use the auto-complete feature of my text editor.

I might not be a fast coder but those things help me very much in understanding and memorizing the code.

TheAL

September 27th, 2011

Excellent article (conceptually). I disagree with some of these, but others hit pretty close to home. I actually love using a vanilla text editor, for everything from html to c++. I also had a very enjoyable habit in college of typing out examples from my programming books, testing them and modifying the code to see what would happen.

Tombanger

September 27th, 2011

Men,
Money and time must be something totally irrational for you… :)

marines

September 27th, 2011

Worst tips I’ve ever seen. What employer would hire such an inefficient coder?

Dennis

September 27th, 2011

Sure. Some things are good in essential, but some are bulls**t.

You *must* know how things work; i mean, every (web)developer should be able to write a website which works in the gross of all browsers without opening a browser. But things like : “Use a vanilla editor”, yeah right. Time is money, I prefer to use a nice IDE, with some (not all) assistance on. I know how things work but don’t want to do them over and over again, I prefer some help. Saves me time and money. Very essential these days.

“Write your own framework” ? Do you know how many time this costs? Yes, you are able to implement things you want, but I think (refer to jQUery) that the support on big frameworks is huge. It’s not weird that huge companies use those frameworks, why develop it for yourself? You could either write plugins, much better.

Developer tools come in quite handy for DOM events. But yes, I agree that you must understand how the browser works, but to say that you cannot use a developer tool: get a grip.

Derek Land

September 27th, 2011

Hey, I already do most of those things! Oh wait, hey, that means I’m crazy… :D

These are actually very good ways to get the nitty gritty of how the stuff you do really works. I credit typing book code examples by hand/plain jane HTML editor as my greatest teacher(s).

And learning to troubleshoot the code you write without resorting to plugins has been great for teaching me to write better in the first place.

Very good article Louis. :)

herox

September 27th, 2011

I think I should use all of those tips just back-wise.

jack

September 27th, 2011

eater of my time … this is nonsense

Marco

September 27th, 2011

I agree with you … almost … but aren’t those “crazy” tips?
While what you say is important for new programmer, I believe that some “tools” and – let me say – shortcuts are allowed sometimes. As long as you know what you’re doing. You can even use softwares like Dreamweaver… again if you know what your are doing.
I believe it depends on too many variables (like skills, knowledge and experience), in the end.
By the way I wrote something about coding in my blog (is coding dead?). If you are interested, here’s the link:

http://thewebthought.blogspot.com/2010/09/development-and-programming-is-coding.html

Dietmar

September 27th, 2011

Hm, these tipps are really crazy. Why should any developer profit of the tools of the present? Why wasting time to reinvent the wheel and even develope a new framework? Most web designers like me don’t have the time to develope a robust framework of there own. It’s better to take some proven frameworks as a solid foundation of your work. On the other hand I agree with you. It’s important that some of us try to improve old things a bit to create something new and better.

Odt Ukoge

September 27th, 2011

Using “vanilla notepad” isn’t going to make someone a better coder. Syntax highlighting helps, not only for on screen reading but for understand hard to read code as well.

Building an entire site without checking it will make it impossible to bug fix or maintain after it’s built. Sure, it’d be fun to certain degree, but entirely impractical.

Some of the suggestions are good, but I think embracing certain tools and strategies reap more benefits than putting a roadblock up intentionally as a way to learn coding.

James Moss

September 27th, 2011

Is this a joke article? I’d say the only valid point here is ‘Type Book Code Examples By Hand’

‘Write Your Own Framework’ and ‘Re-Invent the Wheel’ are *not* good ideas and won’t make you a better coder, you’ll just end up writing more bad code. Instead I’d recommend aspiring developers to get involved with an established open source project; its easy to find something on github.com which piques your interest and needs help/bugfixes/new ideas. Learn the codebase inside out, you’ll pick up a tonne of good practices which you can then apply to your projects.

Becoming a better coder doesn’t entail using a vanilla text editor and no browser tools. These things are there to help you and make things easier; it’s still important to understand the underlying technologies, and why things work the way they do, but forgoing the development tools of the last 10 years isn’t useful.

Saeed Neamati

September 27th, 2011

Well, reinventing the wheel or creating your own library may help you in getting a deeper understanding of the whole thing. But come on! Writing code in a Vanilla Text Editor? That’s really not a good idea. Well, as a developer, should I be focused on syntax, or on the overall business and techniques? Tools are there to help me forget about syntax and concentrate on the real work itself.

Nate

September 27th, 2011

great article, good to push yourself a bit and think out of the box. Small correction though, JQuery is not a framework – just a library.

siggi

September 27th, 2011

hey louis,
well spoken. especially no1 & no 7 can not be valued high enough. thats where future improvements come from :-)
may i add one more?
8. don’t use a framework
as for example jquery flattens out the differences between browsers, in not using it, you will learn a lot more how browsers work
second, jqurey selectors are very convenient, but if you never tried to achiece

siggi

September 27th, 2011

… achieve the same without them, you will never get an idea why one selector may be better/faster/… than another.

cheers siggi

(sorry for the break)

Atko

September 27th, 2011

You must be kiddin’…

Ricardo

September 27th, 2011

Ok.. indeed.. crazy ideas :P

ranjit

September 27th, 2011

Great tips. I liked 7th point…

--

September 27th, 2011

bullshit

Young

September 27th, 2011

Oh man you’re gonna get pummeled with negative comments. I see where you’re coming from, but you worded it strongly enough to be misconstrued.

Sebastian

September 27th, 2011

I think that you are completely wrong (well, maybe 5. is ok). Avoiding use of tools is one of the worst ideas ever. Programming is not a language skill, it’s a way of thinking, so one should avoid focusing too much on language.
Better advises in my opinion would be:
1. read more about algorithms
2. try to visualize regular daily tasks with diagrams and algorithms
3. move from drawings to pseudocode
4. code
5. share on github and get feedback

Antonin

September 27th, 2011

I completely agree with most of these points. I do sincerely believe that trying to create your own “cms”, your own “phpmyadmin”, or your own “whatever” will help understand the language and syntax. It will definitely make you get down to the basics and understand web development in-depth.
As a young coder, that’s what I did. One of the first things I did was create my own blogging system (without an online tutorial to copy), create my own CMS, and it helped me understand WordPress and theme creation much better.
Another thing that helped me was creating my own code library and thus my own basic “framework”. :) really helped out.

I’ve strayed too far away from those exercises (mainly focusing on client work) but I decided to redesign my website by creating a PSD layout, coding the theme without once looking at it plugged in, and I’m about to add the CSS without checking the browser first. :) Hopefully, that’ll get me back in the critical thinking system.

Thanks for the article!

Jeff Bruton

September 27th, 2011

Couple of thoughts on your suggestions:

As a learning exercise, sure… It can’t hurt to understand the underlying principles of your craft. In fact, it’s undoubtedly a good thing. Take it apart, rebuild it, make something for yourself. And when you do finally come back to reality, all of the development/design goodies that we’re all accustomed to will feel like a breath of fresh air.

In any other application, I really think moving back a decade in terms of tools, frameworks and IDE’s is a great way to lose a few months of time in a HURRY.

Personally, I’d much rather spend my time playing around learning a new programming language, new technologies, or trying things outside of my comfort zone. If you’ve spent a decent amount of time doing web development, you will have a good enough understanding of your industry to warrant -not- going caveman for a few months.
Spend that precious time building something awesome.

Ash

September 27th, 2011

Literally the worse blog post I have ever read. Is it a joke?

Maverick

September 27th, 2011

Really good article….. nowadays i’m sure many guys won’t even complete a simple project without using someone else’s code.

Also in this article you should add one more step…
Work offline, don’t use the internet.

By doing that am sure you will feel handicap as you won’t be able to search for a solution but then that’s how you need to practice things that you learned.

dan

September 27th, 2011

I have to agree. Most of these tips are tedius, but the amount you learn makes it worth while. I learnt so much about drupal by building my own module. And i’ve since found a module that could have done the job for me and saved me all those hours of development. But if I had of used someone else’s module then I wouldn’t have learned anything.
Never tried to not use a browser though. I might try that out.

Adam S

September 27th, 2011

There’s no way using Notepad will make you a better coder. If you’re on Windows, use Programmer’s Notepad or Notepad++. If you’re on a Mac, use TextWrangler or SubEthaEdit. Both of these will enforce the main rule: write your own code by hand, but both offer syntax highlighting, which is CRITICAL. You should learn to rely on coloring to id problems with your code. It’s fast. That makes you better.

TJ

September 27th, 2011

Very interesting tips! I may have to try some when I have the extra time. I can definitely see the benefit of understanding how common pieces that I normally cut & paste work. Thanks for the good read.

Chris

September 27th, 2011

Basically hate your life and make yourself unproductive. Ignore the advances of the last decade or two. Rewrite working code. Oh and do it all blind folded…right.

parjo

September 27th, 2011

‘Crazy’ is the operative word. And ‘time’ is the ultimate requirement.

Stephen

September 27th, 2011

When I began reading your first point, “Write Your Own Framework”, I was very annoyed. Then I finished reading the section and agree with you that it is a great learning experience. However, I would like to clarify that you should not use this for production if you are working with any other engineers or someone else will be taking over your work. There are just too many reasons to use an open source framework when working with teams, e.g. documentation.

Scott Radcliff

September 27th, 2011

While I can appreciate the concepts presented here, I think some of the examples are bad advise. Primarily 1 and 2.

1) Writing your own framework when you are not that good is really bad advise. What you end up with is a really bad framework of mediocre code. Why not learn a framework really well and extend it, or better yet contribute to it. A developer will learn far more from other, better developers than they would on thier own. I would suggest digging into jQuery or something similar. I mean really digging into the source and figuring out why those developers programmed it the way they did.

2) Not using developer tools is primitive and frustrating. I would suggest learning these tools well. Being good at debugging is not a good thing. It just means that you do it a lot.

I’m a little on the fence about 6. While it’s a good learning exercise, it’s not really practical. I would suggest working with a powerful text editor like TextMate or Sublime Text 2. WYSIWYG are terrible editors, but Notepad is a little extreme with today’s editors in my opinion.

My 2 cents. A good post overall.

Ash Robbins

September 27th, 2011

I’m sort of torn. I completely agree with your points that typing out a jquery module from scratch, or not using a development tool will make you a better coder over time. But then again these tools exist for the sole purpose of saving us time. Their existence means we don’t and probably won’t ever HAVE to learn how to do these things.

I love the principle, but I think I’d be too lazy to take it on!

Kris

September 27th, 2011

+1 to #6; I used Windows’ Notepad for years (I’m also self-taught), and only less than a year ago converted to Notepad++.

Pritesh Desai

September 27th, 2011

I disagree with your first 4 tips.
firebug, frameworks, wordpress are invaluable tools and it would be stupidity to not make use of them.

Sotiris

September 27th, 2011

One question: WHYYYYYYYYYYYY?????

I’m sorry sir but I find your methods dangerously anachronistic.

Gautham Pai

September 27th, 2011

Good suggestions Louis.

> these aren’t going to be the kinds of tips you’ll want to use regularly or on important projects. But if you have some time to spare, use some of this advice

This reminds me of the concept of Code Katas: http://codekata.pragprog.com/

Cory

September 27th, 2011

I disagree very strongly with the majority of points in this article.

*Don’t test your code in multiple browsers
*Don’t use matching color schemes.
*Waste time reinventing modules.
*Scrap developer tools for notepad.

It’s true that you need to understand what’s under the hood, but all of the aformentioned is just generally bad advice for beginners.

Joseph

September 27th, 2011

Finally! A post which makes so much sense in today’s world of RAD. Contrary to what most people think, its tips like this which leads to true wisdom in an otherwise world of shortcuts, tools and resources. True, its not efficient, but in the long run its about being proud of the art and science of web development, and knowing it :)

berthely

September 27th, 2011

Are you insane!?

Paula

September 27th, 2011

Really good tips. Sometimes the easiest way, is not the best way to learn.

I still thank my first programming teacher for telling me to type everything out. It really helped me to learn!

Also a shout out to Notetab. The light version is free but I love mine so much I went pro. A little beefier than notepad but still a minimalistic tool.

Gilles Doge

September 27th, 2011

I think you can add a point:

0. Deeply read other source code (like framework)
You will learn a lot if you take some time to read source code of framework like jQuery, Symfony and others.

And best of all, you have the ability to contribute if you find something wrong.

Catalina

September 27th, 2011

We hear similar crazy suggestions coming from some of the best developers. If you are the best, you already know the best technique is you go and really write the code. Snippets can help you be more productive and deliver faster, but not necessarily make you better at figuring out how to artfully create great interfaces through code.

Bryan

September 27th, 2011

thank you Louis for this wonderful article. i really appreciate your effort. thanks again

Sean

September 27th, 2011

This article should be titled “7 Crazy Ways to Make your Life More Difficult and get paid less money because it takes you 10x longer to accomplish the task”

LOL :)

If you want to learn, learn. Read a book, tutorials, go to school, work on side projects. Don’t give up your productivity tools.

Michael

September 27th, 2011

{{{applause}}}

Niggles

September 27th, 2011

“Whatever project you’ll be working on next will likely require something that’s been written a million times before.”

I couldn’t agree more. I just wrote our own gallery script from scratch, partly so I could later change code and know what each bit does, but partly because each existing library had some of what I needed, but not all of it.

Yes, my shiny new library is a bit bloated, but I learnt so much about writing module Jquery and next time round it’ll be lean and clean.

Marcell Purham

September 27th, 2011

Very good article but I have to disagree with you on some points. Debugging tools like firebug are great for web developers because when we are coding it saves so much time doing live edits and seeing what errors are going on in our js files and etc. Also it is not necessary to write your own javascript library unless there is nothing out there that will help you. Jquery is the best by far and I rarely have to write much lines of code when implementing it. Code generators are great when trying to learn a new techniques. I mean if you’re using it and understand what the code does then I do not see a problem with it.

Josiah

September 27th, 2011

Surely this is a joke. Many of these techniques throw out years of advancement in web development for the sake of what? Supposed better understanding of coding techniques.

Reminds me of http://xkcd.com/378 – so why not just get developers to use vim to write cobal?

My major issue is that the statements here may increase the development capabilities of young programmers but do not address the heart of the issue. There are far more efficient methods of increasing coding proficiency than to resort to the stone age of the web.

ArleyM

September 27th, 2011

You’re crazy. Like a fox.

In a way, my greedy routine-loving heart agrees with other commenters that this is insane. Einstein didn’t know his own phone number; “Why memorize something I can look up?”

Still, I know what you say is true; that I could get a lot more out of the work I do. It’s perfect for a personal project.

Don’t let the haterade get you down. This is the most thought provoking post I’ve read about coding practices.

Mathias

September 27th, 2011

They are good advices but as Tom said, they require plenty of time and most them are hard to use in real life, for students maybe.

Yongning Liang

September 27th, 2011

That’s waste of time, is it nuts? no, it’s insane!

Heath Howard

September 27th, 2011

Agreed this would make anyone a better coder. I am surprised at the number of people who don’t get it. You shouldn’t base your entire workflow off of this, it wouldn’t be efficient, but these are some great ways to learn and sharpen your skills.

Jarod Online

September 27th, 2011

Notepadd++ is a great example of the Vanilla Text Editor. I recommend you guys to download it.

Vivek

September 28th, 2011

This is crazy though.. I liked 3rd tip “Don’t Use a Browser”.. I am going to try it today. I have found that much time gets wasted in going to and fro. I am sure it will help me being much more focused on programming part.. lets c ;)

Louis

September 28th, 2011

Thanks for everyone’s comments on this. Interesting to see some people loving the tips, while others vehemently opposed.

I think some good points are made by many of those opposed, but they’re kind of missing the spirit and purpose of this post. Also, I have not read all the comments yet, but thought I would post a response to some of them here.

The thing is, I’ve read all of the run-of-the-mill productivity articles. I’ve seen all the list posts with roundups of tools and apps that speed up development and coding.

I’ve also seen many developers look for easy cut-and-paste solutions to many coding problems. And then, when they get the easy solutions to their problems, they can’t figure out how to customize them to their needs.

To me, the problem of so many inexperienced developers is not to throw more tools, frameworks, and libraries (thanks Nate) at them. That only exacerbates the problem.

As I mentioned in the intro and the conclusion, I don’t recommend these tips for anything where time and budget are a concern. These are just fun exercises to try once in awhile, to force you to think and solve problems without having your hand held the whole way.

In response to James Moss, who said:

Instead I’d recommend aspiring developers to get involved with an established open source project; its easy to find something on github.com which piques your interest and needs help/bugfixes/new ideas. Learn the codebase inside out, you’ll pick up a tonne of good practices which you can then apply to your projects.

James, I appreciate your feedback. But I think you’re wrong when you think that a less experienced developer can just “learn the codebase inside out” by just reading it and trying to improve it. Let’s take jQuery as an example. Some developers could read the jQuery source over and over and get very little out of it other than possibly some new native language specific tidbits. Programming is problem solving. Every line of the jQuery library is there for a reason. Each line contributes to the solving of a particular problem. The reasons behind the code decisions are not always easy to see in the code itself.

By looking at someone else’s code, in many cases, users will have no idea what particular problem was being addressed and why the original developers chose that route. I think once a developer has a good grasp of the syntax for a language, coding their own stuff from scratch is a great exercise to help them develop problem-solving skills that I think are becoming more and more rare in our cut-and-paste industry.

The arguments people are making against some of these tips are somewhat ironic, because if it were not for developers who ‘reinvented the wheel’ once in a while, there would be no such thing as the jQuery library, Cake PHP, or what have you.

Of course, I’m not suggesting that anyone learns CSS or JavaScript from scratch using these methods. I’m suggesting that you can improve on your already existing level of coding by doing a bunch of things from scratch with specific problem-solving goals in mind — after you have a moderate handle on the language and its syntax.

But hey, I never said that the conventional methods were bad! :) I wholeheartedly agree that it’s great to take part in open source projects, grab other people’s code, and collaborate in the way James mentions. There’s a reason I used “crazy” in the title on this one. :)

Also, isn’t it more fun to ruffle a few feathers than to write same-old-article? :)

Satish Gandham

September 28th, 2011

Congratulations, you successfully wasted my time.

Christian

September 28th, 2011

Great article !

Behind humoristic sentences you focus ont the best tools and methods for good devs !

Frederik

September 28th, 2011

I think the article is meant more as excerises to teach yourself a better understanding of coding and the methods behind certain best practices. Not as actual tips to be used in important projects.
But if you call the article “7 crazy coding excerises” you probably woulden’t rank verry high in the search results as people tend to look for Tips and Tutorials.

Claudio

September 28th, 2011

Thanks a lot Louis, so true!

Eigil

September 28th, 2011

If you really want to learn how this works, don’t be satisfied with writing your own framework. Write your own browser! That’s the only real way to learn the standards!

Kwing

September 28th, 2011

These are crazy ideas indeed but in the long run it will benefit you as well.

What the article tells us is to have perseverance to learn.

Luis

September 28th, 2011

I see many people commenting about time and money and bosses. If people want to criticize this article maybe they should first know what they are talking about. The author actually starts by saying:

“These tips will likely not be used when coding paid client projects where time and budget are factors. These are tips that we can put into practice in our own personal projects or in our spare time to try to improve our coding abilities and problem-solving skills.”

Considering that these are actually pretty good tips if you really want to know what you are doing instead of just doing a lot of Ctrl+C/V.

Tom

September 28th, 2011

Interesting article. It is definitely easy to take the short cut and use generators, but from experience it helps you become a better coder.

Another recommendation for new designers would be to start coding the website from scratch rather than using a template or framework when possible. I know sometimes this isn’t beneficial when it comes to time, but helps you learn.

ArleyM

September 28th, 2011

Man, this post has sparked a good offline debate. A friend made a (admittedly sarcastic) suggestion that I think would also be along the lines of #4 and #6 – code on paper. Heck, if you’re neat enough you can OCR it later, haha.

In an interview I read of Jack White. He likes his crappy plastic guitar because it’s hard to play. The challenge is what makes it worthwhile to him.

David Kaplan

September 28th, 2011

Another pseudo-journalist tech blogger trying to stand out from the millions of other tech bloggers by writing something totally asinine just for the shock value.

Why would anyone not use the tools available to them? Don’t use the browser developer tools? That’s the stupidest thing I’ve heard in awhile. Automobiles are increasingly complex and mechanics usually use diagnostics tools to figure out the problem. Does that mean they don’t know how to change a muffler or oxygen sensor??

Doctors use different ways to diagnose a problem – from stethoscopes to EKG monitors to MRIs. Using your logic, they should just “wing it” because – yanno – that’ll make them better doctors and stuff. Who cares if the patient dies in the process… right?

Someone needs to revoke your blogging license for gross stupidity.

David K from Philly

gudata

September 28th, 2011

Do everything in 0101010111 and you will be the best coder!

me

September 28th, 2011

terrible advice

Phil Sturgeon

September 28th, 2011

For the sake of the author and anyone who read this article and took it seriously: I really hope this is a joke.

It’s good to get an understanding of how things work but if you want to waste your life doing the same rubbish over and over again. Firebug is the best thing to ever happen to the developer community and will fix complex ridiculous problems in minutes.

I don’t know who hires you, but I hope they are happy with your development speed.

Tyrone

September 28th, 2011

No offense, but these tips make absolutely no sense. The point of a programmer is to be as efficient as possible. If every beginner followed your tips, I can almost guarantee they would quit early. I think you are missing the point, which is the tools we have at our disposal don’t dumb us down, but make in essence help us learn.

Daquan Wright

September 28th, 2011

These tips are good in the context they are used.

Who do these tips work for?

They work for students or people new to the industry.

No one working in a regular design/development job could be productive using these tips though. So, “it depends.” The tips in themselves are not bad, but productive people can never rely on them.

Good developers use good tools because it makes them efficient. Efficiency = less time = more money. =P

Hurley

September 28th, 2011

Yep… these tips are definitely CRAZY. Following the tips won’t make you a better coder though.

Absolutely non-sense.

Louis

September 29th, 2011

For people like David Kaplan who only read headings, here’s the conclusion from the article:

As I mentioned early on in the article, these aren’t going to be the kinds of tips you’ll want to use regularly or on important projects.

Also, David, your comparison to doctors and mechanics is perfect and supports what I’m saying here. People in those professions went through a lot of time and effort, during their schooling, to learn the ins and outs of what they work on (the human body or car engine). But the things they did *while they were learning* would not necessarily be done when they’re working on real repairs/illnesses. A lot of it would just be repetitive exercises.

And that’s the point. Some developers are just starting out, and these tips could help them learn code inside out, and once they do that, using tools and other short cuts will be a breeze and will add even more depth to their knowledge and abilities.

Are you going to tell me that doctors don’t go through exercises during their education that would never get repeated in their professional careers? Nonsense. Likewise, developers less experienced can do any of a number of somewhat off-the-wall things during the time they’re learning to increase their familiarity with the languages they’re using.

john m howitt

September 29th, 2011

I am impressed by the number of people who have commented about these tips being crazy etc. They must be people who claim to be programmers who only know how to bolt other peoples code together to produce solutions. However that’s great because the minute things get a bit hairy and they need to look under the bonnet and have no idea what is happening i get a job. Keep it up guys. However change your cv’s from “coder” to “can download jQuery”

Andrew Krawchyk

September 29th, 2011

I wholeheartedly agree with this article, aside from point #6 because I think every new coder should learn Vim (flame on). While it isn’t quite as vanilla of an editor as notepad, Vim’s default install doesn’t get in the way very much after you’ve learned the key bindings.

Otherwise, I remember working on my CS degree a couple years ago, and always hating when my professors would make me develop something that has been done a million times before, for example a networked chat client in C, or a doubly-linked list in C++. Although there are a million libraries in the open source world with these, I would have half the programming knowledge I do now if I hadn’t labored over these projects. And it made more flexible as a developer as well. It was remarkable how easy it was to transition to web development with the underlying knowledge I obtained from writing verbose C programs.

It always irks me when you tell a layman you are a programmer and they ask, “Oh cool! What languages do you know?” Just because you know a programming language doesn’t mean you know how to program. If you know how to program, learning a new language becomes second nature since it’s just syntax and semantics. The essentials of programming cannot be learned overnight and must be trained by projects and experience such as points #1-#5 and #7!

jujudellago

September 30th, 2011

I can agree for #5, #6 and maybe #7 if you got time to loose but the rest is not crazy, just purely stupid.

Better to focus on mastering version control and testing, I don’t know if it makes a better coders but it certainly makes better programs

Netero

September 30th, 2011

Nice, its also a good idea to always follow the best practices in coding. So that in case you messed up along the way, you will be familiar with the coding.

Frappa

September 30th, 2011

i loved the article, especially #1 and #7, i think these tips are very useful if you have some time to invest, just to learn and to try out stuff.
it is better to approach plugins and frameworks once you are able to really understand them.

donniecrump

September 30th, 2011

i love the people who obviously did not rtfa. or did not understand it. or just started reading at point 1 and skipped the intro. it clearly states these are not practical in the “real world” and should be used more as a learning tool.

Filipe Guerra

September 30th, 2011

Money talks, bullshit walks. Ever heard that?

Anil Kumar Panigrahi

October 1st, 2011

Hi, This is nice but we need to estimate more than current estimation. Can we get projects ???

Zach

October 2nd, 2011

These techniques remind me of the brain exercise showering with your eyes closed. Of course this isnt going to make your shower more efficient. But it gets the brain thinking in different ways.

======

All the negativity in the comments is upsetting. The author made it clear that these are not for enhancing productivity. I am sure the author does not code in notepad or design a new lightbox for every project.

I would guess that many of these comments come from people with the copy-paste mentality (who would benefit the most from these tips). They probably just skimmed to the headlines looking for links to useful code snippets, and took everything out of context.

andyB

October 3rd, 2011

A great article and very thought provoking, many negative comments!
I think the theory is sound but in practice very inpracticle.
Who in today’s world has time to lean javascript or jquery when there are so many forums and people out there willing to help you.

Amin Kasbi

October 3rd, 2011

Great article… That’s exactly what i’m doing time to time. Last days i even did rewrite a long classic javascript/ajax in jQuery Framework in order to get familiar with a jQuery syntax and functions and after 4 hours i was really happy making it working in a different way and i even did save lot of time for the site performance.
I do the same way when learning JSP/Java EE from the Netbeans Tutorials

Steve

October 3rd, 2011

There’s a lot of ex FrontPage users offering their opinions here.

Good article Louis.

Denis

October 3rd, 2011

I think it’s extreme. Try that on an average project, which should be written for a reasonable time and see that some of your advice – madness.

Jimmy Jazz

October 3rd, 2011

If this..

” the rest of us are content with just cutting and pasting the code of these industry geniuses.”

…actually describes what you do, you are not a “coder” and no amount of tips (crazy or otherwise) will be of any use to you.

The ability to use Word Press and jQuery plugins puts you at the same skill level of many 5th graders. It certainly does not make you a “coder”.

On the other hand, being at that fifth grade level certainly qualifies you to be a blogger.

Those you can, do. Those who can’t blog.

This article should have been entitled “7 crazy tips to make it even more difficult to pretend to be a web developer.”

One tip to make you a better coder : Learn to write code.

Marcus Lewis

October 3rd, 2011

Yes the wording is a bit harsh, but people are taking the tips and bit personal and not realizing what he’s suggesting.

Anyone can put a blog together or set up some plugins, but if something goes wrong how are you going to fix it? you can’t if you don’t know what’s going on within the code. You’ll resort to forums to tell you the best way to fix the issue.

This tips are to assist in making you a better coder not finish a clients project faster. Yes time is money, but in no way was he saying to use these as a development process in your daily real world project.

It’s better to actually read what he wrote instead of bashing the article because there’s no “get rich quick” idea behind it.

sadesigns

October 3rd, 2011

aren’t those tools are used to speed up development time?

Ronaldo

October 4th, 2011

I agree with a lot of the points here. We should all be reminded that these aren’t practical tips you can apply to a paid or time-constraint project. Having said that, doing everything “from scratch” does enforce learning, but the effectiveness of this really varies. There are those who hack away at ready-made code (which I do sometimes), and those that ride shotgun with their keyboard and being their journey from the very first character. One the key exercises a previous mentor gave me was to write my own tool-box, day-to-day utilities I can use in my job, albeit written in Clipper. An advice I remember him giving me is to look at his code, copy then repeat (that is, run it to make sure I get the same results then “enhance” it). These tips are great for learning folks, but you can’t apply these new habits midway through an important project, but that should be common sense. Learning how to code is a bit like learning how to ride a bike. You can watch how others do it, pick up some riding techniques maybe, but you’ll never learn until you get on one yourself. And that always start with the basics.

Peter

October 4th, 2011

Nonsense …

Dana

October 6th, 2011

Dude, I used to do that all the time, now I have to get things done in a timely manner. I think once you’re able to do these, then move to using the apps.

Kolin

October 7th, 2011

Bollocks!

Laura

October 7th, 2011

I think a lot of people are taking this a bit to seriously. Nobody is going to use these in a work environment, and even out of a work environment, nobody’s going to use all of them at the same time. Using a couple of these tips when you’re learning in your spare time might beneficial. When I first learned javascript I wasn’t able to use libraries, no debugging tools and bare basics for an editor. Now I realize that a lot of the code I wrote could have been done MUCH easier and more efficiently, but it was an amazing learning experience none-the-less. I have such a better grasp of how the code functions now and how to debug it. Would I go back to those days? Hell no! It was great for when I was new to the world of programming though.

Cynthia

October 7th, 2011

I think Firebug is what made me become a stronger coder. It allowed me to debug my code, see the results instantly and for the next time I would remember it. Firebug also helps you identify the problems fast, vs looking through tons and tons of code, vs pinpointing the problem area. Yes, coding from scratch definitely helps too, instead of copying code you’ve used before. These are only useful if you have a lot of time on your hands to become a stronger coder, but I think with more practice and forcing yourself to use best practices, you’ll become better without wasting time with some of these tips.

Hmmm

October 10th, 2011

More like “7 Crazy tips that will help you lose your current job”

Nirmal Gyanwali

October 11th, 2011

“If you spend your entire developer career cutting and pasting other people’s code, then you’ll only make minimal progress at best.”
great article louis!

Alex

October 11th, 2011

I can’t wait to read your book and read your blog!

Ahmed El Sokkary

October 11th, 2011

one thing I want to say, technology was found to make our life easier, were you conscious while you were writing this article??

Đuro

October 13th, 2011

About #1: Hmm, now I see why I hate other people’s code :-D

#4: Did it many times. Agree completely. I never remember or learn it until I start to write code myself.

#5 Very useful, often discovered typo/other errors in book code.

However, seems like today everything has to be finished like yesterday, so not much time to do like this. i think.

Chris

October 15th, 2011

5 Crazy Tips That Will Help You Become a Better Auto Owner

- Always design and forge your own parts—then you’ll really know how the car works
- Make sure you create your own wrenches, screwdrivers, and all other tools you use to work on the car (just use rocks in the beginning)
- You’ll also want to figure out your own, entirely new form of power, or at the very least, create a new type of engine
- Nowadays everyone uses wheels. Why not challenge yourself to try something less trendy?
- Actually, just don’t drive cars—they’re for young, lazy drivers. Use a horse instead, because then you’ll really know how to drive.

David

October 16th, 2011

Yes, finally someone else who feels the same way. Stop opting for a 3rd party framework for everything when you can do it yourself. Your ability to customise will increase massively!

Saj

October 21st, 2011

Have you ever written a big, I mean BIG project? What’s big for you anyway?

Havelock

October 29th, 2011

This post is like an employment test.

Those who respond with “man you’re crazy anachronistic ever work in a big project? etc etc” are the ones you don’t want to hire because they’ve publicly demonstrated their:

a) Poor reading comprehension (see author’s repeated reiteration of the intent of this advice)

b) Wrongheadedly argumentative nature (author clearly stated these were learning, not production techniques)

c) Laziness (read only headlines; would likely never learn how things actually work by taking them apart)

d) Poor professional judgment (because they’ve publicly and loudly demonstrated all of the above weaknesses in a public forum)

Caveat emptor.

Jimbo

November 1st, 2011

@Havelock. Speaking of employment tests, your post is so rampant with logic, grammatical and spelling errors that I would never consider you for employment. Epic fail.

1Cab

November 5th, 2011

It is impossible!!! Working out will be very slow!

Dipendra

November 12th, 2011

thankx for your sharing this valuable information really like your information.

Kaloki

November 19th, 2011

I guess whether these tips are good or not hinge on whether your aim is to be a fantastic coder (you’ll learn better with these tips) or an efficient coder (possibly not with these tips)

Personally I’d prefer to approach all personal (ie. not time critical) projects following these tips. But professional projects will tend not to.

Think the venom against this blog post is astonishing!

Cubicle Ninjas

March 15th, 2013

This is a great way to learn more about html, css, javascript. I remember when I first started I forced my self to only use textwrangler. Code highlighting and that was it. I learned so much more and everything stuck. I’m going to go back to learning mode.

Cheyne

June 15th, 2013

Worst tips ever.

Do you even remember how terrible the majority of JavaScript and CSS was back in those days? Sure maybe a handful of craftsmen who read the dictionary in their spare time or a W3C spec while they ate dinner could manage without modern day tools but for the rest of us it causes countless errors and poor code quality.

How many times iv had to take over a project that some idiot wrote himself in notepad without using standard tools or libraries and had to rewrite the lot for compatibility and integration reasons. I couldn’t be happier those days are over. We can get back to creating and not debugging now.

If you actually plan on making money from your career and not getting fired you should ignore most of the tips here. If I walked into a new contract now days and told them I wanted to write my own framework without any tools or utilities and I expect them to pay me for it, I would be laughed out of the office.

I agree with the code generators point but the rest is rubbish.

David

June 17th, 2013

Am I the only one around here that read the last section, “Conclusion”? Here, let me help the 95% of you that seem to have ADD and couldn’t finish the article before shooting your mouth off:

“As I mentioned early on in the article, these aren’t going to be the kinds of tips you’ll want to use regularly or on important projects. But if you have some time to spare, use some of this advice — even if you’re just applying it in a small way.”

Leave a Comment

Subscribe to the comments on this article.