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 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”

A set of keys for home

Do Programmers Work From Home?

In this post, I’ll answer the question “do programmers work from home?” This is a burning question in the minds of many. And it goes beyond programming and beyond IT. There are a few ways to answer this question so I’ll go through each. You’ll learn more about how programmers and anyone can work from home.

I’ve been on all ends of that spectrum in my eight years of working in software development. In the first segment, I’ll share my experiences. Later, we’ll look at how to find these opportunities. Finally, I’ll wrap up with other models besides full-time employment. Let’s get started with the first case…

Continue reading “Do Programmers Work From Home?”

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?”

HTML

Should Programmers Learn HTML?

Should Programmers Learn HTML? I haven’t thought about this in a long time, but I recently came across a programmer who didn’t want to learn HTML. He does mobile app development for Android and iOS. He has an opportunity to learn HTML and add it to his repertoire, but he won’t. I think everyone should learn HTML and here’s why…

You Can Get a Job Using HTML

A quick search on a job board like indeed.com returns about 30,000 jobs using HTML. The salary range for those jobs is from $30k per year to $130k per year. There are even jobs that are not programming jobs where they want HTML experience.

That just goes to show what I think anyway: anyone and everyone should learn HTML. Not only does it enhance your career options, but it gives you an idea of how the web works. We all use the web, don’t we?

HTML is Everywhere!

You find HTML all over the web. The page you’re reading right now is HTML. If you want to see the HTML, use the “view source” feature of your browser. Usually, a right-click will get you there. Alternatively, you can use “Ctrl + U.” You may need to use “Ctrl + Click” or “Alt + Click” depending on your operating system.

Did you go cross-eyed looking at the page source? It can be daunting if you don’t know how to read it! But when you understand HTML, you know how to use one of the most powerful tools of our modern era.

HTML is so ubiquitous, it’s like how everyone in 1837 shoed a horse or something. Well, except that it’s much easier to learn. You don’t even have to leave the comfort of wherever you are right now! Seriously, let’s try it…

You Can Do HTML Right Now

That’s right! You can literally make a web page right now. Here’s how you do it:

1. Open a text editor. It needs to be a basic text editor like notepad or TextPad.
2. Type or copy/paste the following into the text document:
<h1>Hello, World!</h1>
3. Save the document as “hello.html.” You need to change the type of document from “.txt” to “*” in the save dialog.

Now find where you saved the document and open it. It should open in your browser, and you should see a good message in big letters!

Did you follow along? If not, that’s OK. You can still see how easy it is to write HTML. There are a few rules to keep in mind, but not many.

HTML is Like XML

We’re trying hard to kill off XML in software-land. JSON is taking its place in many ways. But it won’t go away for a long, long time. HTML used to have a lot in common with XML. It’s gone its own way since the introduction of HTML5. There are different standards because, frankly, it has a different use.

XML is for exchanging data in a structured way. HTML is for expressing the structure of a web page. The difference here is that XML has to express data types, namespaces, etc. HTML has a standard set of elements like

  • Input
  • Form
  • Label
  • Div

It doesn’t have to be everything to everyone; it only has to be everything to a web page structure! It’s like XML, but it isn’t. It’s a bit simpler.

I Want to Know More

OK, so here’s what HTML looks like:

<p>
Hello, this is some text inside a paragraph. I can put a link in the text like this <a href=”https://makemeaprogrammer.com”>awesome!</ a>. There are many other cool things I can do with HTML. I can make something <b>bold</ b>. I can make a list.
</ p>
< hr />
<h4>this is a list</ h4>
<ul>
<li>item 1</li>
<li>item 2</li>
</ul>
<large>this text is large</ large>
<p>
Inside another paragraph of text, I can put an image <img src=”” /> but that kind of tag is “self-closing.” Some tags are like that. Others can have something between including other tags. Some tags can’t go inside other tags.
</ p>

If you caught everything in this sample of HTML, you’ve learned a bit about a few element types and the basic structure of HTML. There are some rules. It’s a structured markup language. You can nest some elements inside others. Other tags are self-closing. When you learn HTML, you’ll learn about all the nuances. They aren’t tough to follow once you get the hang of it.

You Should Learn HTML

Yes! You should learn HTML. It’s easy to learn, and it’s useful. You’ll find many opportunities where you would have to know HTML. You’ll probably need it at some point, even if you don’t need it right away in your first programming job.

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?”

Students graduating after obtaining education

What Education Is Needed to Become a Programmer?

If you want to become a lawyer, you go to law school.  If you want to become a doctor, you go to med school.  So if you want to be a programmer, you go to… programming school?  Meaning, you get a computer science degree or two, right?

Well, not so much.  It’s a little more complicated than that.

In this post, we’ll take a detailed look at the paths to becoming a programmer, focusing on what education you need, how much of it, and where to get it.

What Education Is Needed to Become a Programmer?  The Short Answer

The question of programmer education is a relatively complicated one.  But the answer to the question, “what education is needed to become a programmer” is actually kind of simple.

Shortest answer: none.

The second shortest one, long enough not to be flippant is this: unlike many other knowledge work vocations, programming requires no special certification or credentials.  Because of that and because programmers are in such high demand, there are no specific educational requirements.  If you can demonstrate an ability to program, you can get a job as a programmer.

So, as you can see, there’s a short answer, but not necessarily a simple one.

No Specific Education Requirements Doesn’t Mean No Education

If you have no programming background whatsoever, you obviously can’t just wander on down to Apple Headquarters and request a six-figure programming gig.  Incidentally, if you do try this, please record a video of the proceedings on your phone, because I imagine it’ll be pretty amusing.

So some minimum requirements exist.  They have to.

And they do.  It’s just that they’re situational and somewhat objective.  Whereas a medical license is your only (legal) path to being a doctor, a computer science degree is just one path to being a programmer.  Some companies may require it.  Others might not, and instead will hire people with degrees in other things or with a lot of previous work experience.

For the purposes of this post, I’m going to break down the path of a programming career into a few “buckets.”  This might not cover every human being that has ever programmed for a living.  But it will cover most of them, and it’ll give you an idea of your options.

So let’s look at the different paths to professional programming and what education you need.

Continue reading “What Education Is Needed to Become a Programmer?”

Programmers interacting

How Do Programmers Interact With the Rest of the Team?

Today’s question is an interesting one that people outside of the programming world ask me a fair amount.  Loosely speaking, this question is one of how programmers interact with the rest of the team.

But here’s the thing.

That question typically comes to me in the form of many more specific questions:  Should programmers test software?  Or how does project management work with the Dev Team?

So let’s today take these questions in aggregate.  Who are the rest of the folks that programmers interact with?  And how does the division of responsibility work?

What Are These Other Roles?

Before we can really address that, though, we need to take a look at who these folks are.  Software development isn’t just a bunch of programmers in a room.  Let’s see who else is typically involved with software projects, and what they do.

  • Testers—these are people whose role is to run the software and see if it does what it’s supposed to do.
  • Quality assurance—testing generally falls under this broader umbrella, and quality assurance people are more generally responsible for making sure the software product is up to snuff, across the board.
  • Project manager—the project manager typically deals with external stakeholders, keeps track of progress and schedule, removes obstacles from the team, and generally keeps an eye on the prize.
  • Development manager—this is the person in the organization to whom the team reports, otherwise known as the programmers’ boss.
  • Business analyst—this person shares some overlap with the project manager, but is primarily responsible for deciding what customers need the software to do.
  • Operations/support—people in these roles deal with issues related to the running and use of the software, as opposed to the programmers who build it.  (Note that a movement called “DevOps” drives at blending development together with this role.)

Please note here that I’m not getting into specific roles within the software world, which include things like architects, “back-end” developers, “front-end” developers, DBAs, etc.  All of those distinctions are topics for another day.

Today, we’re focused on answering questions related to the (typically) non-programming folks on the team.

Continue reading “How Do Programmers Interact With the Rest of the Team?”