TOC
- Introduction - What to Do After The Coding Academy
- Step 1 - Learn The True Fundamentals
- Step 2 - Create a very simple C++ application
- Step 3 - Translate that C++ Application into a Web Application
- Step 4 - Understand the Internet
- Step 5 - Understand your environment
- Step 6 - Go HAM on a Web Dev Framework - but be well-rounded too
- Step 7 - Practice Being Systematic
- Closing Remarks
What to Do After The Coding Academy
Hello everyone! For about 5 years now I've owned and operated a development shop, and in that time I have had the privilege of seeing many developers grow their skills (both professionally and personally) as they entered the workplace. However; I quickly noticed some trends from individuals coming from Coding Academies and Bootcamps.
While teaching our young padawans, I quickly learned that there is a lot of information missing from most Coding Academy curriculums. I chalk it up to the programs being so short and attempting to cram so much knowledge into their brains at a time. Most people gain the knowledge of "what is" software development, but lack the wisdom of "how to" use it.
If this is you (or one of your team members) - you're not alone. It's nearly impossible to become a full-fledged software engineer in 3-6 months, although places like NYDCA would like you to believe otherwise. And perhaps that is why they shut down. But fear not; there is hope! Coding Academies are a great start to your journey so long as they are followed by the right mentorship and guidance on where to go next.
So, I'd like to provide exactly that - mentorship and guidance on "What to do next". I hope this article will graduates, as well as Senior Devs and Managers out there tasked with training them. We're all in this career together, so let's help each other make it an amazing one for everyone.
P.S. If anyone has additional items you think are useful; I'll update this article to be a culmination of best practices/wisdom.
Step 1 - Learn The True Fundamentals
You may have thought you learned the fundamentals at your coding academy; but alas you actually learned the fundamentals of web development. What you did not yet learn is the fundamentals of the "how" and "why" of computer science. Questions like "What is an IP address?", "What is a var (under the hood)?", and "How can I step-through debug this problem?" are never asked nor taught, so it's up to us to fix that.
To get this understanding I'd recommend traveling to the past so that you can understand the future. Scripting languages are NOT the place to learn fundamentals; however, C++ is built on the fundamentals. You'll probably never use this language again - but I DO want you to take 2-3 days to go through the following tutorials. I promise they'll be beneficial - so here's the steps
- Download Visual Studio Code
- Take yourself through this C++ tutorial
- Complete chapters 0, 1, 2, 4, 5, 6, 7:
- While completing the Chapters answer the following questions:
- What did you learn from this chapter?
- What questions/difficulties did you have during the chapter?
- What questions or things do you want to try, at the end of the chapter?
Step 2 - Create a very simple C++ application.
I'd recommend the following:
Create an application that
- When launched via the command line, says "Hello, what would you like to create? "1: A Dog", "2: A Cat""
- When the user types "1" and hits enter, a Dog class is created.
- In the Dog Class Constructor, have a print function "I am a dog, I am born"
- In the Cat Class Constructor, have a print function "I am a cat, I am born!"
- Abstract Dog and Cat class to be part of an Animal class, and inherit from it.
- Complete some other small changes to reflect what you've just learned in your tutorials
Step 3 - Translate that C++ Application into a Web Application.
Now, create a Web Application using the technology you've been taught at your coding academy - but instead of the command line, have a GUI through a web browser. Either an Angular Application or a Rails Application will do just fine, then answer the following questions:
- How does C++ compare to javascript/ruby?
- What are the differences?
- Which parts were easier? Which parts were harder?
- Have a friend introduce an error in both - but not show you where. Now, try to debug the error on both. Do you see a difference in debugging?
Step 4 - Understand the Internet.
Most people don't understand what the internet actually is; and it's truly magic.
Did you know there is all this hidden data in every packet that's sent over the web? Do you know how your ISP works? Well, to get started let's read this Stanford whitepaper on what the Internet actually is.
Step 5 - Understand your environment.
This step is a controversial step and is best done on an old crappy computer you don't use anymore. If you don't have one - make sure to back everything up on your current system.
- (Assuming you're creating an Angular App) Download and install Homebrew, Node, NPM, Bower, and Grunt.
- Try to install and run A MEAN Stack sample app
- Uninstall the current version of node, and install an older version. Play with versioning through NVM
- Try to run the same app.
- Now, do the same thing on someone else's computer. Doesn't matter what type - there's learning on all OS :)
You may or may not have issues - guess what; version dependencies are a BIG BIG challenge for a lot of developers. 5 people with macs may all have different environments - and that's not even including all the variations of Windows / Windows + Ubuntu / Linux distros.
- (Bonus) Wipe your computer - and re-install everything. That's the controversial part, but often when you're doing development and you don't quite understand filepaths and chmod/sudo consequences you'll mess up your dev environment. You can spend hours debugging it, or you can wipe and restart - your choice.
Now, you must be thinking to yourself "There's got to be a way to standardize environments". Yes, there are plenty of ways. A well-known approach is a tool called Docker. I'll let you read up on the rest.
Step 6 - Go HAM on a Web Dev Framework - but be well-rounded too
I personally love the Angular + Ionic combination for Web & Mobile apps, but there are a ton out there. React.js is awesome and I'll be at the Vue.js conference in Amsterdam in February. Once our interns at OpenForge are done with the above steps (and some 1-1 sessions), we ask them to start completing some online courses through Udemy.
- First, I'd take a quick debugging class here to learn about Chrome dev tools
- Second, complete the entirety of this Angular 7 course. It covers a LOT
- Third, take appreciation for my array numbering to the left <-- If you know your basics, you know why I did this :)
- Fourth, practice creating a MEAN stack app and deploying it. Here's some links
- http://www.hongkiat.com/blog/node-js-server-side-javascript/
- https://devcenter.heroku.com/articles/mean-apps-restful-api
- http://blog.modulus.io/build-your-first-http-server-in-nodejs
Step 7 - Practice Being Systematic
PAY ATTENTION TO THIS - This is the most important piece of advice I can give you.
When you're working on a feature, debugging, or any type of development - commit after every meaningful change. Do NOT wait for the feature/bug to be finished.
Computer Science is a science, and science is systematic. We try, measure, and come to conclusions. I promise you that if you break down large commits and large problems into super small ones; you will accomplish tasks 10x quicker and be happier for it.
Closing Remarks
I hope this is helpful - it's been the 'time-tested mother-approved' formula for us for a couple years now.
If anyone has anything else to add (or recommends modifications) I am all ears, please comment below!
Best Regards,
www.twitter.com/jedihacks
Top comments (4)
I just started going through this guide and wanted to give a heads up to people trying to make C++ work with Visual Studio Code for Mac OS. While the Windows version of VS Code has an extension that allows you to create C++ projects and compile them inside the program, the Mac version does not, so the user will have to use the command line to compile the programs on their own.
The C++ course mentions it here in passing, learncpp.com/cpp-tutorial/writing-... but the course is more focused on Linux and Windows users with access to the proper IDEs.
I think that Xcode will also allow C++ projects on Mac OS, but the following steps will help users who want to stick with VS Code.
To compile on a Mac, you need to make sure you have the right programs installed. You can use these terminal commands to find these programs and see if they already exist on your machine.
xcodebuild -find make
xcodebuild -find gcc
xcodebuild -find g++
xcodebuild -find clang
xcodebuild -find clang++
If you have these programs installed, you can make a project in VS Code and then compile it yourself. To go with the example of a simple addition program with the files "main.cpp" and "add.cpp", make sure you're inside your project directory on the terminal, and use the following command:
g++ main.cpp add.cpp -o myexecutable
where "myexecutable" is the program you want to run.
After that, you can just type "./myexecutable" and the simple addition program should run within the console.
The above way will get a Mac user going on a free IDE. On the other hand, XCode should also work, which is available on the Mac App Store. And if you want an IDE that already has C++ capabilities built-in and you don't mind paying, I recommend CLion from JetBrains.
jetbrains.com/clion/
If you have a ".edu" email from a school, you can get a free license that will last for one year. I believe you can also use that same license for other JetBrains IDEs such as IntelliJ for Java, or WebStorm for JavaScript.
Just a heads up:
To write the simple C++ application where the animals are created, you might need to read a little bit into Chapter 8 of the C++ course linked in the article. Chapter 8 covers the syntax for creating classes such as "Dog" and "Cat".
Also in order to get the syntax for the "Animal" abstract class, readers might need to look into lesson 12.6 of the C++ book: learncpp.com/cpp-tutorial/126-pure...
This is super helpful! Thanks.
Thanks Nygel! As you run through let me know if you encounter any challenges - I'm preparing a couple additions to the article from feedback from some other community members, would love to get your thoughts too.
P.S. #philly4life ;)