- Home
- Learn Software Engineering
Learn Software Engineering:
How to Correctly Use GPT to ACCELERATE Your Skills
To learn software engineering, no one can cram all they need to know over a weekend or even a month. Every stand-out software engineer I know is a lifelong learner. Given how quickly programming technology changes, knowing the strategies to master software engineering while leveraging AI technologies will help elevate your career
To maintain a steady pace of learning for years, cultivate the habit of learning a little bit each day or week - especially if you code in public.
"If you work for 10 years, do you get 10 years of experience or do you get 1 year of experience 10 times? You have to reflect on your activities to get true experience. If you make learning a continuous commitment, you’ll get experience. If you don’t, you won’t, no matter how many years you have under your belt." - Steve McConnell, Software Engineer
Killer Strategies to Learn Software Engineering
The tech I learned in college and used during the dot-com days are mostly be outdated but the experience and fundamentals have stuck - when i pushed my limits. Early in my career I coasted in a job for a large, extremely boring insurance company for 6 years. You could easily say I only had ONE year of experience - I hated it but fell in a career trap many developers fall in - apathy. If you want an awesome coding career, don’t stop learning - even if you decide to get into management or want to start your own company, the skills compound over time.
Before we dive into using GPT, an effective plan to learn software engineering is to start with a strategy. A lot of us developers are bombarded by shiny new tech toys every day and it’s hard, really hard to put aside those “shiny objects” and focus! (it’s even harder when you’re on your own)
So let's dive into different learning strategies you can use to become proficient in software engineering. The most important thing is to find what works best for you.
- Experiential Learning: Learn by doing. This is how most of us learn software engineering - get your head out of doing tutorials and your hands dirty coding projects.
- Deliberate Practice: This is where you focus on a specific skill, break it down into smaller pieces, and then work on each piece that stretches you beyond your current abilities.
- Feynman Technique: Break a complex concept down into its simplest components and then explain it in your own words. The act of explaining it in simpler ways helps you get a deeper understanding
- Spaced Repetition: Sometimes you need to memorize technical concepts so you review the material over a period of time. (people tend to lose about 50% of new info within the first hour after learning it, and up to 70% within the first 24 hours)
- Problem-based Learning: These are most commonly used in coding challenges, where you’re presented with a problem, design and code a solution.
Deep Work: The Path to Mastery
In programming mastery, it gets harder to really maintain focus as there are new frameworks, technologies, and languages every year
“I fear not the man who has practiced 10,000 kicks once, but I fear the man who has practiced one kick 10,000 times.” - Bruce Lee
No matter the approaches you choose, ya gotta have consistent, focused, intentional practice, otherwise, you will likely procrastinate
Learn Software Engineering ACCELERATED (Overview With ChatGPT)
“AI won’t replace you but a developer leveraging AI will”
There are a number of AI coding assistants out there (GitHub Copilot is the most common) - but for learning purposes, ChatGPT is good because it’s free. While it’s code isn’t always perfect ChatGPT can be used as a tutor in your pocket, especially for fundamental software engineering concepts. Here are the ways you can use it effectively:
- Ask (good) questions: You can ask ChatGPT to create lesson plans to learn a programming language and framework.
Prompt: create [type of learning] to learn [language]
Example: create a beginner lesson plan to learn Python
- Write code yourself! ChatGPT can give you feedback as you develop your project and/or your coding challenges. Like any help you get, do the work yourself first before you ask the tutor for help.
Prompt: “How do I write [concept] in [language”
Example: “How do I write a simple recursive function in c#”
- Analyze code: You can ask ChatGPT to explain how specific code snippets or open-source projects work, or to help you understand the best practices and design patterns used in different types of software engineering.
Prompt: what is a real-world [language] code that uses [concept]
Example: what is a real-world python code that uses if/else
(if needed, ask more questions - “explain that to a 10 year old” or “explain if/else in a different way”)
- Brainstorm project ideas: ChatGPT can provide you with examples of real-world software engineering projects, and explain the concepts and techniques that were used to build them.
Example: what python projects would be good for beginners to study
- Collaborate with other developers. This is why school is effective, it gets everybody in a room vested with money (or their parents money) to focus on learning together (even if competitive). There are tons of online groups around
This brings us to the final step that separates those who go supernova … CODING IN PUBLIC!
“AI won’t replace you but a developer leveraging AI will”
There are a number of AI coding assistants out there (GitHub Copilot is the most common) - but for learning purposes ChatGPT is good because it’s free. While it’s code isn’t always perfect ChatGPT can be used as a tutor in your pocket especially for fundamental software engineering concepts. Here are the ways you can use it effectively:
- Ask (good) questions: You can ask ChatGPT to create lesson plans to learn a programming language and framework.
Prompt: create [type of learning] to learn [language]
Example: create a beginner lesson plan to learn Python
- Write code yourself! ChatGPT can give you feedback as you develop your project and/or your coding challenges. Like any help you get, do the work yourself first before you ask the tutor for help.
Prompt: “How do I write [concept] in [language”
Example: “How do I write a simple recursive function in c#”
- Analyze code: You can ask ChatGPT to explain how specific code snippets or open-source projects work, or to help you understand the best practices and design patterns used in different types of software engineering.
Prompt: what is a real-world [language] code that uses [concept]
Example: what is a real-world python code that uses if/else
(if needed, ask more questions - “explain that to a 10 year old” or “explain if/else in a different way”)
- Brainstorm project ideas: ChatGPT can provide you with examples of real-world software engineering projects, and explain the concepts and techniques that were used to build them.
Example: what python projects would be good for beginners to study
- Collaborate with other developers. This is why school is effective, it gets everybody in a room vested with money (or their parents money) to focus on learning together (even if competitive). There are tons of online groups around
This brings us to the final step that separates those who go supernova … CODING IN PUBLIC!
THE ULTIMATE AMPLIFIER: Learn Software Engineering In Public
The core of this is applying the Feynman technique - and posting it on blogs and/or social media. As you get it down on paper it helps you crystalize your thinking and your ability to truly understand WITH feedback.
One of my favorite guys in this space is Shawn Wang - if you’re familiar with the concept of Big O in complexity, he came up with analogies on the type of learners we can relate to. The biggest takeaway from this is when you code and learn with others in public, you accelerate your learning.
to dive in his types of learning checkout https://www.swyx.io/big-l-notation