Yeah me too. I've been struggling with these 5 problems and procrastinating on projects but thanks to you, I've realized my mistakes and I'm gonna start building projects.
@@amsamam1606 I don't even remember what I meant when I said that, but making a conscious effort to improve when you practice definitely helps more than just going through the motions
I have done 40 years at the code face now. Golden rule early on while playing with your own projects.. Move fast, break stuff, make mistakes and don't be afraid to box yourself into a bad design corner. Then step back, think about what went wrong and refactor the crap out of it to improve. Rinse and repeat. The reality is you need to screw up to understand what bad code looks and feels like so you can spot it in the future. If you skip this you will end up a copy/paste from stack over flow programmer.... so not a programmer :) Most work is in the imperative world and that is where the jobs are BUT learn a functional language to add to your tool box, such as Haskel or F#. You will learn a whole new way of thinking and how to approach problems from different directions.
@@beedoox5613 Its weird how tribal many computer users from that era still are about their old computers. As a Sinclair user I suffered Commodore 64 envy for a long time but would never admit it.
Im starting my first job as a software engineer out of college (computer science) and this is great advice. I think one of the things that nailed the interview for me was showing a bunch of demo apps on my iPhone to the interviewers. Also, apply and try to take as many interviews as you can. My first interview was horrible but as I got more comfortable with the process, the better I got. Also, apply even if you don't check all the boxes for qualifications. As long as some of the qualifications are met they'll be willing to still hire you and train you if you prove to be productive yourself.
"Everything has to be perfect" HAHAHAHAAAAHAHAHAAAAAA! 30+ year career programmer here. I start every project thinking, THIS time, it's gonna be perfect. It never is. And, usually, because technology is always changing, and you're always learning. Each project, you do things a little bit differently based upon what you learned in the last one, and since the last one. And as a consequence, you usually end up making small (and sometimes big) errors. But hey, that's why code reviews are so important. ;-) Programming isn't something you learn - like, "Well, that's that. I learned it". It's a lifelong discipline, and you are always learning, always changing, always doing things differently.
But there is some point in a programming career, where the code gets decently clean and you get a feel for what's clean and what isn't, after that turning point it becomes much more fun and satisfying imo
@@itfitness5791 Yep. My biggest challenges are 1) resource organisation (where do I want to put everything in the directory structure), and 2) naming conventions.
@@robertzeurunkl8401 For me it's mostly SOLID Design Principles by Dr Bob, using the right Software design patterns and not reinventing the wheel (using libs, frameworks and public github code bases whenever possible)
@@itfitness5791 Heh. I have an almost opposite approach. Preferring to limit dependencies, I tend to work strictly in the native languages, as much as possible, and only reach out to libraries and APIs when necessary. So, for instance, I no longer use jQuery for much at all other than it's AJAX interfaces, and that only because I have not taken the time to write my own XMLHttpRequest handlers yet. On the other hand, on the other side of those AJAX calls, I work primarily in .NET Generic Handlers, but once there, I do take advantage of the vast .NET Framework. :-)
Your videos are always my favorites of my subscriptions, simply just for how relatable your content and story are...but this one really resonated with me. I do suffer from a few of these delays, especially the perfectionism and fear, due to my fear of “if it’s not perfect, NO ONE will ever hire me!” A lot of it has to do with being self-taught in my mid-thirties and knowing I’ll be competing with the fresh young college grads when I start putting out resumes. Thanks for this super helpful video Andy, and keep them coming! I love getting notifications that you’ve uploaded a new one!
You know what your advantage is though? Over a decade worth of acquired soft-skills that young fresh grads won't have. And that's just naming one advantage. I think if you and everyone here perseveres, we'll all get there.
I personally have been facing tons of fears and therefore, resistance in progressing with coding. Takes a lot of energy to push anything that doesn't seem to be perfect (clean scopes, comments, documentations). Eventually, you just need to put your foot in the door, no matter how much you've crapped your pants out of fear. Andy, awesome content! Thank you for your updates!
Fear is constant in everything. I find that just baby-stepping and just tip-toe-ing outside my comfort zone will gradually get me beyond my fear. And glad you enjoyed! 😊
Passion is not important at first. It develops later as you progress and start getting good at a certain skill. You can't be passionate about something you suck at!!!
Perfectionism is a multi faceted sword. Wielded by the handle of persistence you can fearlessly slice your way to the heart of an accurate depth of knowledge. Wield by the blade of procrastination and you will fear the bloody shredding of your fingers, be unable to focus and succumb to the Dunning Kruger effect. There is no handle that wasn't made from blood.
Very good advice. I have a CS degree and still find what you said is the exact same approach I take to learn new technologies. It's kind of akin to figuring out how a remote works. You don't start by reading the user's manual, you press the buttons to see what each one does. This is called inverted learning pedagogy. When learning something new by myself, I look at the docs, or github, try to find examples of working code, paste it without understanding, follow instructions like in a tutorial. I do not read "explanations" in the first step. I just try to make it work and run the code. Only when a simple example is working do I try to go back to understand what I pasted, and why it worked. Also reading the documentation now makes more sense. After that I type in the code again(that's important) to make it even more clearer. I have 3 years experience developing professionally this way. I don not understand low level details of many things but I can produce something that works quickly even if i don't know the language really well. You can always go back and read the stuff that's bothering you anyway(which you should) This strategy will take time to develop but Andy is spot on on getting to make something while you are learning.
Also regarding going out of comfort zone is something that resonates with me a lot. The amount of things you know/will-know will be a tiny miniscule to the vast knowledge present out there. You can't identify yourself with knowledge you currently have. You have to constantly remind yourself that you don't know anything. You have to be comfortable with "I do not know". It's not a sign of weakness. Only when you identify that "I do not know" will there be a longing to know more. You will identify with your ignorance. And that's a good thing. The day you get comfortable with the knowledge you have is the day magic stops happening.
This video is pure platinum grade. I am guilty of all 5 of these mistakes. I have decided to start building projects from now on and learn new concepts along the way. Thank you so much Andy. I hope you get 10 million subscribers.
I find it fascinating that 'new' or 'aspiring' programmers put programming as a profession on a pedestal. But where do I begin? Start with getting to understand the problems you'll be solving; managing, manipulating, modifying, generating, and transferring data. Any business generates data, or would like to generate data and interact with it in some specific way that it's currently not able to. Maybe a sensible solution includes writing some bit of code that would allow that to happen.
This was quite helpful. I'm about a month into learning front-end development, and I've certainly been struggling with the perfectionism bug. Glad to see I'm not alone!
Very good advice. I couldn't help myself but share my story. So after I graduating University (not CS major), I was thinking about getting hired at a factory job but one day at night before sleep, suddenly a game idea popped up to my mind, so I was thinking I can't code how am I going to make this game? So I decided to learn to code on my own (from various sources like github, StackOverflow, unity answers, msdn documents and so on), I downloaded Unity Engine (fantastic software) and I did eventually made the game in 7 months. Unfortunately, it wasn't a success. But hey, at least I did it. I finished the game that I was thinking of, plus I learned to code! What now? I continued making games until it succeeded! Finally, I was able to earn money from my own game. Trying and learning 1.5 year without a job and income was tough but hard work does pay off so don't give up, do what you love and work for yourself! (Note: as Andy said in the video, I didn't go through programming textbooks, prerequisites all that stuff, I just jumped right to my project).
I made sure that I had a passion for being a pythonista prior to picking up my first book, "Head First Python." I'm even redoing my social media sites as if someone who was hiring me is looking at it; everything programming. I've decided my focus to be python and django, that way I don't go crazy looking at python + ruby + flask +sanic. Plus python has two little pythons as their logo, obviously the right choice :) !! I plan on combining this with my security+ certification so I am also designing applications with security and scalability in mind :) Self-taught all the way!! Great video to make sure we don't slip into any ruts or negative thinking.
@Abdullah Habib not true at all. That's just your assumptions. If you're good at what you do, females being in any fields that are male dominant shouldn't bother you. You just generalized "all women" by saying females shouldn't be in this field. SMH.
I've only recently discovered your channel, but I love how clear and concise you are. You provide really valuable information and insight. I'm about two weeks into my programming journey (self-teaching) and am excited to keep learning! The first two weeks have already been so fulfilling. Thank you for the insight and inspiration.
U said every single mistake i have done in the past 5 years and still struggle with programming :( Thanks for pointing it out to me.....AND i have a CS degree.
Eli, did getting a degree help?I already have one in design and realised that college mostly pushes you to learn by yourself and get your own information and evaluates you based on that(at least in my country that happens, they don't really provide what you can't already find online)
@@1biutza Yeah, I have a masters and work at chevron. Even at chevron theirs a lot of self learning, you can't get comfortable and just pass an exam or memorize a bunch of stuff and think you can get by. Programming and development is a process that is always evolving with something new or better around the corner, so you have learn fundamentals and continue to grind out the new stuff. It's a challenge, but if you enjoy it then go for it.
Maria F I completely agree with you. I’m a first year student currently undertaking a software development degree and I realised 6 months in that most of it is independent learning and you can’t just get by if you only do the college work without putting in the the extra hours yourself and going out of your way to broaden your programming knowledge.
I always learnt everything with a code editor right next to me,I make the code with the lesson , play around with it ,I then take notes, try to understand the concept then use the concept in a program without having to look back (so I create a small program using the concept in the lesson), then I move to the next lesson
I have been recovering from memory loss due to my really bad Thyroid problem. I used to be so brave in tackling projects, finishing one language to another, but after my memory shut down on me to the point where I forgot my husband's name...I became so fearful of going back. However, because of hearing what you just said, I was able to relearn all the things I need to...thank you for this motivation!
"Bouncing around" indeed -- some of us are actually too passionate in the programming world, instead of building one thing to prove one concept, we love to learn everything about everything before doing much of anything with anything :-P Seems like only time I build something is when I realize I need a little widget or app that does one simple thing, then I get to put all that other stuff into practice (maybe). [ Of course this is other than my actual day job, I'm talking about in my free time... Yikes if I didn't actually have employment in this field I can't imagine how different things would be ]
@Andy Sterkowitz: You are thinking as a developer that works project based like a freelance. Most of the world works as HIRED = employed 8h/day 5days/week somewhere. You do not decide what project and what task you do. You are hired to work on project "X" and assigned to project "Y". You do not even choose the language, it is assigned.
All good stuff. I believe that as developer skills become more commonplace the differentiator (apart from perhaps the developer who's also graphic artist) is going to be the domain specific skills that are required to understand the product that you're building. In the "old days" there were programmer/analysts who not only were excellent developers but also domain subject matter experts - perhaps they used to be practitioners on the business side but preferred the more technical aspects. There seems to have been a period of stratification where the business analysts have been separate to the developers (who "just" code to the specifications) but, as budgets shrink the ability to recombine those roles is going to be more important too when seeking employment.
What frustrates me as a programmer is that every job listing wants an extensive array of multiple years experience with very specific libraries. Not even languages, but specific libraries used in them. So, my current job has me coding in Java, and we use Spring and Play. The listing wants 5 years of JBoss. Is it really *that* different? Not really, but trying to read up on every technology bullet point on a listing feels like playing Pokémon. In interviews, they *do* ask for trivia about their entire stack.
I think the most common way of working is that you work on a small piece one at a time. I do that, and it is not so overwhelming that way. My boss know what level i am on and he can delegate small tasks that i can work on....
I’ve been a programmer for 10 years. For me it has always come to the simple fact that... good programmers enjoy the challenge of solving problems in a specific way. In general, when you have a problem you have to figure out a solution that is tailored specifically for that thing. It doesn’t even need to be fully understood in it’s ramifications since it only has to do it’s job of say, getting you out of debt, or dealing with a crappy relationship. Programming is basically solving stuff with a couple of differences. 1) you have to be able to frame the problem and come up with a solution that will always solve that problem, N amount of times. Which get’s you into thinking in terms of algorithms (If this then that and so forth). That’s not, one might say, the most practical way to solve a problem. In fact, as much as some people would want to think so in this sort of computerised society, most real life emotional problems cannot be addressed in an algorithmic way. Say... you want a partner so you go to some sort of coach who tells you if he/she does this then you do that. That doesn’t work... except.. in software. 2) the problems you’d face, although they might be extremely impactful in one way or another, are abstract from your own life and experiences. So it comes down to having that elating feeling of solving something “For the sake of doing it”. The point of the video about the “fear” of starting to code something is kinda true. But I think a true measure as to if you SHOULD aspire to become a programmer is if, when you’ve overcome that fear and completed that project, you feel like it was a choir or like it was an amazing ride. TL;DR: Programmers solve problems differently and have only indirect impact on their own lives through their work. You gotta be into that.
Been developing for 20 years have a bachelor's in computer science. Listen to what he says. And break it down. Learn depth set goals when you start. Be willing to learn new things. Those 3 principles have given me success.
Here are the 5 tips : 1.)Thinking programming is all academics 2.) Perfectionism 3.) Fear of the unknown 4.) Bouncing around 5.) Poor job hunt strategy Your wecome!
What I see that holds back programmers is lack of education in computer science, formal or informal, and organization; often a rush to code without a sufficiently detailed design, API, and interface design. Here is a list for your consideration. 1. Structured programming 2. Data structures 3. Interface design, includes API 4. Object Oriented Design 5. Software Development Life Cycle, especially limiting requirements and recognizing wants 6. Multi-tasking, multi-threading 7. Semaphores, mutex's, and atomic access 8. Database design, SQL, etc. 9. Operating system design 10. User interface design, text or GUI based 11. Computer-to-computer communications, messaging, serial links, networking, IETF, RFC's, TCP/IP, UDP/IP, etc. 12. Robust operation 13. Expandable code 14. Parsing, formatting, compiler design 15. Numbers, integers, floating points, limitations, exceptions, etc. 16. Comment well, comment API's, comment on known issues, restrictions, is it multi-thread safe?, write a story in the comments every few lines 18. Try a number of languages, and I agree, get reasonably proficient at one before trying another
I liked this advice... Over the past summer this year I decided to change career from being a skilled welder to wanting to program robots to do the hard work for me... (goal's right)... I can only look back and laugh at my naivete... having a huge learning curve I stay active in the nitty-gritty. Thanks for this advice as I feel better knowing that it's not unique to me alone. Ultimately, we are programming ourselves.
In regards to perfectionism, also beware feature creep. Have a good idea of the scope or functionality of the project before beginning and don't keep adding things as you develop.
Great video. Here's the summary: 1. Thinking programming is all academic 2. Perfeccionism 3. Fear of the unknown 4. Bouncing around 5. Poor job hunt strategy
I liked all your videos that I 've watched. I am a beginner in the world of programming, and like you, I am trying to be a self-taught programmer. I am learning Python, using different resources; Udemy, Brilliant, book, and youtube tutorials of course. Nearly for two months I still have my first excite feelings, and my urge is strengthing day by day. My first goal is changing my current profession (NGO) for working in the programming field. Thank you.
Also - And I'm speaking from experience here - When you're taking beginner classes on programming DO NOT compare yourself to your classmates. It can be incredibly demotivating to have a guy effortlessly hammer out in a few arcane lines what took you several nights of work to do. These are people with (usually years of) prior programming experience that are just there to get the credentials that come with the course.
In this case I am that guy, and it's getting difficult to count how often I've said that to a few of the struggling students. They always get demotivated if I "just" know the solution.
Some good points, some that need a bit of clarification. As a background, I'm a full time developer - and have been easily employed for a good 14-15 years now. I have experience in over 20 programming languages, help proofread books/papers and have authorship on a number of these. The last tip is by far the most important of the bunch. Passion is incredibly important. Don't start a new job because you want to "learn how to do use language X" (which, yes, I've heard multiple times from people interviewing). Instead, learn X and apply for a job that uses X. Github/lab is incredibly powerful, and it should be a central aspect of your development profile. Your development graph should be very active (like nearly every day, including weekends). You should participate on other projects, add issues, engage, and do pull requests. Show that you're an active, passionate, developer. A website is a good option too, but I've had job searches (for me, and offer letters in the end) come about from my Github profile alone. The others are what need a bit of work. You *should* learn multiple languages. All programming languages tend to boil down to concepts that are implemented in slightly different ways. When you can abstract what a language is doing into a concept, and apply that concept elsewhere, then that is what makes you a strong developer. The "deep knowledge" the video mentions comes from understanding the concepts and being able to apply them to a wide range of situations and languages. Few people have it where you can learn one language (e.g. Javascript), and that's all you get to do. And, with few languages under your belt, picking up a new one is going to be challenging. Which leads me to the idea of continued learning. Unfortunately, development isn't exactly a 9-5 job. It's a bit of a blessing and a curse. You may end up working at odd hours, you may have a very flexible schedule. But, you're almost guaranteed to need to spend more than 40 hours a week "working". I put this in quotes because the surplus of that time should be spent with continued learning. That's where the github work comes into play. But, even more important, dedicating a good 15% of your work time toward professional development is important. That should be learning new concepts, languages, etc. Aim for learning a little bit every day, not in a block of time. But yes, Programming is Computer Science. Application is important, as mentioned, but theory is also very important. Don't forget the origins in this, and spend time reading more classic books on programming. If you don't do this, and focus too much on output - you become a cog in the wheel at your work. You're not going to be very important, and are replaceable. Coding isn't hard, understanding the concepts and how to apply methodologies in an efficient manner is what's hard. Design patterns, algorithms, language choices, testing, etc - those are as important as programming. Personally, I'd say maybe 20-40% of time time on average is spent physically typing something down. A huge part of my time is spent thinking about the problems, where we're going with it, how things should be written, and so on. I use a lot of paper, I mock things up a lot through drawing and writing. The end product is something that can scale, written with less bugs, and easier to understand for future developers and users. This is also while getting done with work that is far faster than most other developers in my organization.
what really got me is the bounce around thing...because I am a typical bounce around...just literarily wanna jump to the next exciting thing. am definitely subscribing
As a child, I learned to play the piano. Eventually, I could actually play the Beethoven Piano Concertos. I know many will say I am/was talented and that YOU could never do this. This ignores the HOURS and years I played scales, arpeggios, thirds and five finger exercises. I did not READ how to do them. I DID them. For hours. I think there is a parallel in learning programming. I wrote another post on this on Andy's blog. I believe Andy is correct. The way you learn programming is to allocate 2-3 hours/day studying and TRYING to write programs. You can start out with so-called easier ones, which at the beginning will be drudgery and make you feel like an idiot. In my other post, I described "neuroplasticity" and explained it. YOU CAN CHANGE THE STRUCTURE OF YOUR BRAIN BY HARD, REPETITIVE WORK OVER A PERIOD OF TIME. I have done it. The BEAUTY of doing this is that it actually becomes easier over a period of time. I am a retired surgeon. I have playing things on the piano that only great artists can do. I have played with a symphony orchestra. I am NOT a genius. My daughter has a higher IQ than I do. I can make a guarantee. If you allocate and work through 2-4 hours of TRYING to write programs over a period of say 1-2 years, you will become a programmer. My son-in-law, who hires programmers told me YOU will get a job, likely over 80,000 dollars. You cannot learn to do this by osmosis. You have to put the work in. I retired at age 53 from being a doctor. I was not born rich. I had to sell magazines door to door in Detroit as a teen to help support our family. Sanjosemike (no longer in CA)
The hardest part about programming is finding a job that you qualify for. I have never built a desktop application. I've only built websites. I am actually really feeling sad today because I am feeling hopeless about finding work. I've been looking for 6 months and trying to improve my skills but I can't even remember terminology in most cases. Starting to think I should have just gave up a long time ago.
You're absolutely right! A programmed feature set only has to work well enough to satisfy the end users itch. Because after they play with it for a while they are going to come back to you and ask you to expand that feature set. You don't have to know everything the app will do up front, because your user base will let you know what else should be added.
When I did technical recruiting, I gave 50% to thinking abilities. You would left the interview a bit disgusted if you failed, but with a strong sentiment of fairness. I even got a guy totally disgusted because he tough he failed since I let the "rote learning" stuff at the end (technical knowledge and trivia). While someone can learn specific material on his own, increasing fluid intelligence is a very different story! And people who are smart do not necessarily advertise it. The one who succeeded did fail basic Java writing and finding a piece of information in the documentation. I realized he was very good at problem solving and giving him milestones in increasing order of difficulty would help him. In 6 months, he completed an application and his level in English improved a lot! Another was a math teacher and couldn't properly write PHP. Same things, aced with pseudo code when I told him I didn't bother with proper syntax and he could go with his own pseudo language. I have also seen people with "I studied petri networks and AVL trees like red black". Then you ask "can you write a function that detect if two ranges are overlapping" and they are clueless. Ask them to get the 10 first highest numbers encountered in a stream of a billion number, and they don't see they have to use a heap. But they know about what an AVL tree is :-D You can be a total idiot and use savant words.
Eye opening, I'm a victim of bouncing around from one language to another without having mastered the fundamentals of a language or programming in general. It really holds you back
I had been a software engineer, mostly programming for industrial products, and about 20 years in, the young person in the office asked me if a lot of $ could be made in programming. I told this person, unless they love it, have passion and dedication, and will work with it daily, don't bother.
I've spent almost a month on my current project and am currently idiot proofing it. Thank you for the advice, it's time to move on...once I finish this part!
The best thing about these points is that they can work with almost all fields of study and learning. It's like this is "5 Reasons Why You're NOT Becoming Anything You Want To Be." People should really watch this video whenever they have a setback in anything they're trying to achieve. That's an excellent video, Andy, just as usual.
90% of the work on any code is getting the last 10% of perfection. Or that's from my experience. Alas there are a lot of perfectionists at work. I think the biggest benefit one can have for programming is outlining your scope early, planning your algorithms before you start, and avoiding scope creep.
Learning to program is like learning a language. You can study all the vocabulary but you won't know how to Form a sentence. Then as you slowly learn to construct sentences and meaningful conversations you need to learn how to efficiently and effortlessly create systems to combine those into a functioning program. And as with all languages that simply takes time and alot of practice.
I think the "Fear of the Unknown" is really my biggest problem. I enjoy the process of learning, e.g. I like to read a book or watch a tutorial series about a specific framework or language and then I feel comfortable using it. But there is not always time for that, and when I have to use new technologies and have to quickly be learning by doing, I really get nervous. I hate to not have a real plan. If I only have a vague idea of what I want to achieve but have no idea how to approach the problem, I spend a lot of time planning out the exact steps and thinking about the problem rather than just starting to code. I realize that I am actually wasting time with that, but I hate the feeling of starting work, not knowing exactly beforehand what I am going to do. This sometimes even causes me to worry the whole evening before and having bad sleep.
As a self learning noob programmer, I know I should avoid perfectionism and sticking to tutorials but honestly I would like programmer buddies so I can learn and grow. Still, very helpful video.
I agree. really like your soft-skills focused approach on becoming a developer. The exact content of study will change, implementation best practices will change etc. The value of learning what soft skills to have and to cultivate them is a big leg up. I don't know how many times I change my study content but the algorithms to success, once determined should be made habit.
Although I plan to build my own web site, I am leaning toward building some applications. There wasn't even a web to learn HTML an CSS for. So, I will be going back to my roots to start but I want to work with C# as well. I'm not interested in where the big money is. I just want to make something that works and if I make some money, great.
Want to learn to code. Find a repetitive process that makes you want to slit your wrist and figure out how to automate as much of the process as you can. That way your end goal isn't learning to code, it's finding a to optimize your surfing of social media.
This is really relevant information and actually explains real problems that budding programmers face when going through the self-taught route. Thank you for putting this out, more blessings to you.
Good information. Sometimes when wanting to make a project that is large, it's good to make small projects that will be used in the big project to learn just that functionality and learn the syntax around it. It's a good strategy because if one is encountering alot of errors or incorrect code execution it's good to be able to just focus and wrap your brain around just that module / project until you've learned and corrected the errors, then on to the next one. Once you've completed the various small projects then it's time to incorporate them into the one big project that was first thought of. Coding can be both an amazing wonder and it's share of frustration but with perseverance it pays off in the end.
@Andy Sterkowitz I actually only learned from books during my biology Bachelor and had a real hard time in the lab. So Computer science is like all other Sciences in that regard. p.s. all what you said seemed to address me directly, and you are so Right. Thanks for your words man.
Self-taught? Yes absolutely - just start hammering away. In fact you'll become uber productive and a software dev super quick. The problem comes in when you apply for jobs. Fact: those who went to college look down on those who did not. And unfortunately, as a self taught coder, you will have gaps in your knowledge. But you'll ALSO have knowledge the college kids don't. Actual practical knowledge. Your job is to convince them of that fact. (Super hard)
I have never been bored while learning how to program. I started out with C++ and 3D game programming in the 90's. There was so much to learn, both regarding the math used in 3D engines, as well as all kinds of programming techniques, language features and so on...
Writing code for a website is very different than writing code for a medical device application. The website can miss a few things and still serve its purpose. The medical device application is tightly monitored through the entire development process to the point where inspectors are brought in to verify processes and content in order to be certified as compliant and ready for the market. Everything has to be perfect. Perhaps you can begin your talks with the nature of the applications you are referring to.
The problem with just "hammering away" on your own is that you risk getting a lot of bad habits. Ideally you'd want a senior overlooking the hammering to make sure you're doing it the right way.
The problem with your statement is that this guy is obviously appealing to *self-taught* programmers that more than likely don't have a person in their lives that check their mistakes.
i was gon come to this vid and fight with every point he makes thinking that's not a problem, that neither .. but i dont have any of your things, guess im becoming a programmer
This is the eternal question. Do you want to want to be a singer... or you want to sing? Do you want to be a guitarist... or you want to play guitar? So if you want to be a programmer, maybe you like the title more that you like the work. Find what you like seeing yourself doing instead of seeing yourself being.
Minimum viable product (MVP); thanks for that. Breaking tasks down into chunks of an hour, half, 15 minutes. Yep. Fear of starting, fear of finishing. Yep; doing hard things is... hard. Persisting thru loss of enthusiasm (boredom). It's good to hear these things said.
These are not programming specific, this is general technical skill appropriate. Any academic issue that hits the real world causes these issues... And honestly, this should be taught to kids at the start of high school. Maybe you can do a focused subchannel? :p
Thanks Andy for your informative post. Allow me to give sone feedback. 1. Learning from the academic persective, I found anoying learning from the books of Deitel because they dig too much in details. 2. To avoid the trap of bouncing around I think a motivation ahead could help like getting a certification or doing a freelance work. 3. No program is perfect , sure. A way to avoid this hellish perfectionism is to work around a defined requirement cheked by a third party. Or try to solve a real world problem. 4. I have to say that getting a job has not been my problem thanks to this wonderful language C#. However other "soft skills" became even more important and the absence of those can ruin your career. I got many good leads from the SWEBOK standard. 5. Other important skills are the implementation of a proper software life cycle. Most of jobs demand Agile related skills and certs (scrum master, etc). Personally I never found my self under a defined SDLC but nothing different to express your self clearly on paper and verbally. By the way a very useful tool currently our team is using is Azure Devops.
Don't focus on mastering fundamentals either. Those will develop as you develop projects and make mistakes. All you need to know to do anything in any language is the purpose of functions, loops, variables, branch statements(if/else), classes, and maybe pointers if are using a language that takes advantage of those. You can Google how to perform any kind of input and output you need, and learn about libraries as you need them.
I am guilty of points 2, 3, and 4. The perfectionist trap still gets me. The idea of someone using something I made and finding bugs drives me crazy. I'll spend half a day working on a page transition animation because I want every frame of it to be perfect. One thing I do that you didn't mention, is wanting to do everything from scratch. I feel like a fraud if I use an existing library for something I could have made myself in a few days. It adds up to a lot of wasted time.
I got that feeling myself. You should set a timer to finish tasks. No matter how crappy looking the code is, or you do not understand much of it. Once you deliver that first project within a deadline you will feel very confident in your abilities
Are you guilty of any of these behaviors? Did the video help clarify anything for you?
Yup!
Totally.
Yeah me too. I've been struggling with these 5 problems and procrastinating on projects but thanks to you, I've realized my mistakes and I'm gonna start building projects.
Yes. Thanks for the practical advice.
Very helpful, thanks!
yes, im bouncing around . thank you very much!
I'll condense this entire video in one phrase: "Practice makes perfect."
Thanks
I've got one better: 'Practice makes programming.'
I've heard "practice doesn't make perfect, perfect practice does", but then you need to be careful not to be a perfectionist
perfect practice makes perfect
@@amsamam1606 I don't even remember what I meant when I said that, but making a conscious effort to improve when you practice definitely helps more than just going through the motions
I have done 40 years at the code face now. Golden rule early on while playing with your own projects..
Move fast, break stuff, make mistakes and don't be afraid to box yourself into a bad design corner. Then step back, think about what went wrong and refactor the crap out of it to improve. Rinse and repeat. The reality is you need to screw up to understand what bad code looks and feels like so you can spot it in the future. If you skip this you will end up a copy/paste from stack over flow programmer.... so not a programmer :)
Most work is in the imperative world and that is where the jobs are BUT learn a functional language to add to your tool box, such as Haskel or F#. You will learn a whole new way of thinking and how to approach problems from different directions.
Thank you Mr. Leggatt. That is very inspiring to me.
Yep sometimes I have to flip flop between different design patterns before I figure out the one I like the best.
You know, every single person who clicked this video is already or becoming a programmer
So true, wrote my first program in 1982 on a 16k machine and here I am
Half these comments : I wrote hello world therefore I am now a programmer.
@@noire.blackheart OP said "becoming".
Not really, I am a programmer, a freelance developer and I am watching this video as writing this comm lol
@@beedoox5613 Its weird how tribal many computer users from that era still are about their old computers. As a Sinclair user I suffered Commodore 64 envy for a long time but would never admit it.
Was a Programmer, Watched this, Got fired the next day...
Please say you’re joking lmfao
Aleeki N. Its obviously a joke
Elijah UsedSplash lol sure, you never know though 🤣
Was Nicks employer, watched this, fired him the next day.
@@guulish lmao
"5 reasons you won't become a programmer"
me: *was programming a few minutes earlier*
Same here. Programming full stack for 20+ years, yet RUclips thinks I won't be a programmer. WTF!
im only 13 and almost finished my first unity game in c# and then I find this in my recomended
I dare you to watch the vid lol
I am 11 and I already can do some complex shit and RUclips doesn't think I can be a programmer?!
@@clementsiow176 bruh im 12 and probably know less complex shit than you but ok
Im starting my first job as a software engineer out of college (computer science) and this is great advice. I think one of the things that nailed the interview for me was showing a bunch of demo apps on my iPhone to the interviewers. Also, apply and try to take as many interviews as you can. My first interview was horrible but as I got more comfortable with the process, the better I got. Also, apply even if you don't check all the boxes for qualifications. As long as some of the qualifications are met they'll be willing to still hire you and train you if you prove to be productive yourself.
For some of y'all: #1 reason -- you can't become something you already are.
Found the debugger
i wonder if anyone here doesnt fit that category. o/
DARN IT!
we come here to find out how we can improve
"Everything has to be perfect"
HAHAHAHAAAAHAHAHAAAAAA! 30+ year career programmer here. I start every project thinking, THIS time, it's gonna be perfect. It never is. And, usually, because technology is always changing, and you're always learning. Each project, you do things a little bit differently based upon what you learned in the last one, and since the last one. And as a consequence, you usually end up making small (and sometimes big) errors. But hey, that's why code reviews are so important. ;-) Programming isn't something you learn - like, "Well, that's that. I learned it". It's a lifelong discipline, and you are always learning, always changing, always doing things differently.
But there is some point in a programming career, where the code gets decently clean and you get a feel for what's clean and what isn't, after that turning point it becomes much more fun and satisfying imo
@@itfitness5791 Yep. My biggest challenges are 1) resource organisation (where do I want to put everything in the directory structure), and 2) naming conventions.
@@robertzeurunkl8401 For me it's mostly SOLID Design Principles by Dr Bob, using the right Software design patterns and not reinventing the wheel (using libs, frameworks and public github code bases whenever possible)
@@itfitness5791
Heh. I have an almost opposite approach. Preferring to limit dependencies, I tend to work strictly in the native languages, as much as possible, and only reach out to libraries and APIs when necessary. So, for instance, I no longer use jQuery for much at all other than it's AJAX interfaces, and that only because I have not taken the time to write my own XMLHttpRequest handlers yet.
On the other hand, on the other side of those AJAX calls, I work primarily in .NET Generic Handlers, but once there, I do take advantage of the vast .NET Framework.
:-)
well different is fun, not changing then life gets boring, cheers, for motivation
Developer for 8 years and agree completely
Valdemar i have never seen someone with almost the same name as mine!!
aldemar
What a coincidence lmaooo
I think not
Despite the slightly clickbait-y title, this was quite constructive.
Your videos are always my favorites of my subscriptions, simply just for how relatable your content and story are...but this one really resonated with me. I do suffer from a few of these delays, especially the perfectionism and fear, due to my fear of “if it’s not perfect, NO ONE will ever hire me!” A lot of it has to do with being self-taught in my mid-thirties and knowing I’ll be competing with the fresh young college grads when I start putting out resumes. Thanks for this super helpful video Andy, and keep them coming! I love getting notifications that you’ve uploaded a new one!
You know what your advantage is though? Over a decade worth of acquired soft-skills that young fresh grads won't have. And that's just naming one advantage. I think if you and everyone here perseveres, we'll all get there.
Thanks for the kind words Jason! We all suffer from a lot of the things I mentioned. Just baby step your way through the process.
Momo thanks for that perspective. It’s true.
I personally have been facing tons of fears and therefore, resistance in progressing with coding. Takes a lot of energy to push anything that doesn't seem to be perfect (clean scopes, comments, documentations). Eventually, you just need to put your foot in the door, no matter how much you've crapped your pants out of fear. Andy, awesome content! Thank you for your updates!
Fear is constant in everything. I find that just baby-stepping and just tip-toe-ing outside my comfort zone will gradually get me beyond my fear. And glad you enjoyed! 😊
This could be retitled to “Why you won’t succeed”. All these rules apply to any skill set.
The greatest reason why you are not becoming a programmer is that you are listening to the people not to your heart and passion.
*GOLDEN WORDS* ;)
Agreed
@@cptpeanut203 its very true
@@andres-rodriguez keep smashing
Passion is not important at first. It develops later as you progress and start getting good at a certain skill. You can't be passionate about something you suck at!!!
@@anyzzas7149 very true man!! (°_°)
Perfectionism is a multi faceted sword. Wielded by the handle of persistence you can fearlessly slice your way to the heart of an accurate depth of knowledge. Wield by the blade of procrastination and you will fear the bloody shredding of your fingers, be unable to focus and succumb to the Dunning Kruger effect. There is no handle that wasn't made from blood.
"Make it a rational decision, don't make it an emotional decision" - this goes for most decisions, I think =)
logic(x) and emotion(x) > logic(x) not emotion(x) > not logic(x) & emotion(x) > not logic(x) not emotion(x)
Very good advice. I have a CS degree and still find what you said is the exact same approach I take to learn new technologies. It's kind of akin to figuring out how a remote works. You don't start by reading the user's manual, you press the buttons to see what each one does.
This is called inverted learning pedagogy.
When learning something new by myself, I look at the docs, or github, try to find examples of working code, paste it without understanding, follow instructions like in a tutorial. I do not read "explanations" in the first step. I just try to make it work and run the code. Only when a simple example is working do I try to go back to understand what I pasted, and why it worked. Also reading the documentation now makes more sense. After that I type in the code again(that's important) to make it even more clearer.
I have 3 years experience developing professionally this way. I don not understand low level details of many things but I can produce something that works quickly even if i don't know the language really well. You can always go back and read the stuff that's bothering you anyway(which you should)
This strategy will take time to develop but Andy is spot on on getting to make something while you are learning.
Also regarding going out of comfort zone is something that resonates with me a lot.
The amount of things you know/will-know will be a tiny miniscule to the vast knowledge present out there. You can't identify yourself with knowledge you currently have. You have to constantly remind yourself that you don't know anything. You have to be comfortable with "I do not know". It's not a sign of weakness. Only when you identify that "I do not know" will there be a longing to know more. You will identify with your ignorance. And that's a good thing.
The day you get comfortable with the knowledge you have is the day magic stops happening.
This video is pure platinum grade. I am guilty of all 5 of these mistakes. I have decided to start building projects from now on and learn new concepts along the way. Thank you so much Andy. I hope you get 10 million subscribers.
Thanks Ajaz!
How’s it been bro
I find it fascinating that 'new' or 'aspiring' programmers put programming as a profession on a pedestal. But where do I begin? Start with getting to understand the problems you'll be solving; managing, manipulating, modifying, generating, and transferring data. Any business generates data, or would like to generate data and interact with it in some specific way that it's currently not able to. Maybe a sensible solution includes writing some bit of code that would allow that to happen.
This was quite helpful. I'm about a month into learning front-end development, and I've certainly been struggling with the perfectionism bug. Glad to see I'm not alone!
Glad to help Xavier!
So, how did it go?
Very good advice. I couldn't help myself but share my story. So after I graduating University (not CS major), I was thinking about getting hired at a factory job but one day at night before sleep, suddenly a game idea popped up to my mind, so I was thinking I can't code how am I going to make this game? So I decided to learn to code on my own (from various sources like github, StackOverflow, unity answers, msdn documents and so on), I downloaded Unity Engine (fantastic software) and I did eventually made the game in 7 months. Unfortunately, it wasn't a success. But hey, at least I did it. I finished the game that I was thinking of, plus I learned to code! What now? I continued making games until it succeeded! Finally, I was able to earn money from my own game. Trying and learning 1.5 year without a job and income was tough but hard work does pay off so don't give up, do what you love and work for yourself! (Note: as Andy said in the video, I didn't go through programming textbooks, prerequisites all that stuff, I just jumped right to my project).
I started snapping my fingers when you said things get complicated and don't let them overwhelm you. I Love it
I made sure that I had a passion for being a pythonista prior to picking up my first book, "Head First Python." I'm even redoing my social media sites as if someone who was hiring me is looking at it; everything programming. I've decided my focus to be python and django, that way I don't go crazy looking at python + ruby + flask +sanic. Plus python has two little pythons as their logo, obviously the right choice :) !! I plan on combining this with my security+ certification so I am also designing applications with security and scalability in mind :) Self-taught all the way!! Great video to make sure we don't slip into any ruts or negative thinking.
You're doing good, keep at it. As long as you have a goal in mind and go at it bit by bit you will get there. Best of luck
@Abdullah Habib wrong, there are some females who can understand the logic behind programming
They're just hard to find
Python is not a programming language btw
@Abdullah Habib not true at all. That's just your assumptions. If you're good at what you do, females being in any fields that are male dominant shouldn't bother you. You just generalized "all women" by saying females shouldn't be in this field. SMH.
How did you get proficient?
Thank you for telling us that we have to persist in the boredom. So true. I am very, very bored, but I push on.
Everything becomes boring after you do it over and over again 😊
Thanks for keeping it so rich.
No changing the topic,no going astray etc.Staying diligent and consistent.
I've only recently discovered your channel, but I love how clear and concise you are. You provide really valuable information and insight. I'm about two weeks into my programming journey (self-teaching) and am excited to keep learning! The first two weeks have already been so fulfilling. Thank you for the insight and inspiration.
Oh hey, as someone who's self studying programming again I'm kind of glad I don't think I'm guilty of most of these, now I just gotta get better :3
Unlike many on you tube, you really seem passionate and honest, thank you!
Thanks Annie!
U said every single mistake i have done in the past 5 years and still struggle with programming :( Thanks for pointing it out to me.....AND i have a CS degree.
Eli, did getting a degree help?I already have one in design and realised that college mostly pushes you to learn by yourself and get your own information and evaluates you based on that(at least in my country that happens, they don't really provide what you can't already find online)
@@1biutza Yeah, I have a masters and work at chevron. Even at chevron theirs a lot of self learning, you can't get comfortable and just pass an exam or memorize a bunch of stuff and think you can get by. Programming and development is a process that is always evolving with something new or better around the corner, so you have learn fundamentals and continue to grind out the new stuff. It's a challenge, but if you enjoy it then go for it.
Maria F I completely agree with you. I’m a first year student currently undertaking a software development degree and I realised 6 months in that most of it is independent learning and you can’t just get by if you only do the college work without putting in the the extra hours yourself and going out of your way to broaden your programming knowledge.
I always learnt everything with a code editor right next to me,I make the code with the lesson , play around with it ,I then take notes, try to understand the concept then use the concept in a program without having to look back (so I create a small program using the concept in the lesson), then I move to the next lesson
I have been recovering from memory loss due to my really bad Thyroid problem. I used to be so brave in tackling projects, finishing one language to another, but after my memory shut down on me to the point where I forgot my husband's name...I became so fearful of going back. However, because of hearing what you just said, I was able to relearn all the things I need to...thank you for this motivation!
"Bouncing around" indeed -- some of us are actually too passionate in the programming world, instead of building one thing to prove one concept, we love to learn everything about everything before doing much of anything with anything :-P Seems like only time I build something is when I realize I need a little widget or app that does one simple thing, then I get to put all that other stuff into practice (maybe). [ Of course this is other than my actual day job, I'm talking about in my free time... Yikes if I didn't actually have employment in this field I can't imagine how different things would be ]
@Andy Sterkowitz: You are thinking as a developer that works project based like a freelance. Most of the world works as HIRED = employed 8h/day 5days/week somewhere. You do not decide what project and what task you do. You are hired to work on project "X" and assigned to project "Y". You do not even choose the language, it is assigned.
All good stuff. I believe that as developer skills become more commonplace the differentiator (apart from perhaps the developer who's also graphic artist) is going to be the domain specific skills that are required to understand the product that you're building. In the "old days" there were programmer/analysts who not only were excellent developers but also domain subject matter experts - perhaps they used to be practitioners on the business side but preferred the more technical aspects. There seems to have been a period of stratification where the business analysts have been separate to the developers (who "just" code to the specifications) but, as budgets shrink the ability to recombine those roles is going to be more important too when seeking employment.
What frustrates me as a programmer is that every job listing wants an extensive array of multiple years experience with very specific libraries. Not even languages, but specific libraries used in them. So, my current job has me coding in Java, and we use Spring and Play. The listing wants 5 years of JBoss. Is it really *that* different? Not really, but trying to read up on every technology bullet point on a listing feels like playing Pokémon. In interviews, they *do* ask for trivia about their entire stack.
Some people are just born to be good teachers. You are one of those people Andy. Thank you so much for great advice's!
I think the most common way of working is that you work on a small piece one at a time. I do that, and it is not so overwhelming that way. My boss know what level i am on and he can delegate small tasks that i can work on....
I’ve been a programmer for 10 years. For me it has always come to the simple fact that... good programmers enjoy the challenge of solving problems in a specific way.
In general, when you have a problem you have to figure out a solution that is tailored specifically for that thing. It doesn’t even need to be fully understood in it’s ramifications since it only has to do it’s job of say, getting you out of debt, or dealing with a crappy relationship.
Programming is basically solving stuff with a couple of differences.
1) you have to be able to frame the problem and come up with a solution that will always solve that problem, N amount of times. Which get’s you into thinking in terms of algorithms (If this then that and so forth). That’s not, one might say, the most practical way to solve a problem. In fact, as much as some people would want to think so in this sort of computerised society, most real life emotional problems cannot be addressed in an algorithmic way. Say... you want a partner so you go to some sort of coach who tells you if he/she does this then you do that. That doesn’t work... except.. in software.
2) the problems you’d face, although they might be extremely impactful in one way or another, are abstract from your own life and experiences. So it comes down to having that elating feeling of solving something “For the sake of doing it”. The point of the video about the “fear” of starting to code something is kinda true. But I think a true measure as to if you SHOULD aspire to become a programmer is if, when you’ve overcome that fear and completed that project, you feel like it was a choir or like it was an amazing ride.
TL;DR: Programmers solve problems differently and have only indirect impact on their own lives through their work. You gotta be into that.
Been developing for 20 years have a bachelor's in computer science. Listen to what he says. And break it down. Learn depth set goals when you start. Be willing to learn new things. Those 3 principles have given me success.
Here are the 5 tips :
1.)Thinking programming is all academics
2.) Perfectionism
3.) Fear of the unknown
4.) Bouncing around
5.) Poor job hunt strategy
Your wecome!
What I see that holds back programmers is lack of education in computer science, formal or informal, and organization; often a rush to code without a sufficiently detailed design, API, and interface design. Here is a list for your consideration.
1. Structured programming
2. Data structures
3. Interface design, includes API
4. Object Oriented Design
5. Software Development Life Cycle, especially limiting requirements and recognizing wants
6. Multi-tasking, multi-threading
7. Semaphores, mutex's, and atomic access
8. Database design, SQL, etc.
9. Operating system design
10. User interface design, text or GUI based
11. Computer-to-computer communications, messaging, serial links, networking, IETF, RFC's, TCP/IP, UDP/IP, etc.
12. Robust operation
13. Expandable code
14. Parsing, formatting, compiler design
15. Numbers, integers, floating points, limitations, exceptions, etc.
16. Comment well, comment API's, comment on known issues, restrictions, is it multi-thread safe?, write a story in the comments every few lines
18. Try a number of languages, and I agree, get reasonably proficient at one before trying another
I liked this advice... Over the past summer this year I decided to change career from being a skilled welder to wanting to program robots to do the hard work for me... (goal's right)... I can only look back and laugh at my naivete... having a huge learning curve I stay active in the nitty-gritty. Thanks for this advice as I feel better knowing that it's not unique to me alone. Ultimately, we are programming ourselves.
In regards to perfectionism, also beware feature creep. Have a good idea of the scope or functionality of the project before beginning and don't keep adding things as you develop.
Great video. Here's the summary:
1. Thinking programming is all academic
2. Perfeccionism
3. Fear of the unknown
4. Bouncing around
5. Poor job hunt strategy
You inspired to me start my programming dream again ..Thanks Brother
I liked all your videos that I 've watched.
I am a beginner in the world of programming, and like you, I am trying to be a self-taught programmer.
I am learning Python, using different resources; Udemy, Brilliant, book, and youtube tutorials of course.
Nearly for two months I still have my first excite feelings, and my urge is strengthing day by day.
My first goal is changing my current profession (NGO) for working in the programming field.
Thank you.
Also - And I'm speaking from experience here - When you're taking beginner classes on programming DO NOT compare yourself to your classmates. It can be incredibly demotivating to have a guy effortlessly hammer out in a few arcane lines what took you several nights of work to do. These are people with (usually years of) prior programming experience that are just there to get the credentials that come with the course.
In this case I am that guy, and it's getting difficult to count how often I've said that to a few of the struggling students. They always get demotivated if I "just" know the solution.
Some good points, some that need a bit of clarification. As a background, I'm a full time developer - and have been easily employed for a good 14-15 years now. I have experience in over 20 programming languages, help proofread books/papers and have authorship on a number of these.
The last tip is by far the most important of the bunch. Passion is incredibly important. Don't start a new job because you want to "learn how to do use language X" (which, yes, I've heard multiple times from people interviewing). Instead, learn X and apply for a job that uses X. Github/lab is incredibly powerful, and it should be a central aspect of your development profile. Your development graph should be very active (like nearly every day, including weekends). You should participate on other projects, add issues, engage, and do pull requests. Show that you're an active, passionate, developer. A website is a good option too, but I've had job searches (for me, and offer letters in the end) come about from my Github profile alone.
The others are what need a bit of work. You *should* learn multiple languages. All programming languages tend to boil down to concepts that are implemented in slightly different ways. When you can abstract what a language is doing into a concept, and apply that concept elsewhere, then that is what makes you a strong developer. The "deep knowledge" the video mentions comes from understanding the concepts and being able to apply them to a wide range of situations and languages. Few people have it where you can learn one language (e.g. Javascript), and that's all you get to do. And, with few languages under your belt, picking up a new one is going to be challenging.
Which leads me to the idea of continued learning. Unfortunately, development isn't exactly a 9-5 job. It's a bit of a blessing and a curse. You may end up working at odd hours, you may have a very flexible schedule. But, you're almost guaranteed to need to spend more than 40 hours a week "working". I put this in quotes because the surplus of that time should be spent with continued learning. That's where the github work comes into play. But, even more important, dedicating a good 15% of your work time toward professional development is important. That should be learning new concepts, languages, etc. Aim for learning a little bit every day, not in a block of time.
But yes, Programming is Computer Science. Application is important, as mentioned, but theory is also very important. Don't forget the origins in this, and spend time reading more classic books on programming.
If you don't do this, and focus too much on output - you become a cog in the wheel at your work. You're not going to be very important, and are replaceable. Coding isn't hard, understanding the concepts and how to apply methodologies in an efficient manner is what's hard. Design patterns, algorithms, language choices, testing, etc - those are as important as programming.
Personally, I'd say maybe 20-40% of time time on average is spent physically typing something down. A huge part of my time is spent thinking about the problems, where we're going with it, how things should be written, and so on. I use a lot of paper, I mock things up a lot through drawing and writing. The end product is something that can scale, written with less bugs, and easier to understand for future developers and users. This is also while getting done with work that is far faster than most other developers in my organization.
what really got me is the bounce around thing...because I am a typical bounce around...just literarily wanna jump to the next exciting thing. am definitely subscribing
Very insightful video, been struggling with some of these for a while. Thank you!
360 Pixel Squad where you at
360p fam!
As a child, I learned to play the piano. Eventually, I could actually play the Beethoven Piano Concertos.
I know many will say I am/was talented and that YOU could never do this. This ignores the HOURS and years I played scales, arpeggios, thirds and five finger exercises. I did not READ how to do them. I DID them. For hours.
I think there is a parallel in learning programming.
I wrote another post on this on Andy's blog.
I believe Andy is correct. The way you learn programming is to allocate 2-3 hours/day studying and TRYING to write programs. You can start out with so-called easier ones, which at the beginning will be drudgery and make you feel like an idiot.
In my other post, I described "neuroplasticity" and explained it. YOU CAN CHANGE THE STRUCTURE OF YOUR BRAIN BY HARD, REPETITIVE WORK OVER A PERIOD OF TIME. I have done it. The BEAUTY of doing this is that it actually becomes easier over a period of time.
I am a retired surgeon. I have playing things on the piano that only great artists can do. I have played with a symphony orchestra. I am NOT a genius. My daughter has a higher IQ than I do.
I can make a guarantee. If you allocate and work through 2-4 hours of TRYING to write programs over a period of say 1-2 years, you will become a programmer. My son-in-law, who hires programmers told me YOU will get a job, likely over 80,000 dollars.
You cannot learn to do this by osmosis. You have to put the work in. I retired at age 53 from being a doctor.
I was not born rich. I had to sell magazines door to door in Detroit as a teen to help support our family.
Sanjosemike (no longer in CA)
The hardest part about programming is finding a job that you qualify for. I have never built a desktop application. I've only built websites. I am actually really feeling sad today because I am feeling hopeless about finding work. I've been looking for 6 months and trying to improve my skills but I can't even remember terminology in most cases. Starting to think I should have just gave up a long time ago.
You're absolutely right! A programmed feature set only has to work well enough to satisfy the end users itch. Because after they play with it for a while they are going to come back to you and ask you to expand that feature set. You don't have to know everything the app will do up front, because your user base will let you know what else should be added.
All RUclipsrs are telling me to just start programming but, never what. 2 months in and I still don't know what project to build...
You're the best Andy! Your videos are always so helpful!
Cheers Jake!
When I did technical recruiting, I gave 50% to thinking abilities. You would left the interview a bit disgusted if you failed, but with a strong sentiment of fairness. I even got a guy totally disgusted because he tough he failed since I let the "rote learning" stuff at the end (technical knowledge and trivia).
While someone can learn specific material on his own, increasing fluid intelligence is a very different story! And people who are smart do not necessarily advertise it. The one who succeeded did fail basic Java writing and finding a piece of information in the documentation. I realized he was very good at problem solving and giving him milestones in increasing order of difficulty would help him.
In 6 months, he completed an application and his level in English improved a lot!
Another was a math teacher and couldn't properly write PHP. Same things, aced with pseudo code when I told him I didn't bother with proper syntax and he could go with his own pseudo language.
I have also seen people with "I studied petri networks and AVL trees like red black". Then you ask "can you write a function that detect if two ranges are overlapping" and they are clueless. Ask them to get the 10 first highest numbers encountered in a stream of a billion number, and they don't see they have to use a heap. But they know about what an AVL tree is :-D
You can be a total idiot and use savant words.
'you cant be a guy who sits and watches tutorials and makes projects all day'. I feel attacked like damn man
Eye opening, I'm a victim of bouncing around from one language to another without having mastered the fundamentals of a language or programming in general. It really holds you back
I had been a software engineer, mostly programming for industrial products, and about 20 years in, the young person in the office asked me if a lot of $ could be made in programming. I told this person, unless they love it, have passion and dedication, and will work with it daily, don't bother.
I've spent almost a month on my current project and am currently idiot proofing it. Thank you for the advice, it's time to move on...once I finish this part!
Andy. I totally agreed with what you said. Learn on the fly is a way to survive as a programmer.
The best thing about these points is that they can work with almost all fields of study and learning. It's like this is "5 Reasons Why You're NOT Becoming Anything You Want To Be." People should really watch this video whenever they have a setback in anything they're trying to achieve. That's an excellent video, Andy, just as usual.
90% of the work on any code is getting the last 10% of perfection. Or that's from my experience. Alas there are a lot of perfectionists at work.
I think the biggest benefit one can have for programming is outlining your scope early, planning your algorithms before you start, and avoiding scope creep.
Learning to program is like learning a language. You can study all the vocabulary but you won't know how to Form a sentence. Then as you slowly learn to construct sentences and meaningful conversations you need to learn how to efficiently and effortlessly create systems to combine those into a functioning program. And as with all languages that simply takes time and alot of practice.
I think the "Fear of the Unknown" is really my biggest problem. I enjoy the process of learning, e.g. I like to read a book or watch a tutorial series about a specific framework or language and then I feel comfortable using it. But there is not always time for that, and when I have to use new technologies and have to quickly be learning by doing, I really get nervous. I hate to not have a real plan. If I only have a vague idea of what I want to achieve but have no idea how to approach the problem, I spend a lot of time planning out the exact steps and thinking about the problem rather than just starting to code. I realize that I am actually wasting time with that, but I hate the feeling of starting work, not knowing exactly beforehand what I am going to do. This sometimes even causes me to worry the whole evening before and having bad sleep.
As a self learning noob programmer, I know I should avoid perfectionism and sticking to tutorials but honestly I would like programmer buddies so I can learn and grow. Still, very helpful video.
Random Guy want to learn together? we can answer questions to each other which will help us learn more.
@@yankobig8612 Yup, that would be a great idea.
Random Guy what programming langauges are you learning now?
@@yankobig8612 JS,php and python.
Random Guy I’m starting python which I’m starting to learn.
Excellent advice Andy..thanks.
I agree.
really like your soft-skills focused approach on becoming a developer.
The exact content of study will change, implementation best practices will change etc.
The value of learning what soft skills to have and to cultivate them is a big leg up.
I don't know how many times I change my study content but the algorithms to success, once determined should be made habit.
Although I plan to build my own web site, I am leaning toward building some applications. There wasn't even a web to learn HTML an CSS for. So, I will be going back to my roots to start but I want to work with C# as well. I'm not interested in where the big money is. I just want to make something that works and if I make some money, great.
Want to learn to code. Find a repetitive process that makes you want to slit your wrist and figure out how to automate as much of the process as you can. That way your end goal isn't learning to code, it's finding a to optimize your surfing of social media.
As a software developer, number 2 is very common and very damaging. Seen people rewrite stuff for years without it goin into prod.
Great video!
thanks for this.. really need this motivation right now👌🏻
This is really relevant information and actually explains real problems that budding programmers face when going through the self-taught route. Thank you for putting this out, more blessings to you.
The part about persisting when things are boring is great, I was considering changing language for that very specific reason. Thanks for your insight!
I'm guilty of all of these. But I'm trying to push through this struggle and get to the success I know I can achieve.
Good information. Sometimes when wanting to make a project that is large, it's good to make small projects that will be used in the big project to learn just that functionality and learn the syntax around it. It's a good strategy because if one is encountering alot of errors or incorrect code execution it's good to be able to just focus and wrap your brain around just that module / project until you've learned and corrected the errors, then on to the next one.
Once you've completed the various small projects then it's time to incorporate them into the one big project that was first thought of. Coding can be both an amazing wonder and it's share of frustration but with perseverance it pays off in the end.
@Andy Sterkowitz I actually only learned from books during my biology Bachelor and had a real hard time in the lab. So Computer science is like all other Sciences in that regard.
p.s. all what you said seemed to address me directly, and you are so Right. Thanks for your words man.
Self-taught? Yes absolutely - just start hammering away. In fact you'll become uber productive and a software dev super quick. The problem comes in when you apply for jobs. Fact: those who went to college look down on those who did not. And unfortunately, as a self taught coder, you will have gaps in your knowledge. But you'll ALSO have knowledge the college kids don't. Actual practical knowledge. Your job is to convince them of that fact. (Super hard)
I have never been bored while learning how to program. I started out with C++ and 3D game programming in the 90's. There was so much to learn, both regarding the math used in 3D engines, as well as all kinds of programming techniques, language features and so on...
So motivating, we really appreciate. I will start coding actively.
Writing code for a website is very different than writing code for a medical device application. The website can miss a few things and still serve its purpose. The medical device application is tightly monitored through the entire development process to the point where inspectors are brought in to verify processes and content in order to be certified as compliant and ready for the market. Everything has to be perfect. Perhaps you can begin your talks with the nature of the applications you are referring to.
Excellent advice. Much needed. Subscribed.
The problem with just "hammering away" on your own is that you risk getting a lot of bad habits. Ideally you'd want a senior overlooking the hammering to make sure you're doing it the right way.
The problem with your statement is that this guy is obviously appealing to *self-taught* programmers that more than likely don't have a person in their lives that check their mistakes.
Words to live by! Thanks for always making a great video !
Glad to help. 😊
Excellent video and excellent help.
i was gon come to this vid and fight with every point he makes thinking that's not a problem, that neither .. but i dont have any of your things, guess im becoming a programmer
This is the eternal question. Do you want to want to be a singer... or you want to sing? Do you want to be a guitarist... or you want to play guitar? So if you want to be a programmer, maybe you like the title more that you like the work. Find what you like seeing yourself doing instead of seeing yourself being.
Thanks Andy. This is what I needed at the moment.
Cheers Diggy!
I'm looking at programming as a second career.
same..im a nurse and learning
#5 really resonated with me. Great videos! Keep it up!
HI Andy, Great useful video!
It made me more clear thanks thanks thanks.
Minimum viable product (MVP); thanks for that. Breaking tasks down into chunks of an hour, half, 15 minutes. Yep. Fear of starting, fear of finishing. Yep; doing hard things is... hard. Persisting thru loss of enthusiasm (boredom). It's good to hear these things said.
These are not programming specific, this is general technical skill appropriate. Any academic issue that hits the real world causes these issues... And honestly, this should be taught to kids at the start of high school. Maybe you can do a focused subchannel? :p
"Perfection is the enemy of good." .....but incompetence is the destroyer of both.
Thanks Andy for your informative post.
Allow me to give sone feedback.
1. Learning from the academic persective, I found anoying learning from the books of Deitel because they dig too much in details.
2. To avoid the trap of bouncing around I think a motivation ahead could help like getting a certification or doing a freelance work.
3. No program is perfect , sure. A way to avoid this hellish perfectionism is to work around a defined requirement cheked by a third party. Or try to solve a real world problem.
4. I have to say that getting a job has not been my problem thanks to this wonderful language C#. However other "soft skills" became even more important and the absence of those can ruin your career. I got many good leads from the SWEBOK standard.
5. Other important skills are the implementation of a proper software life cycle. Most of jobs demand Agile related skills and certs (scrum master, etc). Personally I never found my self under a defined SDLC but nothing different to express your self clearly on paper and verbally. By the way a very useful tool currently our team is using is Azure Devops.
Thank you Andy! I'm guilty of bouncing around! I need to focus on one program language and really master the fundamentals
Don't focus on mastering fundamentals either. Those will develop as you develop projects and make mistakes. All you need to know to do anything in any language is the purpose of functions, loops, variables, branch statements(if/else), classes, and maybe pointers if are using a language that takes advantage of those. You can Google how to perform any kind of input and output you need, and learn about libraries as you need them.
I am guilty of points 2, 3, and 4. The perfectionist trap still gets me. The idea of someone using something I made and finding bugs drives me crazy. I'll spend half a day working on a page transition animation because I want every frame of it to be perfect.
One thing I do that you didn't mention, is wanting to do everything from scratch. I feel like a fraud if I use an existing library for something I could have made myself in a few days. It adds up to a lot of wasted time.
I got that feeling myself. You should set a timer to finish tasks. No matter how crappy looking the code is, or you do not understand much of it. Once you deliver that first project within a deadline you will feel very confident in your abilities