|
I spent a load of time working through the course earlier in the year. I got into a great habit, and I would get up early and work on it daily. I felt like I was learning loads and the content was going in. I got to one of the challenges amongst the 30's and I managed to solve it whilst I was on a flight, without an internet connection, which was a real achievement. However, I got to Day 47's challenge and I felt stuck and overwhelmed. I felt like I couldn't achieve it without referring back to the code I'd written previously on the course and copy/pasting and changing slightly. As a result, I fell off the course, and I'm going back through it again, starting in the low 30's and working on it again. Is this what coding is? I feel like I haven't internalised anything. I just feel like a fraud... I had a project I wanted to work on and I had to ask ChatGPT for help, and it basically wrote the entire implementation for me. And whilst I understood all of the code that was written, I don't know that I'd have been able to get there on my own. ... so... Am I a fraud? I feel really weird, there's a dichotomy to this. On one hand, I feel like; if the tools are there, use them and get the results, and on the other, I feel like; i'm not capable of doing this myself, how can I make something and present it as my own if I couldn't do it myself? What does it mean to be a 'programmer' in 2024? |
|
Luke shares doubts we've all had before:
Repetition is the key. Biscuits 🥯 🥐My grandmother made the fluffiest biscuits. She could grab some flour, a chunk of butter, milk, a dash of salt, a shake of vanilla, and a few other ingredients and make delicious biscuits for 3, 9, or 20 people. Golden crust on the outside, heavenly clouds in the middle. She did this from memory. I'd try the same, and gronk up the ratios. Instead of fluffy biscuits, I'd make runny pancake batter. Or thick hockey pucks as hard as cement. The difference, of course, was experience. To gain grandma-level 👵🏽 experience, I had to make scores of biscuits, often ruining a batter and needing to start over. What helped me gain the experience was a hand written recipe! I wrote down the measurements and made biscuits for breakfast each morning for weeks. To be honest, I ate scores of awful biscuits. After a while, basic biscuits were easy. And they started to taste great! Then I tried some variations, making numerous notes on the recipe for different textures or flavors. Before long, I didn't need the recipe card. But it was always available for reference. Playgrounds 🛝 🎡I recommend you use playgrounds as your recipe book! It's easy to create multi-page playgrounds in Xcode. I recommend you put a different topic on a new page. Give the page a name, similar to naming a biscuit recipe. One page could be recipes for sorting arrays. One page could demonstrate the Picker user interface element. Another page could demonstrate how to implement gradients and drop shadows with a button. Make lots of notes! Comments are just as important as the sample code! Write lots of comments to yourself! Explain what you're doing and help your future-self understand your code. Future You will be grateful! Hint: when writing comments, explain the code to yourself using the Rubber Duck Technique 🐤 Practice 👩🏼🍳 👨🏿🍳Now you need to practice in the kitchen! Grab a screenshot from a favorite application. Try to duplicate the I've shared a few recipes in these forums. Search for > See-> Initializing Structs Keep coding! |
|
I can totally relate to this. I've been programming and scripting for years, but this is a lot different somehow. I can understand the code that's presented, but I don't think I would know how to figure out some of it on my own. For the lessons I've done so far, up through SnowSeeker, I've been saving a new version of each project for each new technique presented, so I've got, for example, SnowSeeker-intro-1, 2, 3... to refer back to. I like the Playgrounds idea from @Obelix though. There's no shame in referring back to your previous code. After a while, we'll know it better and we won't need to look back so much. |
|
It's okay to feel stuck sometimes. Using tools is normal. Being a programmer means learning, using resources, and improving. You're not a fraud, you're growing. Keep going. |
|
I've been writing software for around 47 years now (starting with S/370 assembler). Guess what, I use Gogle and, occasionally, CharGPT. To be fair,the ChatGPT results are usually questionable so I use them as a 'getting started' point. When I needed to get printing working on a Mac app, I got ChatGPT to write the first pass at the code (it didn't work!) and then used my coding experience to polish what I had into a working solution. I promise you, I don't feel like a fraud for doing this. Coming from a time before Google was even a concept in someones mind, I appreciate the tools we have available now and am more than happy to use them to their fullest. The trick is to never copy/paste code that you do not understand. If you can't understand it, then you need to do some learning first. When I produced my first SwiftUI app, I spent more time on Google than I did in XCode. That state of afairs has now, happily, switched and experience allows me to write much more code without having to look things up online. It's all down to practice. Things never stick the first time you learn them... you have to practice with them and the things you use the most will gradually stick in your memory. Understand, you will NEVER be able to remember it all; just knowing where to find out what you need to know is half the battle (as I recently found out whenI needed to make a small PHP change to my web site...). Regards looking at previous solutions - do that all the time too. I can spend a couple of hours re-inventing something I did months ago or spend a couple of minutes adapting some old code. Which do you think is more productive? I do less of that now as I realised the need to re-use code was the perfect excuse to write re-usable libraries, so I have some of those now. Allowed me to explore the world of frameworks. Every problem is a learning opportunity. One tip on online courses - which may or may not work for you - do NOT try to code along with the presenter. Watch the video first and then go back and watch it again and code along the second time. The constant stop/start of coding along means things will not gell in memory. I usually find that, on the second watching, I can code faster and understand the solution better (and sometimes improve on it). Are there frauds in the software world? Yes, I've worked with several - those people who throw together a solution to a problem that impresses management with how fast they produced it and who leave a mess for someone else to clean up later. One key feature of these people is that they never question themselves. They would never dream of questioning their abilities. Good developers are always questioning their solutions and striving for better. The fact that you are questioning your skills is a good indication that you are potentially a good developer. The next skill to learn is that questioning yourself is Ok so long as it isn't destructive. There is so much about SwiftUI that I don't know and I regularly tell myself that I should have stuck with Windows programming where everything was easy. Then I remind myself it isn't about being easy, it's about that satisfaction you get from making something work. Coding is fun. It's why I've been retired 5 years and I still want to write code. Enjoy it and enjoy the thrill of a working solution (then go back and optimise it!). Best of luck. Stick with it. |
|
First off, you're definitely not a fraud. What you're going through is something many programmers, both new and experienced, encounter. Coding is as much about problem-solving as it is about writing code, and part of that process often involves looking back at previous work, using reference materials, or even leveraging tools like ChatGPT to help bridge the gap. What you're describing—feeling stuck, needing to review past code, and seeking help—are all part of the learning process. Solving problems, whether with or without the internet, is an achievement in itself. The fact that you can understand the code, even if you didn't write every line from scratch, is a testament to how much you've learned. In 2024, being a 'programmer' isn't just about writing every line of code by hand. It's about knowing how to use the tools at your disposal to create solutions. The ability to break down a problem, understand the pieces, and assemble a working solution, even if it involves asking for help, is what makes you a programmer. Remember, even seasoned developers frequently refer to documentation, previous projects, or online communities for guidance. It's also completely normal to revisit challenging concepts and rework them until they stick. Programming is iterative, both in writing code and in learning. So, don't be too hard on yourself. You're growing and learning, and that's what matters most. Keep pushing forward, and don't hesitate to use the resources available to you. The fact that you're questioning and reflecting on your learning shows that you're on the right path. |
|
|
|
Good evening, Don’t be too hard on yourself. As modern programmers, we have an array of tools at our disposal, including ChatGPT. I use it myself. Typically, I'll write out a function in a detailed, step-by-step manner, then once it's working, I'll input it into ChatGPT to see how it can be refined. It’s crucial to understand the code you're working with. As others have mentioned, never copy and paste code without understanding it; that often leads to more problems down the line. The fact that you’re taking the time to understand the AI-generated code means you’re learning, which is fantastic. I’ve found that the more I code, the more familiar I become with efficient techniques like map and compactMap, reducing the need for long-winded solutions. Remember, gaining expertise takes time and practice. Just like the advice from @Obelix about gaining experience through repeated attempts, working with playgrounds to experiment and review your code can be incredibly beneficial. I started coding years ago with VB and VBA, and have since expanded into C and Swift. I’m still learning and refining my skills in Swift and SwiftUI, and I continue to read articles, follow tutorials, and take notes. You’re on the right path, and your ability to solve problems even without internet access is impressive. Keep at it, and remember that forums like this are here to support you. As my mom used to say, "There’s no such thing as a dumb question, only the ones that go unasked." Keep coding, and don’t give up! Taz, |
|
Don't feel too bad about it. I've been working with SwiftUI since it was introduced. I can do a ton of great things with it now, but I still (did this yesterday) google "Button, SwiftUI, Hacking with Swift". then copy the code below into my project. For some reason I just can't do this one on my own. My mistake is trying to use code completion with it. That always seems to fudge me up.
|
SAVE 50% All our books and bundles are half price for Black Friday, so you can take your Swift knowledge further without spending big! Get the Swift Power Pack to build your iOS career faster, get the Swift Platform Pack to builds apps for macOS, watchOS, and beyond, or get the Swift Plus Pack to learn advanced design patterns, testing skills, and more.
You need to create an account or log in to reply.
All interactions here are governed by our code of conduct.
Link copied to your pasteboard.