Letter From Take Up Code Founder

It’s Time To FINALLY Take Control Of Your Future, Learn Skills That Are In Demand CONSTANTLY At Major Companies, And Transform Yourself Into The Confident, Successful, And Capable Person That People Look To For Guidance And Opinions.
If You’re Ready To Finally Say Goodbye To Challenges Like Fear Of Job Loss, Unsatisfying Work, And Anxiety That Are Holding You Back From TRUE Career Success, This Will Be The Most Important Letter You Ever Read.
Dear Friend,

Have you ever missed a promotion or lost hope of ever finding a rewarding future? Are you starting to realize that something needs to change? That there is no way you can make ends meet when you are no different than any other employee and the only thing you have to hope for is more seniority?

Be honest with me here.

I want to know …

… have you ever wished for more than just keeping up with the standard of living if even that is possible? Have you become so used to the same troubles that you can only shake your head and sigh when thinking of your dreams from younger days? Are luxuries just something in the movies or on television?

… have you ever wondered how some people just seem to know exactly how computers work and are able to turn that knowledge into programs that make millions of dollars and entitle them to offices, promotions, bonuses, and stock awards?

… have you ever thought any career dealing with computers let alone programming them was just too hard and you might as well resign yourself now to the realities that your current struggles will just keep beating you down?

… have you ever thought back to your school days and those boring lectures with all the theories that just made your eyes blink and wished there was a way to avoid the grind?

… have you ever wished you had met different people or grown up in a different neighborhood so that now you would have contacts that could help you?

… have you ever wondered what it would be like to enjoy work without time clocks or the slow crawl to a break that is over almost before it begins? What would it be like to go get a free coffee made to order or a free soda or a free juice whenever you felt like one? What would it be like to attend meetings where lunch was served complete with giant chunk cookies and everybody discussed the current project because it was fun?

… have you ever wondered where software engineers obtained their skills and thought it must have been from some fancy, elite university with ivy growing on the stone walls that would never accept you even if you won the lottery to obtain the money needed?

… have you ever considered trying to learn computers on your own in secret only to give up because you had no idea where to begin or because the book you found put you to sleep after just one paragraph?

… have you ever thought you were too old to learn something new or even if you did what good would it do you now?

… have you ever laughed at the idea of trying to apply to college with a bunch of teenagers who were still riding bicycles just a few years ago?

I want to know these things because I can help you.

I’ll be upfront with you – I have a Bachelor’s degree and that’s not something I can give to you. I also cannot promise that you will find work of any kind let alone as a software engineer. I do know it is possible to learn how to program on your own because my degree is in electrical engineering and I taught myself how to program and I know many other people who have done the same. But it’s really hard. I made lots of mistakes at first and continued making mistakes until, well, let’s just say that part never quite ends. You see, if you aren’t making mistakes, then you’re not pushing yourself hard enough to learn new skills. We all learn from our mistakes.

It’s really easy to get frustrated and give up. Especially with all the mistakes that you are going to make. That’s where you can benefit the most from my guidance and coaching. It doesn’t matter if …

… you’re in your mid-thirties looking to make a career change and trying to decide if you still have the energy left after a day’s work to start something new. About the only thing I can promise you is that if you don’t change, then you’ll just be signing up for more of the same.

… you’re a high school senior wondering if computer programming is really all that it seems. You probably have doubts that you’re just beginning to realize exist.

… you’re in your sixties and trying to learn a thing or two so that you can finally start a software company to develop an idea that only someone with your experience would have thought of.

I can help you and it also doesn’t matter if …

… you’re a complete novice with computers and while you know how to browse the web and send emails, everything beyond that is a mystery.

… you had some computer programming training but it was a long time ago back when computers had a turbo button to control their speed and floppy disks really were floppy.

… you’re currently enrolled in a vocational or college school and looking for some real insights and experiences.

… you’re a working professional software developer looking to brush up on some advanced topic like template meta-programming.

Yes, I can help you. Now, you might wonder how I can help you and at the same time the other people who are so varied in experiences and skills. The answer is because this program is ongoing and focused on what you need instead of some fixed curriculum that I have decided ahead of time to follow.

Does this mean there is no curriculum? No, there is. And there is also a natural progression that I will help you to navigate. What I mean is that this is not a fixed program where it has already been decided that it will begin next week at the beginning and end several weeks later. There are times when I will explain a beginning topic and other times when I will work with somebody on their own design and suggest a method that maybe that person has not learned yet. Then I’ll explain that new topic. You’re free to listen and ask questions. And I will sometimes provide more general purpose classes on a specific topic. The main point though is that all of this is driven by your needs.

There are just too many things to learn and master that can possibly be covered in any standard curriculum. But there’s something else that is different about this program.

The Big “Ah Ha!” That Changed Everything For Me

With few exceptions, almost every other class and book about programming is broken into small individual lessons. Lessons that can be covered in a single quiz or learned in a single chapter. This is like trying to learn to speak a foreign language by learning just a bunch of words without ever trying to put them together until after you had supposedly completed the course. While I also keep things as small and simple as possible, the biggest advantage that I’ve learned about over the years is that it’s much better to learn skills as they apply to a larger project. This let’s you see exactly how the concepts work together.

I’m talking about the kind of projects that you would find in a real software company working on a real customer oriented solution. With that in mind, I decided to teach programming through game development and have code already written that would be similar in size and complexity to what a team of professional software engineers would produce.

Makes sense, right?

Here are the projects that are ready right now:

  • Summary of unit tests

    C++ unit test framework

    I’m a big fan of test driven development so it was natural that one of the first things I did was look for a way to test the C++ code. I wanted something small and easy to use. Ideally it would be just a header file that needed to be included. And I also wanted […]

  • Ones and zeros in a binary tunnel

    Protocol Buffers compiler

    Not only is this project incredibly useful, but there’s a lot to learn from how it was built. When you need to send information to another computer or another component, the format of that message is critical. How do you define it? What do you do when you need to add more information to the […]

But it doesn’t end there! Out of the few exceptions that I just mentioned, even fewer take you on the journey as it progresses. You see, software does not go from a blank page to the final product. Remember those mistakes? Yeah, they’re there in any large project and if you don’t learn how to recover and adapt, you’ll quickly get frustrated because your code just never quite seems like the polished examples that classes and books use to explain their unrelated topics.

So not only are the samples that most classes and books provide not up to the task of preparing you to program, they set you up for frustration and failure because you wonder why you can’t write code like that right away. This is the big “Ah Ha!” realization that I learned many years ago and have used it to teach myself and others many different technologies. And this is the type of project-based learning that will also benefit you.

If you are ready to get started, then let’s go. You don’t have to wait for some arbitrary date when the next class begins. Everything is weekly. Click below to sign up and stop and start whenever you want to.


What Exactly Will Be Covered?

Learning through projects and specifically through game development while providing you with all the benefits that I just described is probably still too high level for anybody to be able to compare. I’d like you to be able to compare point-by-point what topics are available for you to master. Here are some specific topic descriptions:

 C++ and C#  – I will focus on C++ initially because there are aspects that you need to understand before moving on to a language like C#. Things that if you don’t learn early will come back to haunt you later. This covers the basic structure of the language and how to express common programming concepts in each language. You’ll learn the basics for both the Mac and Windows machines and I’ll show you:
  • How to setup your computer to begin programming.
  • How to setup your projects so you’re not faced with a complicated environment and have no idea where to begin.
  • How to create your first program and the choice you have available. Yes, there are different kinds of programs.
  • How to get your program ready to run. And what to do if it doesn’t work.
 Common programming concepts  – Understanding these will help you move from one language to another. We’re not trying to learn every way possible to program here, but knowing what is common and what is specific to a certain language will help you better understand what you are doing.
  • How to declare and use variables and all the different types. You need to work with some letters? That’s one type of variable. Numbers? That’s another.
  • How to create and call methods that allow you to do the same things without needing to write all those instructions all over again. And what if you want to do something again but just slightly different? You’ll learn that too.
  • Computers have a lot of memory and you will need to know how to use it properly. You’ll learn about memory addresses and pointers. This is one of the areas that will help you when we get to C# because C# hides pointers. But you’ll have a hidden understanding of your own.
  • How to control the flow of your programs so that decisions can be made and your program can take different paths based on those decisions. You’ll learn about “if” statements, “else” statements, blocks, “switch” statements and more. This also includes loops with statements like “for” and “while”.
  • How to combine multiple results with “and”, “or”, and other logical operations.
 Standard libraries  – Every language has some things it does well and other places where it needs help. You could either write a bunch of solutions on your own for these common missing pieces or you could learn to use functionality that has already been provided. It’s just not part of the language itself. But it is usually tied so closely with the language that some people don’t even realize there is a difference.
  • Both C++ and C# have huge libraries that help you deal with input from the user’s keyboard, sending text output to the screen, reading and writing files, working with dates and times (this is actually harder than it seems and I’m very glad that I don’t have to write this code), keeping track of groups of just about anything you can imagine in collections, communicating with web services, and so much more.
  • You’ll learn about header files vs. libraries as well as some of the services that your operating system makes available for you to use.
 How computers work  – This is completely ignored by colleges and programming books unless you are studying electrical engineering. Now this is not a course in electrical engineering but knowing some aspects of this will make you a better programmer. My daughter who had heard that computers only know binary asked me once how they are able to take a bunch of one’s and zero’s and turn that into windows, buttons, word processors, and web pages. That’s what I’m talking about here and what you will learn.
  • What’s actually inside your computer. We’ll start out at a high level and go as deep as you want. I can take you all the way to the microelectronics level where you will find electrons and static electric fields.
  • How the microprocessor coordinates the computer’s activities and how the other systems respond.
  • How hard drives work vs. solid state flash storage.
  • How external devices such as keyboards and mice work. And if you’re really up for it, I can show you how to make your own devices that will plug into your computer.
 Object-oriented design  – If you were writing a novel, then this would be like learning how to structure your story so that it makes sense and is easy to read and understand. There are concepts that different languages make available to help structure your programs and knowing these will help you bridge the gap from what you want to how to go about building it. And it will help so that somebody else will be able to join you without wondering “What were you thinking?”
  • This will change how you understand practically everything around you. You’ll be able to think of real-world objects and how they behave and interact with other objects and translate this into similar objects in your programs.
  • You’ll learn about object inheritance and how C++ and C# have very different opinions about what you should and should not be able to do.
  • Over the years, software engineers have solved many of the same problems many times until we have common names for these solutions and you’ll learn these best practices and benefit from some really smart designs that you can use in your programs.
 Data structures  – Think of this as how you organize your belongings after your house has been built and you have moved in. Do you go looking for a spoon behind your TV? Well maybe sometimes but only when you have a strong suspicion that it might actually be there. A computer program needs to organize information so that it is available in an efficient manner.
  • Should data be stored in a list or in a dictionary or in a tree? Even if you don’t know programming yet, you can probably already visualize information either positioned end-to-end in a list, or on pages in a dictionary that you can find easily with some alphabetical key, or arranged on the leaves of a tree where you start at the trunk and work your way out until you find what you are looking for.
  • Or maybe some other structure such as a deck? Imagine information printed on cards that you can remove the top card anytime to examine it.
 Algorithms  – Understanding algorithms is not only a really good way to impress an interviewer, but will help your programs run in the best manner possible. Notice that I did not say your programs would run the fastest. While that is normally your goal, there are times when you can go with something a little slower if it is maybe smaller instead. Knowing what your requirements are will help you to choose from many different ways to accomplish those requirements.
  • Do you need to sort some information? You’ll learn how to do this.
  • Do you need to find something? Process something?
  • You’ll learn how to compare one of doing something with another to choose which is right for your situation. There is rarely a single right vs. wrong way to do something.
 Testing  – I can’t stress enough that there will be mistakes. One of the best ways to deal with software bugs is through testing. And there’s lots to cover about testing. When I started writing the projects that I use to help you learn how to program, the very first thing that I did was make sure that I had a good way to test my code. Yeah, it’s that important. It’s also commonly overlooked or even looked down on. A good software test engineer is a huge asset to have on your team.
  • I’ll show you how to put your tests first or how to put the desired behavior first and then implement your program to accomplish the desired behavior. You’ll learn about the benefits this provides for automated testing and for future changes. Software is always changing so having good tests is crucial to enabling this evolution.
  • You’ll learn about various edge cases and how there is always going to be some unexpected event or data and how to protect your code.
  • We’ll also discuss security and you’ll learn many different ways that a user can intentionally try to misuse your program and how to protect your program.
 Debugging  – This is another big topic that is largely left to students to figure out for themselves. Alright, so your test failed. You did have a test, right? Hopefully it wasn’t your customer who found your bug. But now what? How do you go about finding the problem in your program that caused the failure? This can be tricky and you will learn some really valuable techniques for finding bugs.
  • There are different tools available such as debuggers, core dumps, logging, and code reviews and you’ll learn all of these as you put them into practice regularly.
  • You will also learn how to design your program so that it is easy to debug.
 Runtime execution  – This is all about the environment that your programs run in and how they interact with everything else that is occupying your computer. Just try finding this topic in a traditional course of study.
  • Learn Windows, Linux, and Mac programming. What are the differences and how can you make use of their similarities?
  • You will learn how to create services that perform actions for many users either on your own computer or in the cloud.
  • Or maybe you are interested in a mobile platform such as a phone or an embedded platform like you might find in a robotics project.
 Graphical user interface  – Remember those windows and buttons I mentioned earlier. Well it turns out that this is actually quite difficult to get right. There’s lots of details that as users we just expect to be there and don’t really notice them. Until that is when you try to write a program and leave some of them out. Your users will surely notice then.
  • There are builtin methods for creating user interfaces that can be difficult and slow to make any real progress but that give you absolute control with little or no extra libraries to install.
  • And you will learn how to make use of modern libraries that often require learning entirely new ways to think about what you are trying to do and how to structure your program.
 Scaling  – This is not rock climbing. There was a well known health care website that had problems recently dealing with lots of users. It was in the news. This is a topic that is often overlooked because when we are building a software solution, it is usually only a small team that is using it and then the problems come rolling in when more people try to use it. I’ll show you some techniques to help you better deal with a successful product.
  • There are different ways to scale your program and you will learn when and why to use each. These topics tend to be a bit higher level than the details you will be working with when programming and maybe that is part of the reason why they are so often overlooked.
  • Knowing about this and planning your designs to account for scaling will make a huge difference to your product’s ability to transition from that first version serving hundreds or thousands of customers to a new level that is tens or hundreds of times more massive. And you won’t have to start over from the very beginning because you will have already planned for this.
 Web development  – Many other programs promise to teach you how to become a web developer. That’s it. Yeah, we’ll cover this too. You’ll be able to build web sites like a boss because you will understand what is really going on.
  • Some courses promote HTML or CSS as if they were programming languages. They are languages in the sense that they have a certain structure but you’ll be able to appreciate the differences once you learn how they fit into your overall skill set.
  • Web development is just one part of becoming a programmer. It is important, certainly. But if all you can do is build web pages, then you’re going to have a tough time competing with people who know how to do that plus program. It’s like being able to create a web page that has some nice effects vs being able to do that plus create your own browser application that can produce those effects.
 Tools  – Just like a car mechanic seems to have hundreds of specialized tools, so do software engineers. Did you know there is a tool just to remove your car’s steering wheel? The real difference though is that car mechanics rarely make their own tools. Software engineers are almost by definition lazy and normally hate to do anything more than once. Isn’t it better to show the computer how to do a task instead of doing it yourself over and over?
  • You’ll learn how to solve problems as a programmer and this skill can be applied to almost anything you do. Recently, I needed a way to remove a cap from a water pump and created my own tool for the job. Sure there was some mechanical skill associated with this task but being able to program first gave me the habit to create something myself and then the ability to look for and spot problems that saved me from several failed attempts and my tool worked the first time.
  • Your four main tools will be your source code editor, your compiler, your linker, and your debugger. But you’ll also learn how to use other tools and utilities to inspect resources being used, open files, network communication, graphic design tools, database tools, performance and profiling tools that will show you slow spots or code that is not being run or being run too much, and your source code control system that will help you keep track of changes made or to contribute to an open-source project.
 Full product development  – You’ll learn everything you need to prepare you to join any software development team in any part of the lifecycle of the product. What, you didn’t know products had lifecycles? You thought it was just butterflies that progressed through different stages? Well, many college graduates are not prepared for this either. But you will be.
  • Be ready to contribute on one or more projects right away and impress your team right from the beginning.
  • You’ll learn about typical problems that teams face as a project progresses and be able to offer valuable advice that will earn you respect from your team and show that you are no average rookie.
How long will this take?

I’m going to give you an answer to this question that you won’t hear from many other places. You see, there’s no way for anybody to learn how to program in 24 hours, or a week, or even in a four month intensive bootcamp. Computer programming is part science and part art. You’ll hear about universities offering degrees in computer science and you’ll hear about the art of programming. The real answer is that this will take the rest of your life. It’s true. I’m still learning and I’ve already been at this for 25 years.

A better question is how long will it take for somebody with no previous knowledge of programming to gain enough skills to confidently apply for a software engineering job and then be a competent team member? That’s mainly going to depend on how much effort you put into this. It will take a lot of effort over anywhere from nine months to three years. I’ll be there to guide you and mentor you and teach you what you need to know. I’ll also be there when you start exploring your own topics and have questions.

I’ll also make sure that you are learning the proper techniques. I was recently helping a student enrolled in a major university with a homework assignment and the instructor told the class that they could just search one-by-one through a thousand pieces of information until they found what they were looking for. Sure, the program appeared to run just fine and printed the output right away when it was run. But this is not the right technique and the only thing going through an interviewer’s mind if you give an answer like this is finding the best way to end the interview. If you give this kind of answer, you’re done. The job will go to somebody else. And this is what is being taught in our universities. It’s actually very difficult to find competent programmers and I can help you reach this level much sooner than any university that teaches the wrong methods.

There’s no long term commitment to this course. Everything is weekly. Click the button below to get started and you can cancel at any time. You can also start and stop whenever you want so if you need to take a couple weeks off for a vacation, then go ahead.


Remember, this is not a pre-recorded course! You have a live instructor each week to help you learn how to program.

Sincerely,
Wahid