Advice for Student Web Developers

“It’s supposed to be hard. If it wasn’t hard, everybody would do it. The hard…is what makes it great.” — Jimmy, A League of the Their Own.

Commit.

If you’re just exploring a career in web development, there is nothing wrong with simply testing the waters by building a simple website, adding some custom styles, and perhaps dabbling in some basic JavaScript. How else would you know if a career in web development would hold your interest or simply be a passing thought along the way to the next thing? I would bet almost every web developer approached web development this way, at least initially. There is nothing wrong with seeing if web development is for you. In fact, it’s probably best to get a taste for it before investing huge amounts of time and money.

Okay. So you’ve already decided this is the career path for you. What next? It’s as simple as one word. Commit. Don’t try web development. Don’t give web development a shot. Commit to web development. Commitment implies your purposeful and intentional dedication to acquiring the skills and abilities of a professional web developer.

There will be days (and many, many nights) when you’ll be staring at your computer screen trying to find out why your program didn’t compile. Why is my form not submitting to the server? What the hell is ‘self’? Why is the JavaScript linter complaining now? You’ll be surprised how tempting it might be at times to hurl your shiny MacBook Pro out the window. I’ve been there and you will be too. Guaranteed. Why do I mention this? If you’re not willing to commit, you’ll eventually quit. Why else would you put yourself through such anguish? Because you made a commitment and it’s going to help drag you through the difficult moments.

Try to solve the problem yourself

“Give a man a fish and feed him for a day. Don’t teach a man to fish…and feed yourself. He’s a grown man. And fishing’s not that hard.” — Ron Swanson

I remember several instances of fellow classmates asking me questions about how to solve a particular problem for an assignment. It was evident from the way they framed their questions they had not put any thought or effort into solving the problem for themselves. In reality, they just want me to give them the answer, nothing more. This is something I actually see a lot of when interacting with the younger generations. If you ask someone older than me, they’ll tell you it has something do with the “instant gratification” generation. If you ask someone younger than me, they’ll probably ask someone else for the answer. And me? Well I’m too busy solving my own problems to point out someone else’s. But I can tell you my opinion on why it matters to solve your own problems.

Firstly, you’re likely to learn more while searching for the answer than you would if someone simply gave you the answer. You’ll end up reading lots of unrelated information while researching the problem. Hint, hint. The “unrelated” information is going to help make you a better developer. Furthermore, it’s likely you’ll end up with a better understanding of the problem you’re trying to solve— this might be just as important.

Secondly, professional web developers are expected to solve their own problems. I’m not suggesting web developers don’t help one another, actually quite to the contrary. However, you are expected to be self-sufficient to an extent. Your colleagues will know if you’re tackling a problem that can be solved with simple Googling. I don’t know about you, but I aim to gain a reputation for being a developer who is self-sufficient, not lazy and dependent.

Thirdly, if you’re studying at the community college or bootcamp level, the problem you’re trying to solve really doesn’t matter. If you’re the 100,000th student to complete a homework project involving a JavaScript memory board game, no one really cares. Maybe you care, but no one else will be in awe of your project. Understand the assignment is not about actually creating that project, but rather about learning to learn. If you’re asking someone for the answers or simply copying off of someone’s git repo, you’re shortchanging yourself and your education.

Learn to use Git as soon as possible

“Don’t worry about the horse being blind, just load the wagon.” — John Madden

It is very likely you’ve never heard of Git or version control software. Unfortunately, some academic programs wait to introduce this toolset or fail to mention it altogether. I can sympathize with my instructors, because they are responsible for covering a wide range of material and topics within a given amount of time. At some point, something has to be left out and students need to guide themselves. In addition, it can be difficult to illustrate to the uninitiated (such as new web development students) why Git is an essential tool. The power of Git may be missed if you’ve just started. In some ways, teaching a student to use Git version control software is like putting the wagon before the horse.

They say hindsight is 20/20 and with that in mind, I wish I had been introduced to Git version control at the beginning of my studies. I can’t count how many times I could have avoided COMPLETELY SCREWING UP my project had I used git branching. Explaining Git is a topic for another blog posting, for another day. However, this would be a great opportunity for you to own your education and show initiative. Check out Kevin Skoglund’s Lynda.com video tutorial series about git. There is a comprehensive and free publication (actually titled Git Pro) available through the Git homepage. You can download the book and save it to your favorite reading device or simply read it in the browser.

Get intimate with text editors

Which editor should you use? It’s completely an individualistic choice, but look for an editor that makes you productive. Over the past few years, I’ve found Atom to be my favorite. It’s open-source and built by a company I admire.

As a web developer, you’ll spend most of your time working inside a text editor. The editor is the environment where you will write, test and refactor your code. Yes, you’ll use the browser too, but seriously, more than 95% of my time is spend working in the editor. Every web developer has a current favorite editor they can recommend and I’ll bet they can articulate exactly why they love it over another editor. You can use any editor you like, but choose an editor, at least at first. Let me explain.

My first course required I use Notepad for all of my coding. Students were warned using Adobe Muse or Adobe Dreamweaver would result in a failing grade. Mind you, I had just spend over $400 on Adobe Creative Suite 6 because, I had convinced myself I needed to have Dreamweaver to be a “real” web developer. Despite swearing under my breath about the instructor’s [delete expletive] requirement, I completed the assignments using Notepad as instructed. And you know what, she was sooooo right.

Using an essentially featureless editor enabled me to be a better programmer. Sure, at first, troubleshooting took a long time, perhaps longer than it would have taken had I been using Dreamweaver. There were no warnings about missing HTML tags or code completion shortcuts. As a result, I ended up having to review HTML and CSS documentation lots of times to discover what I had screwed up or left out. It wasn’t always obvious either — most of the time it isn’t obvious to the untrained eye. However, by the end of the semester, I was able to code and debug faster and more accurately than most of my fellow students.

More importantly, learning the code conventions and syntax “the hard way” had the added benefit of learning to code rather than learning to use a specific program. If you use a WYSIWYG, then you’re not learning to code. You’re dragging and dropping content in, helping Dreamweaver add links to the page, etc. But you’re not learning how to do it by hand and I strongly feel you lose something by bypassing the process. What happens if Adobe stops offering web design software? You’re up shit creek, that’s what. By learning to code by hand, it doesn’t matter what editor you end up eventually using, because in the end you’re the one with the knowledge.

Learn to use the command line

The command-line appears to be one of the toolsets academic web development programs avoid teaching, but bootcamps embrace. I remember using the command-line to interact with my father’s Tandy 1000 in the late 80’s and early 90’s. As a result, I probably had an easier time than your average bear in transitioning from using graphical user interfaces (GUIs) to simple terminal emulators.

Why did I start using the terminal? I think the initial reason was because the web developers I admired used them during their tutorials. I found terminal commands (bash) could complete the same task much faster than someone using a GUI application. An example? Okay, imagine you had a folder full of thousands of folders, each with thousands of files, and you wanted to move only those files modified in the last 27 minutes to a new folder. Far from impossible with a GUI application, but the same task can be performed in the terminal with one command. Neat.

My advice is to read through a pocket-guide style book about the command-line for Mac or your chosen distribution of Linux. Personally, I’ve read through several books focusing on Bash (Bourne Again Shell), some with a focus on Linux, some on Mac. You’ll find a lot of overlap and some differences — the important thing is start now and keep working through the examples. You’ll be amazed at just how powerful your computer is and just how fun the bash terminal can be. You’ll be slow at first, but force yourself to use the command-line for as much as possible. You can thank yourself in the end.

Learn Vim or Emacs

There is great debate among the programming elite regarding the use of Vim vs Emacs. In general, Vim and Emacs allow you complete many tasks, including general file tasks and editor commands without the use of the mouse or trackpad. Time is lost moving your hands from the keyboard to the trackpad / mouse — time better spent doing something productive.

My personal opinion is to start by learning Vim. Vim is straightforward, offers free training through the terminal shell, and is probably the fastest to learn. I taught myself to use Vim during a series of 15 minute breaks at work. In general, I have found adding Vim to my workflow has increased my productivity immensely. Most professional developers I’ve met tend to use Vim over Emacs. YMMV.

To be continued…