Memfault State of IoT Report

Advice For High School Students

Steve BranamJanuary 24, 2021



I recently received an email from a young lady in Indonesia asking about mechanical engineering versus software engineering as a college major. She was trying to choose between them.

She was curious about my experience because she had read in my blogs that I had started college as a mechanical engineering major, then ended up with a career as a software engineer.

You may be pondering similar decisions, or are wondering about a software engineering major in general. This post combines the advice I gave her with other advice I've given out.

This article is available in PDF format for easy printing

I don't know much about Indonesia, its culture, education system, or economy, and it's been 42 years since I was a college freshman. So there's a large gulf in distance and time between her situation and mine.

My advice is also very US-centric. But I think it's broadly applicable as long as you temper it with your particular place and time.

I also didn't follow a conventional path. I've had a successful career, but I've made some mistakes along the way and had some twists and turns, ups and downs.

I hope that by describing my failures, you can learn from them and avoid them. It definitely qualifies as stuff I wish I'd known when I was in high school.

I'll start out with some background about my education and career experience, then cover some advice based on them.

A cautionary note: this is a long post; the TL;DR is that if you find it too long to read, then engineering of any type may not be for you. Real-life engineering requires an ability to focus deeply and maintain your attention span.

Short attention span engineering is a recipe for disaster, and people will suffer as a result.

My Education Experience

I dropped out of college in my second year. That was my biggest mistake. It made my career much more difficult, regardless of specific engineering discipline.

What led me to quit? It comes down very simply to poor study habits. I was always a good student with good grades in middle and high school, but I never developed good study habits, so was unprepared for the demands of college.

I took my first algebra class in 7th grade and my first calculus class in 12th grade (final year of high school in the US), so treat that as my college preparatory period.

During those 6 years, I attended 4 different school systems, just one of the random circumstances of life. While that discontinuity created its own complications, it does allow me to compare those systems.

My main observation is that they were all pretty similar in their curricula and the way they managed classes and homework.

In general, for every hour of class time, I had 5 to 30 minutes worth of homework. Since some teachers would allow us to work on homework for the last 5 or 10 minutes of class, and I usually had a "study hall" period I could spend on homework, I was able to complete most of it before leaving school.

As a result, the habit I developed was that I only had to do a small amount of additional work outside of class time.

At a rough estimate, that meant schoolwork was 90% in-class time, and 10% out-of-class time. For 20 hours of academic in-class time per week, I was spending about 2 hours total out-of-class time per week.

College was much different. It took me a long time to understand that for every hour of class or lab time, I needed to spend 1 to 3 hours outside of class. That's how the curricula and classes were structured.

That meant college schoolwork was 25-50% in-class time, and 50-75% out-of-class time. For 20 hours of academic in-class time per week, I should have spent 20 to 60 hours total out-of-class time per week.

You can see the problem in those numbers. My habits were way off. I wasn't used to spending more time on schoolwork outside of school than in it, and I didn't adjust to that.

As a result, I did poorly and fell behind, and ultimately dropped out. That was the low point of my life.

I did eventually develop the necessary habits (see How To Ace Calculus). However, by that time it was too late for mechanical engineering.

My Career Experience

I fell into software somewhat by accident. While I've taken a few night-school college software classes, I'm mostly self-taught, from books, personal projects, and on-the-job training learning from my coworkers.

Make no mistake, self-taught is going about things the hard way. The conventional software engineering career path is groomed for a college education. Not having one was a serious impediment for at least a decade.

Even after my experience level came to outweigh that, it still occasionally cost me job opportunities. I suspect that today, with the widespread availability of undergraduate software engineering programs, it would be even more difficult.

How did I fall into it? The one college course where I put in the time outside of class was Fortran programming, which was required for an engineering degree.

I loved that class and was willing to spend all kinds of time in the bowels of the tech building working on it.

After quitting college, my second job was as a computer operator. This was a non-technical position loading tapes and card decks and pulling printouts.

But I got it based on my Fortran experience, because they wanted me to do some light programming. So ironically, despite the travails, my college education did lead directly to my career.

That was the opportunity I needed. They were very supportive of me learning whatever I wanted and using their computers to learn.

Using books and manuals (1980-era) and with guidance and assistance from my coworkers, I learned Pascal and assembly language.

Once I shifted from operator to programmer, I learned C. Once personal computers became available, I spent time at home working on personal projects and learning more.

That's been the pattern I've followed for the past 40 years. As new generations of hardware and software development tools came out, I learned additional languages and skills.

One downside of being self-taught is that I was largely on my own. If I had trouble with something, I didn't always have someone to ask for help.

So I had to spend time finding additional information and working through it. That made progress more difficult.

But that's a double-edged sword. While it cut me on occasion, I learned to wield it as a weapon. It made me self-reliant. I got good at learning from books, and later with the internet, online resources like blogs, videos, and courses.

One very good decision I made was to always look for jobs where I would get to learn something new. In addition to getting to put my experience to use and earn a good salary, that's been a criterion for any new job. As a result, I'm always adding to my toolbox.

The relatively recent availability of affordable emdedded systems development platforms for personal use has been the latest iteration.

What used to require a dedicated hardware lab with tens or hundreds of thousands of dollars of equipment now fits on my desk at home and costs under $1000 total investment. That's enough to be the basis for an entire career.

Though it took me too long to develop, that habit of spending significant out-of-class time learning has served me well. I've invested many hours self-teaching new topics. Even now, I regularly spend hours a week reading books and other technical materials and playing with new things.

That's been critical to keeping my career going. This is a field that requires a commitment to lifelong learning. The most important skill you can develop is the ability to learn new skills.

None of this path was planned. My plan was to work on the space program as a mechanical engineer. All the rest was me rolling with it and trying to adapt to the situation. Fortunately, it worked.

The lesson I take from that is that adaptability and versatility are important for career maintenance and longevity, and can help you as well.

In the words of Francis Bacon and Elizabeth Friedman, knowledge is power.

The other lesson I learned from it is that you need to have plans, backup plans, and backup plans for the backup plans. Because you don't know which way things are going to go, and you need to be prepared for when they don't go your way.

In the words of Louis Pasteur, chance favors the prepared mind.

My Advice

So here you are, a high school student contemplating software engineering or some other engineering discipline.

Maybe you came to it yourself, or maybe your parents or someone else suggested it. You have some decisions to make. And some habits to develop, if you haven't already.

The first thing to remember is that you're still a student. You're not expected to be an expert in anything.

So if you have some concerns about your technical skills and abilities, don't rule out a career in engineering. It's possible to improve those through study and practice if you're willing to put in the time and effort.

All engineering disciplines require a lot of work. None of them are easy. You have to have an attitude of perseverence and a willingness to push through difficulties.

I'm focusing on software engineering, but much of it applies to any type of engineering.

It's also worth remembering that there are many specialties within each type. For instance, here I'll focus a little more on embedded systems than other types of software.

Different specialties emphasize different things. Switching specialties can be as demanding as starting a whole new career, requiring a whole new learning path.

There are also fascinating combinations. Mechatronics combines aspects of mechanical, electrical, and software engineering into it's own specialty.

This is used in robotics, as well as simpler systems, including IoT. I think this is a great area, with great career potential.

My advice covers six areas below:
  • Study Habits
  • Continuous Learning
  • Math
  • Hands-On
  • Try It Out
  • Soft Skills

Study Habits

College requires spending 1 to 3 hours (or more!) out-of-class for each hour you spend in class or lab.

That can be a difficult shift to make, so you should start building towards that kind of work schedule now. Ideally, by the time you graduate high school, you'll be doing that.

What does college require you to do outside of class? For each of the technical and non-technical courses you take, it's some mix of:

  • Reading: whole books, textbook sections, papers, articles, study guides, tutorials, other resources (including video-based material).
  • Writing: papers, reports, lab reports.
  • Labs: science labs, programming projects. Even though regular scheduled lab time accounts for some of your in-class time, labs and projects can often require additional work, sometimes two or three times as much.
  • Working problems: problems at the back of each textbook section, additional problem sets.
  • Getting help: if you're having difficulty with something, you may need to spend extra time with tutors, teaching assistants, or study groups to get through it.

Even if your high school classes include these, expect the college workload to be significantly heavier.

What can you do in high school to build college-ready study habits?

  • Make sure you take an academically-demanding class load.
  • Do additional homework problems. Your assigned homework will probably be only a portion of the problems in your textbooks. Do the extra ones. See How To Ace Calculus that I mentioned earlier.
  • Do problems out of other books and study guides, like the Schaum's Outlines series or supplementary textbooks.
  • Read related books and study other outside materials.
  • Do some personal learner projects (see the Try It Out section below).

Some of this can be more like a hobby, for instance reading other books you find interesting and doing fun projects. Broaden your subjects and go deeper into them.

It can be challenging to find time to do this, especially if you have other extracurricular activities or an after-school job. Time management is an important skill to develop (see the Soft Skills section below).

Just don't make the mistake of thinking your final year of high school is a time to slacken off. If you intend to pursue an engineering degree, it's not. It's the time to ramp up, because college is going to take even more.

What about the argument that you should have time to be a kid? I've got some bad news for you, sunshine. That time has passed. You're preparing to enter the adult world in a serious manner, at significant financial cost, so you need to invest in it.

Continuous Learning

Once you have those study habits, use them for life. As I said above, software engineering is a field that requires a commitment to lifelong learning.

Don't think that once you get that degree, you're done learning. You may never go to formal school again, but you'll be self-learning forever. The school of life never ends.

The field changes constantly. There are always new technologies, new hardware, new languages, new techniques, and new products.

What may have been impractical before becomes practical as technology advances. Just look at the telephone.

When I started college, there was generally only one phone per house in the US, wired to the wall. Those hand-held communicators on Star Trek? Science fiction.

But now everybody has one, and it also happens to be an entire handheld computer and entertainment system.

That constant change drives a constant demand for people who know those new things. Being able to do both the old and the new makes you versatile, and will keep you employed for as long as you want.

Whenever you get a new job, make sure it's one where in addition to everything else, you'll learn something new. Maybe something big, maybe something small.

But add to your toolbox with each job. That broadens your skillset to make your more versatile and marketable. That gives you control of your destiny.

Sticking with just what you learned in college is the path to a short, boring career. You may get by for a few years, even a decade or more, but eventually the world will move past you.


All engineering requires a good math background. But different disciplines and specialties have different emphasis and different demands.

In software, a large amount of work requires only general algebra and basic descriptive statistics (the kind of statistics you use in high school science class taking measurements and summarizing them).

Some types of software then require trigonometry, vectors, and basic linear algebra. Other types require basic calculus and differential equations.

Big data and machine learning add inferential statistics and more linear algebra.

Embedded systems and signal processing use various types of mathematical filters, because real-life sensor data is noisy. That means it has randomness, random noise, in the measured values. Filtering removes the noise to smooth out the data; it separates the signal from the noise.

They also use two important transforms, the Laplace transform and the Fourier transform.

A typical engineering curriculum will require calculus, linear algebra, and differential equations courses (and will assume you already have algebra, geometry, and trigonometry). Once again, I'll mention How To Ace Calculus.

Software engineering adds discrete math, especially for the analysis of algorithms.

Probability and statistics may be optional courses, but I highly recommend them. They're especially useful in machine learning or robotics, which use Baye's rule and Kalman filters. For example, mobile robotics (including self-driving vehicles) has the problem of localization, that is, knowing the robot's position on a map within a certain probability, given positioning data and the noise in the measurements. This is a direct application of probability to the real physical world.

If you do well in all those courses, you can expect to be able to handle all but the most advanced math that comes up during your career. To handle those additional situations, you may need graduate level math courses.

It's also useful to understand how the formal math is applied in practice. Calculus is the study of continuous variables, but software doesn't work that way, it works with discrete values.

In calculus class, you learn how to differentiate and integrate symbolic equations, but in software, you need to apply numerical methods on actual values.

What's ironic is that when you first learn differentiation and integration, it's motivated by working with discrete values and specific delta changes in value. The deltas are reduced until you have the theoretical continuous forms. But to apply everything in software, you go back full circle to discrete values and deltas.

What the calculus does is give you the methods for transforming symbolic functions into their derivatives and integrals, which are themselves functions. Then you can implement those functions in discrete step software.

Newton's equations for calculating the position, velocity, and acceleration of a body in motion are a perfect, simple, intuitive example of this.

In embedded systems, a PID (Proportional-Integral-Derivative) controller from classical control theory is an example of applying the calculus in code.

Similarly with other math, you work with symbolic equations, but in software you perform computational algorithms on actual numerical values. This is quite literally the difference between theory and practice.

The math that you learn in class provides the theory that drives the software design. Then the code implements the algorithms and numerical methods that carry out that theory.

You need to be able to follow the notation and procedures in the theoretical presentation, then understand how the software methods implement it. You also need to learn the theory and notation so that you can continue to learn from papers and other resources after college.

What if you have difficulty learning the math? All is not lost. Worst case, it means you may not be able to work in all the possible software specialties. That limits your options, but there's plenty of software to be written using just high-school level math.

There are also alternative learning resources that can help, both during and after college. For instance, see the spectacular YouTube channel by Grant Sanderson, www.3blue1brown.com.

A related issue is that you'll learn some things that you don't end up using for a while, and then at some point you'll need them. So it's good to spend time maintaining your math skills long term after college so they don't get rusty.

This is another area where those alternative learning resources can help if you need a refresher; that's how I found 3blue1brown.


There are two aspects to taking a hands-on approach. First, it's easy to read something in a book or see it in a lecture and think you've learned it.

No, that's only the first step. You're only fooling yourself if you think you're done.

You really learn by doing. That's the second step, that completes the learning. So spend the time afterwards to actually do it.

Don't just do it once. Drill it until you're sure you know it.

Second, nothing locks in knowledge like actually using it in the real world and working through the practical problems that come up.

For your remaining time in high school, and while you're in college and in between terms, look for opportunities to get hands-on experience.

These will give you valuable practical skills that you'll use repeatedly throughout your career.

This is where theory gets put into practice. It's also where you can find it out if you're able to apply it, or if you need some review.

Lab-based classes or courses with practice projects are one way. These are part of a regular curriculum schedule and will have well-defined problems.

Internships and co-ops are another way. These may be a regular part of a curriculum or may be totally independent. They'll typically be unstructured, without specific things to work on.

These can offer tremendous opportunities to learn good practical skills in a real working environment. See The Self-Directed Virtual Internship for what to do if you have trouble finding internships.

Personal projects are another (see the Try It Out section below), as well as work-study or part-time jobs. You just need to be careful with time management on these options, to make sure you're not taking too much time away from your academic work.

The hands-on approach will serve you well throughout your career. Everyone appareciates an engineer who can get things done no matter what gets in the way.

No one respects an engineer who can't actually do the work, regardless of what their GPA says.

Try It Out

For a modest investment of money and time, you can try out some real embedded system programming right now. This is well within the capabilities of a motivated middle- or high-school student.

You don't need any programming experience to get started. You can learn some real skills and start on the road to learning more.

It's a great way to find out if this is the kind of thing that appeals to you and help you decide if you should choose a software engineering major.

Arduino is an open-source family of inexpensive, easy-to-use embedded system boards that you can program and run directly from a personal computer (Windows, Mac, or Linux).

The really nice thing about Arduino is that it takes care of a lot details that normally get in the way of beginners learning embedded systems.

You need to learn those things eventually, but you don't need to worry about them yet. You can learn more about Arduino at www.arduino.cc, but for now, let's look at a kit that provides everything you need.

On Amazon, a company named Elegoo sells 3 different levels of Arduino-compatible starter kits. The kits include an Arduino UNO R3-compatible board, cables, wires, breadboard, and a variety of devices that you can connect to the board.

Each kit includes a CD with a tutorial package that has code and instructions for simple projects that demonstrate the items in the kit. The projects only show the most basic usage, but that's enough to get you started.

You can also downloaded the tutorial packages from the Elegoo website if you don't have a CD drive, or want to check them out before you have a kit.

Even better, 3D-printer enthusiast Bryan Vines has put together an excellent YouTube playlist: Electronics & Code.

In these videos, he walks through the tutorials for the Elegoo "Super Starter Kit", showing how to connect and run things, and explaining how the devices and code work.

This is great hands-on instruction. It's also very helpful because the Elegoo instructions don't cover the code, and the Elegoo code doesn't have many comments to explain what it's doing.

Another excellent resource is the book Make: Learn Electronics with Arduino: An Illustrated Beginner's Guide to Physical Computing (physical computing means making a computer interact with the physical world around it, using input sensors that can detect conditions, and outputs that can display and control things). A similar book is Hacking Electronics: Learning Electronics with Arduino and Raspberry Pi.

In addition to the Arduino website, there's a vast ocean of other sites and videos online with great information. These offer more projects, more details, more code, and helpful information for overcoming problems.

If you'd like to learn more about the C programming language, see The C Book, which is free and also available for download as a PDF.

The kits and their tutorial package download links:

Kit Price (USD) Tutorial Package Additional
Basic Starter Kit $17.99 Download
Super Starter Kit $36.99 Download
Most Complete Starter Kit $58.99 Download Advanced Projects

You can also find the downloads at the Elegoo Arduino kits support page, you just have to navigate to the right kit selection.

Get a kit and try to do all the projects in the kit tutorial. Then ask yourself these questions:

  • Did you like doing the projects?
  • Were you able to work through any problems that came up?
  • Did you feel a sense of satisfaction when they worked?
  • Did you learn new things doing them?
  • Did they make you want to learn more?
  • Did you go look for more information somewhere else?
  • Did they give you ideas for other things to try?
  • Did you try some of those other things?

If you answer yes to all of those, you might enjoy a career in embedded systems software. If you answer no to many of them, you might not (but don't forget that there are other types of software work).

Another good option is to try out the Raspberry Pi. There are similar kits for the Pi. For information on it, see my post Absolute Beginner's Guide To Getting Started With Raspberry Pi. The Hacking Electronics book above covers it.

If you really get hooked on this stuff, you can learn more in my post So You Want To Be An Embedded Systems Developer.

Soft Skills

Soft skills are the skills that help you function in a social environment. These are critical, because software engineering is a team effort.

Even if only one person works on a piece of software at a time, over time there will be multiple people. And other people will need to know how to use the software.

It's also common to have a team of people dividing up and sharing the work.

Soft skills are generally not taught formally in college engineering programs. So where do you learn them? For the most part they develop informally as a side effect of doing other things.

Unfortunately, that means they may not be all that well-developed. It's better to be conscious and proactive developing them.

The main soft skills I'll emphasize here are communication (written and verbal), time management, persistence, and deep breathing meditation.


Communication is critical to engineering, because you have to convey complex topics to others.

You have to explain how things work, how you want them to work, what's going wrong with them, how to use them.

You might do this in writing, where many people can read what you've written, so you get a force muliplication effect, or verbally, in small or large groups.

Develop the skills of writing and public speaking through practice.


Writing in engineering is technical writing, which aims to inform and convey knowledge. You need to provide details in a clear and concise manner.

The material needs to be organized and use formatting features to break it up and make it easy to follow and navigate.

Use headings, bulleted and numbered lists, tables, and graphical elements such as photos, graphs, and diagrams. Even cellphone photos of hand-drawn diagrams can be helpful.

Use links and cross-references. Identify your sources to back up what you wrote, or in case someone wants to learn more. Include a simple table of contents.

Here's a trick to easy readability: use short paragraphs. Some people are put off by long, dense paragraphs, where the eye can get lost easily, and may not read the material.

Write in active voice with a simple, direct style. Think Hemingway, not Lovecraft.

Use this article as an example of all these techniques.

Practice writing explanations and instructions, then let them sit for a while and come back and review them.

Do you feel what you wrote is informative and sufficient? Do you like the way you explained it?

What if you have someone else read it? Do they agree? Are there some things they find confusing?

Revise and repeat. No matter how hard this is at first, you'll get better over time. This will be a critical skill in your career.

Public Speaking

Public speaking tends to intimidate people. I had a terrible fear of it well into my career; I could hardly get a sound out if there were more than 3 people in front of me.

What got me over it was joining a Toastmasters International group at work. Toastmasters has one goal, to help people learn to speak in public.

It's a great way to practice and overcome your fears in a supportive environment, and develop the confidence to speak in front of others.

Look for a Toastmaster club in college. There's even a youth program for under 18, so you might be able to find one in high school.

Then if you're asked to present something in a meeting, at a meetup, or at a conference, you'll be able to handle it. Like writing, you'll get better over time.

These can be combined with another great concept: see one, do one, teach one. The act of teaching something to someone turns out to be a great way to improve your own knowledge. Read about it in my post Sodoto: See One, Do One, Teach One.

Time Management

This is all a lot of work. That makes for a busy life. If you don't manage your time well, you'll have all kinds of problems.

You need to divide up and manage your time so you spend enough on each of the things you need to do, as well as allow time for other things. You need to be sure you make adequate progress on things, but a bit at a time so they don't overwhelm you.

You need to prioritize and avoid procrastination to be sure things get done when they need to. You need to break up large tasks into smaller chunks so they don't completely take over and prevent you from getting other things done.

One very useful method is the pomodoro technique. The idea is that you set a timer for a specific amount of time to spend on something, and during that time you focus exclusively on that task.

Pomodoro is Italian for tomato, and the technique is named for kitchen timers that are shaped like tomatoes. I like to use my cellphone timer or this timer.

I was never very good at time management when I was younger. I would spend unlimited time on things I liked to do, and procrastinate until it was a crisis on things I didn't like to do.

Now I use the pomodoro method for all kinds of things, using the timer for both maximum and minimum time limiting.

I set it as a max limit for something I like, something very engaging; otherwise time will get away from me. For example, reading a book, or taking an online course.

I set it as a min limit for something I don't like, to ensure I at least spend that minimum amount of time on it; otherwise I'll just put it off, procrastinating. For example, doing household chores.

The good news is that once you get going on something, momentum and the satisfaction of that little achievement encourage you to set the timer for another period and get more done.

Whatever large or small tasks you have to do or want to do, break them up into reasonable time chunks. Make up a hierarchical checklist of small tasks achievable within those time segments. This is known as a work breakdown structure (WBS). Use the timer to run them down.

For example, I use the method for housework (which I hate to do!). I'll set the timer for 15 minutes to make sure I spend some time getting it done.

I have a room-by-room checklist of the dozens of small housework tasks that cover the whole house, each requiring 5-15 minutes. That's my WBS, that I execute with my timer.

Seriously! The method works. Otherwise I would be overwhelmed by the total time: I don't have time to spend hours taking care of the house! Well, yes, I do, 5-15 minutes at a time.

Whether it's a class or a major project or just the simple mundane responsibilities of life, the method works.

The pomodoro timer can also be helpful for others around you, to show them you're occupied for that time, but will be available when the timer runs out.

You can be as structured as you want with this. You don't have to live your whole life by the clock. Be sure to allow yourself some time to relax.

But this can help you get control of a demanding school and extracurricular schedule and all that outside-of-class time, along with all the minutiae of daily life.

That will carry on into your professional career, where projects have deadlines and there are just as many demands on your time.

What about when you truly feel overwhelmed? First, if you're feeling anxious or panicky, take a moment to restore calm (see the Deep Breathing Meditation section below).

Then take a look at your WBS. Break it down further to a number of smaller, simpler items. Then pick the smallest, simplest thing that will make forward progress and do it. Then another one, and another.

They don't even need to be in logical order. The main thing is to make some progress. Then, as you start checking things off, you can look back on them and realize that you've accomplished something useful.

Maybe it's a little disorganized because of the specific items you chose to do, but now those things are done. Each one is a success. Use that simple progress to motivate you to continue with more, taking advantage of the momentum.

At some point, your logical focus will assert itself, and you'll be more organized about the things you choose to do, rolling up small items in the WBS hierarchy into large ones.

The whole point is to get you past that initial inertia. Once you're moving, it'll be easier to do more. You can accomplish enormous things, one small step at a time.


Any kind of software engineering requires persistence, patience, resilience, and the ability to overcome frustration.

Things often go wrong along the way. You can't let them stop you.

Embedded systems development in particular is hard. There are an infinite number of roadblocks, especially when you're learning to work with hardware, software, or development tools that are new to you. You often face learning curves in multiple directions at once, compounding the difficulties.

You'll experience many failures. If knowledge is power, not knowing is powerlessness. There'll be times when you'll want to bang your head against the wall in frustration.

Be prepared for that. Know when to circle around and try a different approach. Know when to look for more information.

Know when to ask for help. Remember that it's a team effort. Your teammates are a resource to help you through those times.

You have to have a hacker mindset. Not in the negative connotation of hacking, but in the positive connotation, where you keep learning, exploring, adapting, and trying in a continuous feedback loop until you figure it out and get it done. You don't let anything get in your way.

Deep Breathing Meditation

When you need to relax, or slow your churning mind, or calm yourself, deep breathing meditation is a very simple and effective technique.

I use it all the time to combat frustration, stress, or worry, and to help get to sleep.

I also use it to help get back to sleep when I wake up at 2AM with my mind racing, thinking about something I'm working on. That's been my particular problem for decades, which then leaves me tired the next day. Sleep deprivation is similar to being drunk.

There's an enormous amount of information available on meditation in its various forms, sometimes with spiritual or religious connections. Here I'm focusing on the purely pragmatic physiological aspects.

This does for the mind what physical fitness does for the body. It can also influence your brain chemistry to improve your sense of well-being.

All it takes is a comfortable place to sit. Focus on your breathing. Slow it, steady it, regulate it. Allow all the sounds around you (even the jarring and disruptive ones) to come in and pass through you, simply acknowledging them and then forgetting them.

Close your eyes. Count your breaths, 1 (in), 2 (out), 3 (in), 4 (out)...up to 10. Then start again. When your mind wanders, simply pull it back. Don't scold yourself. Don't worry about where you left off. Just start counting over again.

After 5 or 10 or 15 minutes of repeating this (use your pomodoro timer), open your eyes. Continue to focus on your breathing. Then decide to be done when you're ready.

That's it. A whole beginner's meditation session. There are helpful apps like Headspace and Ten Percent Happier that do exactly that, and then build on the experience. But it's sufficient to stick with that. There are also YouTube videos.

Here's another application of the technique. Sometimes I feel tired during the day when I'm trying to get stuff done. Rather than forcing myself to push through and keep awake and not really accomplish anything, it's better to take a break and zone out for a not-quite-nap.

I set my pomodoro timer for 15 or 20 or 30 minutes, start the deep breathing meditation for a few minutes, and then just allow myself to drift off, maybe even fully to sleep, confident that the timer will keep me from being out too long.

Whether I actually sleep or not, when the timer goes off, I feel much better than I would have fighting it. I feel more alert and refreshed. Fighting it would have gone on for another half hour, during which I would not have accomplished anything useful.

Taking that managed break allows me to return to usefulness faster. You can even have a nappuccino, drinking a cup of coffee first, and then using the zone-out time to allow the caffeine to take effect (see this simple guide).

By practicing meditation regularly, once or twice a day, it becomes a useful way to settle your mind. It's not a magic pill, it doesn't change anything about the world around you, but it helps you live in it.

It helps you be the calm in the storm, anywhere, any time.

Memfault State of IoT Report

To post reply to a comment, click on the 'reply' button attached to each comment. To post a new comment (not a reply to a comment) check out the 'Write a Comment' tab at the top of the comments.

Please login (on the right) if you already have an account on this platform.

Otherwise, please use this form to register (free) an join one of the largest online community for Electrical/Embedded/DSP/FPGA/ML engineers: