What Is the Best Programming Book for Beginners?

I know, I know.  You’re here looking for the best programming book for beginners (if you came here from Google).  The one book to rule them all, as it were.

I wish I could give you that.  I wish anyone could.

But here’s the thing.  Programming is so involved — so complex — that anyone offering a book like that is selling you snake oil.

There are bootcamps and 4 year CS degrees dedicated to preparing you for a programming career.  No one book is going to stand in for that.  And that applies even if you’re looking for a hobby, rather than a career.

So what I’ll do in this post is make some book recommendations.  By the end, I’ll offer a lot of those.

But first, I’ll do something you won’t see in other posts about beginner programmer books.  I’ll give you a definitive sequence of books to read along with an explanation of why these books, in this order.  Then, I’ll offer the obligatory, “here’s all kinds of books you could read.”

Continue reading “What Is the Best Programming Book for Beginners?”

Languages on boards

Why Are There so Many Programming Languages?

Recently, an outsider to the programming world offhandedly asked me a question: “why are there so many programming languages?”

This gave me pause for a moment.  When you’re steeped in the programming world, you just kind of take this for granted.  In that sense, it’s like me asking you right now, “why are there so many spoken languages on Earth?”

But I reflected a little further on it.  And I decided it would make good fodder for this blog—one that answers questions asked by newbie and aspiring programmers.  We answer questions about whether software engineers are happy and whether programmers should blog.  Why not this question?

So let’s look at why there are so many programming languages.

First of All, Are There Really a Lot of Them?

Before answering the question outright, we should probably look to quantify the vague claim “a lot.”  How many programming languages are we really talking about?

Is five a lot?  10?  20?

I went over to Wikipedia’s list of programming languages to see if I could give you a number.  And I can.

There are 68 programming languages… that start with the letter “S.”  I’m not going to count the entire page, but based on “S” you can easily extrapolate that we’re talking hundreds of programming languages.

And, depending on how you define “programming language,” one might argue that this understates the number out there.  After all, this list omits markup languages like HTML and XML.  (Some consider these programming languages, though I don’t, myself.)

So yes, there really are a LOT of programming languages.  Now we just need to talk about why.

Continue reading “Why Are There so Many Programming Languages?”

What is the Best Way to Learn C#? A Complete Introduction

Let’s talk about learning today.  Specifically, let’s talk about learning a programming language.  What’s the best way to learn C#?

For the most part on this blog, we’ve answered questions that non-programmers might have about the world of programming when they’re thinking of breaking in.  And while I suppose learning a programming language could fall into this category, it’s a little more specific.

But I wanted to examine this topic with a blog post for a specific reason.  I happened to Google “best way to learn C#” and find that something was consistently missing from the results.

Don’t get me wrong.

The results are helpful.  It’s just that they seem to focus exclusively on providing you with lots of links to various tutorials and websites.  And while resources certainly matter to your learning process, there’s a lot more to teaching someone a language than just “here’s a bunch of links, go do it.”

So today, let’s talk about learning C#.  I’ll definitely offer some suggestions for learning, tutorials, and reading, but I want to answer this question more comprehensively.  Here’s the best way, in my opinion, to go about learning this language that I happen to love.

What’s the Best Way to Learn C#?  The tl;dr

Alright, so here’s the short version.  The best way to learn C# is with a combination of an introduction to the language concepts followed immediately by practice in the form of exercises.

  1. Read about/watch a video about/learn about a new concept.
  2. Write a small program (or expand an existing one) in which you reinforce the learning with applied practice.
  3. Move on and do this with more and more concepts.
  4. Periodically revisit previous lessons to reinforce them.

After doing this for some time, you’ll have enough tools in your tool chest to begin writing actual programs that you maintain.

But before we can get into the specifics of that, let’s clear up some potential misconceptions around C# that you may have.  After all, it’s tough to talk about the best way to learn something when you’re not clear on what, exactly, you’re learning.

Continue reading “What is the Best Way to Learn C#? A Complete Introduction”

Software Engineers laughing

Are Software Engineers Happy? Yes, They Are, And Here’s Why

On this blog, we’ve taken on some questions that seem as though they’d be too general to answer.  For instance, we looked at what programmers wear to work and whether programming is hard.  And now, in that same vein, I’ll answer the question, “are software engineers happy?”

Of course, you must understand that this involves painting with a broad brush.  How could it not?

So the idea here isn’t to peg every software engineer on the planet, nor to speak in absolutes.  Rather, it’s about taking a look at the most common case for those of us in the field.

I’ll give you a short, quick answer.  Then I’ll list some of the things that detract from a software engineer’s happiness before elaborating in more detail on happiness factors.

Are Software Engineers Happy?  The Short Version

Alright, so here’s the short quick answer.  Are software engineers happy?

By and large, yes.  In employment survey after employment survey, software engineer scores high marks.  The combination of autonomy, pay, flexibility, and job satisfaction leads to software engineers being quite happy compared to people in other professions.  For instance, check out this recent survey from US news rating it the best job there is.

Of course not every survey out there puts it at number one.  But you’ll consistently find it in the top 5 or 10, especially when you factor in variants of the software engineer title.

So given that you see a pretty consistent ranking of the gig as a top job, it’s reasonable to conclude that software engineers are relatively happy.  Now, let’s dig into why that is.

Continue reading “Are Software Engineers Happy? Yes, They Are, And Here’s Why”

Software Engineers

What Makes a Good Software Engineer?

On this blog, we cover a lot of topics about how to break into programming.  So that practically begs us to answer the question, “what makes a good software engineer?”

Well, let’s answer that question today.

What Makes a Good Software Engineer: The Short Answer

In fact, let’s answer it briefly, right out of the gate.  This will set the stage for the more detailed answer below, where I’ll offer 13 different traits that will help you become a good engineer.

A good software engineer is someone who is not only competent at writing code, but also competent in everything else required to build, deliver, and ship valuable software.  A good software engineer is someone that their company can trust to help them make money.

Some people might disagree holistically, or at the margins, with this.  They might emphasize things like algorithms and data structures knowledge, mathematical aptitude, or prodigious command of programming languages.

But I would argue that those things make you a good computer scientist, which is an academic designation.

“Software engineer” is a job title.  And jobs exist to help companies grow, earn money, and deliver value to their customers.

Continue reading “What Makes a Good Software Engineer?”

Someone worried about programming being hard

Is Programming Hard? Here’s What You Need to Know

Is programming hard?

This is a question many non-programmers ask me.  This makes it rank up there with questions like, “do programmers work from home” and “what kind of education do you need to be a programmer?”  Inquiring minds want to know.

But unlike some of those questions, this one is actually pretty tough.  It’s a simple question, but the answer is very nuanced.

So let’s dive into it, in detail, and help you understand whether programming is difficult or not.

Is Programming Hard?  The Short Answer

So first off, let’s tackle the question with a short and direct answer.  This will set the stage for the remainder of the post.

Is programming hard?

Well, as consultants like to say, “it depends.”  Whether programming is hard or not depends on many factors, such as the specific type of programming and how you, as an individual, think.  So the short answer is that programming really runs the gamut from surprisingly easy to insanely difficult.

Think of this way.  Try answering some of these questions based on your experience:

  • Is playing basketball difficult?
  • Is speaking Portuguese hard?
  • What about driving a car?  Is that tough?

You can see why I’m hedging and saying, “ehhh… it depends.”

Continue reading “Is Programming Hard? Here’s What You Need to Know”

Someone walking into work

What Do Programmers Actually Do at Work?

If you’re contemplating a career switch into programming, you’re probably wondering what it’s like.  And I don’t mean in the existential sense.  Rather, on a day-to-day kind of basis, what’s it like?

Well, today we’ll take a look at what programmers do in the office.

What Do Programmers Do at Work?  The Short Version

If you’re looking for an abbreviated answer or a summary, I can certainly provide that.  After all, I spent a lot of years working as a programmer in an office.  So I can speak at length and summarize quickly.

So what do programmers do at work?

Well, not surprisingly, they spend a lot of time programming computers.  But they don’t do so in a vacuum.  They also spend time doing activities that support programming, such as research, learning, collaborating with peers, collaborating with people outside of their group, and participating in the office as general workers.

For the rest of this post, we’ll look at all of this in a little more detail and talk about what it’s actually like.

Understand That Programming Isn’t the Movie Swordfish or Whatever

Before we go any further, you need to get something out of your head.  And that’s the idea that programming is any semblance of the way movies portray it (or hacking).

I might be showing my age by citing the (terrible) movie Swordfish, where, apparently, programming involves Hugh Jackman tossing around virtual cubes… or something.  But other movies show things just as ridiculous.  People wearing ski masks, banging on computers like they’re pianos in a jazz bar, bypassing the mainframe and accessing the router.  For programmers, this portrayal hews the line between exasperating and hilarious.

Forget all of that.  If you were to film professional programming, the result would be like a less interesting version of watching someone play video games.  Think more like watching someone make a spreadsheet.

None of this is to say that programming itself isn’t interesting.  It’s a lot like doing puzzles all day for money.  But it’s nothing like the way popular culture portrays it, from how programmers dress to how they interact with the computers.

Continue reading “What Do Programmers Actually Do at Work?”

Suits that one might wear to work

What Do Programmers Wear to Work?

The posts that I write for this blog are aimed at answering questions non-programmers and aspiring programmers have about being a programmer.  This results in me answering some questions that seem perfectly natural.  But it also results in questions that surprise me.  “What do programmers wear to work?” is one of the surprising ones.

I can answer this question in a paragraph.  But I can also answer it with an entire post.  Let’s start with a paragraph.

What do programmers wear to work?

The answer is that it really varies.  Asking what programmers wear to work is like asking what people who work corporate jobs wear to work.

On average, programmers probably dress somewhat more casually than the average worker.  But there are programmers who come to work in suits and programmers who come to work in pajamas.  What programmers wear to work has a lot more to do with the company than with the profession.

But that doesn’t mean there’s nothing to talk about when it comes to how programmers dress.

Instead of trying to describe programmers at large, let’s break things down by the dress code.  Assume that you want to be a programmer.  Let’s look at each style of dress and where you might encounter it.

Continue reading “What Do Programmers Wear to Work?”

Full stack of cards

What is a Full Stack Developer, Anyway?

“What is a full stack developer” is a question that mystifies non-programmers.  I understand this because I run a content agency that pairs techies with non-technical editors.  The term comes up, and those not steeped in tech kind of squint at you if you say that and ask, “what….?”

What Is a Full Stack Developer?  The Short Version

So first, let’s give the short, direct answer to this question.  A “full stack” developer is a software developer with a general enough skill set to build all required components for a working piece of software.  They can handle the database, the programming logic, and the user interface, and they put it all together to deliver.

In a nutshell, that’s what we software people mean when we toss around this term.  But I can understand if you’re still scratching your head.  You’re probably wondering about some things now.

  • Why is it some kind of special thing that a software developer knows how to build all of the parts of the software?
  • Why is writing all of the software called “stack” and what does it mean for it to be “full?”
  • What is the origin of this expression?
  • How does one become a full stack developer?
  • Should you want to be a full stack developer?

For the rest of this post, I’m going to answer those questions.  When you’re finished, you’ll know everything you could ever have wanted to know about the term “full stack developer” and some things about software development in general, besides.

Continue reading “What is a Full Stack Developer, Anyway?”

Software engineer or software programmer

Is a Software Engineer the Same As a Software Developer?

Is a software engineer the same as a software developer?

It’s an understandable question.  When you’re on the outside looking into the software industry, it can seem like we programmers (software engineers, software developers, etc) have a dizzying array of titles.  And we do.

So what does it all mean?  What’s the difference?  Is “software engineer” just a synonym for “software developer”?

Is a Software Engineer the Same As a Software Developer?

Yes.  Full stop.  These are the same.  Different companies have different title preferences, but the titles describe the same thing: people who write code for a living.  

Sure, being a software developer at one company will always be slightly different than being a software developer at another company.  But that’s true in any line of work.  Similar jobs vary from company to company because the companies are different, not because of the titles.

Now if you look around the internet, you’ll see that there isn’t necessarily a consensus about this question.  You’ve heard my answer, so for the rest of this post, I’m going to elaborate on why I think this is the case by responding to arguments I heard on the contrary.

Continue reading “Is a Software Engineer the Same As a Software Developer?”