Dear younger self, here are four tips for reaching your goals

2 readers like this.
teacher learner

Opensource.com

Dear younger me,

I am writing to you from 10 years in the future.

Over the next ten years, you'll find that you love computers, but there's a barrier to you starting a career based on this thing you love. You will trip over an oversupply of information from online publications, e-books, and tutorials promising to teach you X language and Y framework, and falter from a lack of direction. So, here are a few pointers from your future self.

Do daily low-level programming exercises. They are your bread and butter, stick with them.

Once you master low-level programming tasks, you'll be 25% closer to your goal. One big, fat C programming textbook with lots of exercises is enough. And since I know you pretty well, hehe, I know that you have a book like that. But that book is hard to find online, and you may have left it at your mother's house, so here is another book: The C Programming Language 2nd Edition. Don't worry, it was released in 1988.

Learn soft skills. But don't neglect your daily low-level programming exercises!

Soft skills are people skills. Communicating, working together, and getting along to get good work done. They are just as important as low-level programming, if not more, and the fastest way to learn them is from interacting with other people. For you, Twitter is only 2 weeks old, but trust me, it's still around, and a great way for you to connect with other people online. Your personal brand is another thing to consider now, and your interactions with others will be part of that.

Don't forget to do your programming exercises! Try learning HTML and CSS to make your own websites.

Use a customizable IDE (integrated development environment).

The best way for you to program is to use the Emacs text editor. Today, Emacs has a new Emacs website with cool videos, but you don't have access to that yet. So, use the hotkey combination Ctrl+H+T from an Emacs window to bring up the tutorial. And the best way for you to use Emacs is in a Linux terminal.

As a Windows-only user, you don't know this yet, but you like Linux very much. It is free and accessible. A Linux terminal emulator is the best thing for you to use for your low-level programming exercises, and if you want to run performance tests you can install a Linux distribution and dual-boot your PC.

I am using a MacBook these days because is the only operating system that allows me to emulate all the others, and it has a native terminal application that supports Linux-esque commands.

Use open source software.

My message to you today would not be complete without emphasizing the importance of open source software. See, you eventually attend Holberton School where you and your peers mostly use open source tools and technologies. Your learning is maximized in this way, because you become a part of something bigger and work collaboratively others.

Work hard to learn the vocabulary (which can be different and confusing) and find a way to get exposed to the whole stack. Learn higher-level languages such as Python, Ruby, Node.js, and PHP; as well as lower-level languages, mostly C and a bit of Assembly.

Another salient part of the stack is the world of system administration and DevOps. If you can master the art of writing scripts in Bash, Python, and Ruby, and think of potential problems down the road, you are already thinking like a Site Reliability Engineer, or an infrastructure developer. Your goal.

User profile image.
Full-Stack Engineer at Holberton School 

9 Comments

Hi,

I think you are missing a link from "like theses examples" in the line which starts with 'Once you master low-level programming tasks..."

Yes. I would also like to see this added.

In reply to by John Boyd (not verified)

Thank you for catching that. We'll reach out to the author and get the link added ASAP.

In reply to by Clint Patterson (not verified)

Hi John, Clint,

I was to include a couple of examples there but I missed it. The kinds of examples I had in mind are the following:

1) Using only the print_char function provided, print the entire alphabet in lowercase.

```
#include

int print_char(char c)
{
return (write(1, &c, 1));
}
```
Result:
daniel@ubuntu:~/low_level_programming$ gcc -Wall -Wextra -Werror -pedantic 1-main.c 1-print_alphabet.c print_char.c
daniel@ubuntu:~/low_level_programming$ ./a.out
abcdefghijklmnopqrstuvwxyzdaniel@ubuntu:~/low_level_programming/$

2) Using only the print_char function provided, print a number of type `int` passed to it. You must handle all values for signed int types.

Result:
(for example, if you pass the number 1024 to your function)

daniel@ubuntu:~/low_level_programming$ gcc -Wall -Wextra -Werror -pedantic 2-print_number.c 2-main.c print_char.c
daniel@ubuntu:~/low_level_programming$ ./a.out | cat -e
1024daniel@ubuntu:~/low_level_programming$

(for these examples, you should put your main function in the corresponding N-main.c file, and call your function which resides in the N-name.c file)

Please note that the level of difficulty rises substantially going from example 1 to example 2. For example 2, please think about your strategy first, and code it after. Also, having the book referenced in the article should help if you are a beginner.

For more practice, check out the Algorithms section on Hackerrank ( https://www.hackerrank.com/domains/algorithms/warmup )

In reply to by Clint Patterson (not verified)

Great advice! I am curious to know about the technology you used to get this post back in time 10 years, but I guess I'll check back in a decade for a response.

Great tips, Daniel. 'Do daily low-level programming exercises.' is a great tip especially the focus on 'daily':)
Along with these tips, finding the right course or tutorial to learn the programming language is a must. If we start from a not-so-great tutorial then we end up getting frustrated and wasting a lot of time. https://hackr.io can come to the rescue here where all the programming courses are voted by the community.

As an add-on to your third tip learn vim as wells since its a superset pretty much of hi your also learning a lot about vi, ex, ed, and sed.

Also for a fifth tip learn to a terminal multiplexer (screen / tmux) or a tiling window manager (dwm / wmii). If you don't have to do window management manually you can quickly start to think of your entire OS as one giant IDE. E.g have a term open for your editor, one for your debugger , one for your man pages etc.

Great advice. With a little tweaking, you can apply each tip to just about any career. Yes, including professional writing! :-).

I would recommend also learning a new programming language every 1-2 years. These days it's easy to get corralled into being a "Java programmer" or a "Python programmer" or whatever. New languages not only make you more marketable, but teach you about how and why programming languages work -- and more importantly, how to approach the ecosystems and programmer cultures in each language community. Even if you still have a favorite language, the ecumenism goes a long way.

Creative Commons LicenseThis work is licensed under a Creative Commons Attribution-Share Alike 4.0 International License.