Use copy/paste as much as you can

Dear new developer,

Use copy and paste as much as you can. Not so much for code snippets from Stackoverflow, though that will save you some time hunting down mismatched parentheses.

But this is especially useful whenever you are searching for errors or moving information between systems.

For example, recently I had to find where java was installed and set the JAVA_HOME environment variable. I could have typed it in, but that is error prone. More than once I’ve transposed or omitted letters. Whenever I’m doing this kind of adhoc software configuration, I use copy/paste.

I also use this a lot when preparing to file an issue or ticket. First, I’ll just copy and paste the error message (removing the particulars of my system like file paths) into Google to see what pops up.

Then, if it is still an issue and I don’t see any answers, I’ll pop open a text editor and cut and paste all my notes about the issue, what I’ve tried (which often leads to more avenues to explore, rubber ducking in action), logfile lines. All this would be hellish to type, so I copy and paste away.

I hear there are systems out there with more than one clipboard spot, but I’ve always gotten by with the system clipboard. I did recently discover the magic of pbpaste and pbcopy on the mac, which let you copy file contents to the system clipboard (and it looks like there are analogs for other systems).

Anyway, make sure you know and love your system clipboard. When you are trying to copy complicated text, you’ll thank me.

Sincerely,

Dan

How to learn things, fast

Dear new developer,

I enjoyed this post about how to learn. While the author toots his own horn a bit much for me, he makes some very valid points about how to learn. Most importantly, you want to learn using the best resource. What is best?

The best resource is a bit of a lie – it’s really just the one that’s best for you, given your prior experiences and the medium you enjoy. You’ll usually only know you found it in hindsight.

And, once you’ve gained an intermediate level understanding of what you are trying to learn, you should:

Stop. This is counter-intuitive, but unless you want to become a master at something (besides learning), you really just want to know everything at an intermediate level.

The whole post, “How to learn things at 1000x the speed”, is worth checking out.

Sincerely,

Dan

Help, I can’t learn/do something because it is boring!

Dear new developer,

Sometimes you have to learn or do something boring. I know there are times when I’ve had to schlep, whether that is data entry, learning a technology that I’m not thrilled about, or tediously manually replicating a bug many many times to try to debug it.

A couple of tips on how to deal with this:

  • Focus on the larger picture. This often helps me stay motivated. Why am I doing this? How is it connected to the larger goals of the organization? Who is this going to help when it is finished.
  • Notice the fun parts. You can’t, of course, only do the fun parts, but you can notice them and smile. For example, I am not really a front end developer. I find CSS to be a combination of both frustration and boredom, but there are times when I have to mangle it. I enjoy learning some of the basics (the difference between padding and margin). And it is often a chance to ask questions of  a member of my team with different strengths than I have, which is usually pleasant.
  • Automate what you can. Don’t go overboard, but you can do simple types of automation like creating a shell script or shell alias. Even just writing down the exact steps you are doing or the areas you’ve explored can be helpful. It’s helpful now to deal with the tedium (in two ways, both because it can be more interesting to write the automation than to do the work and because having the automation means you’re less likely to make mistakes) and helpful in the future in case this issue arises again for you or someone else.
  • Take breaks when you need to. Depending on your deadline, take periodic breaks. If there are other tasks on your todo list that you never seem to get to but have some value, take a break and do one of them. Remember that it is a marathon, not a sprint.
  • Depending on how long you’ve been working on learning this technology or task, you may want to stick your head up and make sure what you are doing is still needed. That is obviously not good advice if you have only been working on this for a few hours, but if it has been a few days or weeks, sometimes other priorities will take precedence. Be prepared to answer the question “well, how long do you have left?” with some level of confidence, though.

Sometimes you have to do or learn something that you find boring. Hopefully these tips will help make it a little easier.

Sincerely,

Dan

How To Excel At Your Job As A New Developer

Dear new developer,

I think that there are only really four tasks you need to do to do a good job as a new developer.

  • Say what you are going to do, then do it. This is all about communicating what you are working on. You can do this explicitly (via face to face communication or slack) or implicitly (via moving cards on a Trello board or Jira). The important part is to keep other people (who likely will have a better idea of the big picture) in the loop. Oh, and then you actually have to do the work.
  • Ask questions. Don’t be afraid. This will help you do the work.
  • Don’t make the same mistake twice. Learn from any that you make. This will help you do the work better in the future.
  • Show up consistently. Sometimes you just have to grind. To do the work. (Is there an echo in here?)

If you can do these four things, you will stand out as a new developer. Why? It’s sad to say, but there are a lot of developers who aren’t very good. I’ve seen a few in my time. I’m not sure if they weren’t good because they were burned out, just didn’t care, didn’t have the skillset or the desire to learn, or were just in it for the money. Other times, I’ve seen developers get complacent, which is a foolish thing to do in this day and age (and a luxury that most new developers do not have). See also this comment thread on Hackernews about 20% of developers failing to be able to write fizzbuzz.

So, you don’t have to be brilliant to stand out. You do have to be good and consistent. And do the work.

Make sure you do all these, especially during the first few months, and you’ll gain a reputation as a delight to work with. This reputation will follow you for years and continue to help you.

Sincerely,

Dan

Tips for using email well

Dear new developer,

Writing great emails is a key skill. For all the hullabaloo about slack, emails still rule the roost when it comes to cross organization communication. This is because everyone has email, it is auditable and uneditable once sent, and requires no special permission beyond knowledge of an email address.

Email is great at conveying information, but horrible at conveying context. It also can be unclear and ambiguous. Because email is asynchronous, ambiguity causes slowdowns and confusion more than ambiguity in conversation (where you can say something like “when you said tomorrow, do you mean Saturday or Monday, the next business day?”).

This post has some great tips on how to write great emails. From the post:

Avoid using only temporal adverbs/nouns like yesterday, today, tomorrow, two hours ago etc but include also the specific dates/times otherwise they might be misunderstood or require from recipients to check the email’s sent date/time to calculate the actual time.

and

Use bookmarkable links when you refer to something that would eventually require from the recipient to search for in another platform.

There are a number of other great tips for writing clear emails in this post. The author also provides before and after examples, which really illustrate the points.

Worth a read.

Sincerely,

Dan

Three Tips for New Developers

Dear new developer,

I ran across this post with three tips for new developers.

The tips were:

  • Develop broad expertise
  • Work in application support
  • Hone your interpersonal skills

This especially resonated with me. Note that the javascript frameworks indicate this article is a bit dated; I’d substitute React, Vue and Angular for jQuery, MooTools and Prototype, but the premise is the same. You can’t make an intelligent choice between alternatives if you only understand one of them.

To sum it up, I advise new developers to work with multiple platforms. For instance, C# developers should get familiar with truly open source alternatives like PHP or Ruby, and web developers should get to know more than just one JavaScript framework like jQuery — they should get to know MooTools, Prototype, and more. Another consideration is that doing consultant work often means working within the client’s environment and technologies, so the ability to dive into new (or new to you) technologies is a must.

I can’t argue with any of these. From a high level view, when you are beginning your career, you want to learn as much as possible from a variety of perspectives. This will inform your career in the future and let you make decisions from a position of knowledge, rather than assumption. So spread your wings. When I was a new developer, I worked all up and down the software stack, from server management to database administration to front end development. And I learned what I was both good at and enjoyed.

The other thing to be aware of is that you are more likely to be hired for potential rather than knowledge early in your career. That means that if you step into, say, an application support role and then want to move out of it, you can focus on what you learned or how you improved the company, rather than what you did. A senior application support developer who’d been working in that field for ten years would have a harder time making that pitch than a newer developer.

Finally, improving your “soft” skills of communication and team work will pay dividends in the future. Rare are the developer jobs that are 100% (or even 80%) focused on coding. Defining the problem is often the hardest part of the development process, and it certainly has the most value. (Which would you rather have, the perfect solution to the wrong problem, or the 80% solution for the right problem?)

The entire post is worth a read.

Sincerely,

Dan