My long term goal is to become a Self Taught Android Developer, Based on my research my road map is:- 1. C 2. C++ 3. My SQL 4. Data Structures & Algorithms with C++ & Competitive Programming (Last goal of 2019) 5. Java (First goal of 2020) 6. Android Studio 7.Flutter 8. Design Patterns 9. Applying for Jobs in the end of 2020. In India if you want to get employed in Google,Microsoft,Amazon these American Companies, You need strong Data Structures & Algorithms knowledge. I am currently at the end of C. How this road map looks to you Andy I need your advice also. It will be really appreciated and helpful for me.
The last one opens my eyes rly. Helped a lot.. but i have a question, when you feel down or unmotivated sometimes and you don't have the energy to learn, how you deal with that ?
Not at all what I was expecting from the title. I was hoping to hear about some general programming strategies that self-taught programmers are most prone to. Instead, it's general advice about career-building as a programmer - 99% of which applies to any long-term goal in life. The content is good; the title is just somewhat misleading. Fred
I thought the same! I have a CS degree but consider myself largely self taught. I was curious to see what type of mistakes I've been making without knowing it. 😝
@@drakon32 Yeah. I wouldn't say it was wrong, but it is misleading. And even then, I don't believe that was intentional. He really *is* talking about mistakes made by programmers - just not programming mistakes. Fred
@@ffggddss : You read my mind!! I was expecting examples of major mistakes that self-taught people make when doing actual programming. I've had formal college courses in COBOL, Pascal, C (with a dash of C++ included), and then several brief "community education" courses in BASIC, and I still feel like I've barely scratched the surface of learning programming.
A video on self-taught anti-patterns would be good. A lot of bootcamp graduates also fall victim to this, the moment they move out of the tech stack they were taught in, they start to crumble.
Hey Andy, I'm a self taught developer myself and I just wanted to add on to your points about how those struggling should go about their learning. I started back when I was 14 and what drove me was mainly the idea of having fun, there is so much that can be done on software development that is quick, low cost and super fun and interesting. I don't think that learning through strict deadlines or plans applies to everyone and I just wanted to share that. I hope that you could maybe explore more of the fun stuff of programming as well, such as that kid on RUclips that made a robot scream everytime it hits something! GLHF and keep doing what you're doing, it's great!
Andy, when it comes to the advice you're giving, I believe it's being given from the heart and from experience, thus it's not a rant, as usual, good points to pass along, good tactics to adopt, and always inspirational.
Here's a tip: set up a trello board for each project with at least backlog, doing and done sections, you can add ready for test, testing and ready to be released too if you're ambitious
Aren't All developers, really, self taught ... you read documentation, books, etc ... AND get up to date with the state of the "craft". I guess theoretical stuff must be studied in university but the actual skill involves creativity and reasoning that, yes it can be taught to some extent, but in the end it is personal
At the end of the day, you have to do the work yourself, that's true. Being selftaught just means that the workflow and the access to information/teachers/equipment may differ. And you may get paid less without a diploma.
If it can’t be taught then how can you self-teach it? I agree, much of what makes a great programmer is genetic. It can’t be taught. You can teach a lot of people to be programmers but not necessarily great.
Hello Andy..have been watching your videos.. it's really inspiring... I started learning how to program almost 3 years ago..started with the hardest c and c++, after OOP topic in c++ the remaining topics where abstract and frustrating so I picked up JavaScript then python then R. With no clear direction I just wandered and eventually gave up on coding. So i got a Job in the Telecoms industry as an Engineer. Everyday I woke up feeling like a looser because I spent so much energy, time and money in learning programming..Came across your videos recently and I understood my problem, I felt I should know every concept before I applied for a Job I was wrong. Following some of your advise, I have designed a timeline for myself picked up a c#, created several portfolio and set deadlines for learning basic concepts. just recently I applied for a Junior developer role in a start up firm and have been interviewed. Am so proud of my commitments and how far have gone in a little time...thanks Andy
T3mpy I am 4 years into my personal journey and I still don't have a coding job :( I just wanted to let you know and make sure you have your expectations low... Coding takes years, if somebody tels you they did it in 3 months, they are lying!!!
I wish yall understood how much thought he puts into his program. I'm in his program and the amount of knowledge I have learned from the start until now has insane.
Great lesson. I'm incredibly guilty of spending way too much time on the "passive" vs "active". Glad to have you point that out. It's pretty easy to fool yourself that you're being productive, when really you're not.
Yes! It's easy to confuse being busy with being productive. At a certain point you have to move from "learning" to "doing" and it's much easier to evaluate if you know exactly how much time you're spending doing either. Glad to hear it was helpful!
That first one is good. 20 years ago, I applied for a job before I had really learned to code. Got hired because I spelled “SQL” correctly. Still, to this day, trying to learn to code. 😄
Just beautiful. So well put! Thanks man. I started experiencing some doubts for the first time just two days ago. I was really frightened by how my brain went "well maybe programming is not your thing after all". But hell no! I'm gonna get good and be balling someday soon. I promise that to myself! Thanks man
Setting a hard date is a really good point. For a long time I knew I wanted to be a game programmer. So I heard C was the language to learn (it was the PS1 times) so I bought a big book to learn C and on my summer break after my highschool, I decided that by the end of the first month of the summer I would have finished the book. So after I done a couple exercises, I got a good idea of how long it would take me so I done some Math and it meant I had to spend every morning of monday to friday on this (I was living at my parents house on a summer break, so I had time on my hands). So I did that and not only did it start me on my path as programmer (I've been a game programmer for 14 years now) but it was also very motivating and self rewarding to know that, I can do this. Not long after, I've been told things were switching to C++ so I found a website to learn C++ with gaming examples and my experience with the book really helped me set another goal for those tutorials too. Also at first I saw programming as a tool to make game, but now I also like programming in general, made my own budget program that I've been using for years, also do some AI contests. Programming is a blast.
@@BikiniGyat Hi ! I initially learned from a book and a site that is long gone around 18 years ago, so my references are a bit outdated. I mentioned AI contests, the platform I'm talking about is codingame.com it also have some "puzzles" and visual challenges and "bot" programming, so it's a really fun way to pratice coding, but not a place to learn from scrach. One site I heard was good for beginners was codecademy.com, so you can learn the basics on there and pratice with fun puzzles on codingame. After that I'd say try out Unreal Engine, very popular game engine and the code is in C++. Since it's popular there are a s*** ton of tutorials on the internet. I'd suggest investing a couple of bucks on a Unreal Udemy course, they pretty much always go in sale for like 95% from time to time and they are pretty long and gives you a good start to then search for specific things you want to do. Good luck !
Have to say, you really have the viewpoint of someone who's been there, done that. Literally on point with the pointers you have noticed in learners. I'm not gonna be the guy saying programming is for smart people or anything like that but it's clear as a bright sky that you're smart and you have solid logic in your rants and advice. Truly a great mentor and inspiration and best of all, your ideas and advice can be applied to almost anything, not just programming.
5 лет назад+12
Actually, all of your comments are relevant to all kinds of self improvement efforts for competitive purposes.
Love this advice. I feel that I lack the discipline to commit to dates for personal projects, I feel that I do better in classroom settings. Going to go to grad school in the fall for CS but I'm already 26. Probably a complete waste of money but, to be self sufficient on my own is not easy. Act Small think big. Thanks Andy.
More than 30 years ago I was a hardware design engineer, self-taught, no degree. My boss needed a production test program for our product, fully automated. After 6 people hired, he had a program that tended to crash the PC randomly. He turned to me and said "I finally accept what you have been saying, if you want it done, do it yourself, so, fix that program. You have two weeks." The program was written in C, and I had never seen C before. I knew Basic and assembly programming, self taught. He gave me the systems, and a couple of books to help. After a day and a half, I asked him "I am done, can I take the rest of the two weeks off?" Of course, the answer was "no", and I was given more programming tasks. I determined that the code I was given was "spaghetti code", and I went to work fixing it. In the long run, I was responsible to a large degree for the reputation for a quality product that we had. And I have been creating automated test programs, for production and for verification (two very different thing) ever since. I am currently the backbone of the HW and FW verification team for yet another company. The BIGGEST thing you need, if you want to be a non-degreed programmer, is completed projects under your belt. Always keep a copy of any code you develop, so you don't have to re-invent. But to get a job without a degree you need to be able to show that you can perform, that you can accomplish something. The best way to do that is to deliver a project, for a company or for yourself. What the project is actually is unimportant, as long as it highlights the skills you want to sell. I am a test engineer, and my ability to get the PC to communicate with hardware under test via RS232 or Telnet helps a lot. (Derivatives of RS232 like RS422 or RS485 or whatever are easy once you understand RS232.) The downside to my being self-taught: I am a terrible ball hog.. My code is MY code. I do not share, except to give a co-worker a copy of my source and help him to understand it, and after that he is on his own. The upside is that I do my coding MY way, and I strive to make it effective. Engineers with degrees sometimes deride my programs, even deride me for having no degree, but I have also dethroned them, embarrassed them, highlighted serious bugs in the products they were so proud of. I once outperformed a Stanford PhD and his group of three engineers, and I was doing it as a side task while I developed production tests. It comes down to attitude. Do you want to kick butt or not? I have been hated by slackers, and loved by engineers who realized I was helping them produce a superior product by finding the bugs in what they had done. But the key thing is to demonstrate your ability. A degree is a promise of ability that is sometimes not realized. Demonstrated ability wins over degrees without demonstrated ability. Choose a project, work it through, put it on your resume.
@@liquerinfrnt That really depends on what kind of programming you want to do for a job. Learning to program is like learning to read, you get the basic skill and then apply it to what you are REALLY interested in. What do you want to read about? What do you want to program? Do you want to program web interfaces? So you want to hack in Linux? Do you want to do what I do and create automated test programs to break the things my company makes so that they can be improved? Do you want to make cool gadgets and toys? The world is wide open, where do you want to go? How do you see selling your programming skills? You should pick a project that highlights and develops those skills. Windows is popular, there are several programming environments there. Mac is also popular. Smart phone apps can sell. Linux is for people who want to control the world, and it has several languages that come with it. Small processor boards like Arduino have a lot of potential. Key thing to do: Don't just learn to program, develop multiple skills and combine them into a bigger project. Can you do circuit design? Build boards and program them. I play with Windows (LabWindows/CVI) and Arduino and some electronics and woodworking. You probably have skills you don't even know you have, what do you have to bring to the party?
Wait untill you have to work in a team together on a single product. You will probably fail hard. Because your a solo person. Your code is then probably full with bad practises because you never verified your code by other programmers who can also give you advice. I know these kind of people like you. They are great solo. But the company gets too dependent on you, and the code is mostly badly structured because it's all in your head and someone else can't understand shit of your code. You act like your way is good, yes maybe in a small little company where the projects are small and they company is naive with code base and future maintenance by other people. For example they risk this shit on one person... YOU. This is from a company perspective very bad.(What if you get sick, or die?) I always learn from the critics of my coworker or i teach them. Depends what kind of persons they are. People like you, it's really hard in a team. Then persons like you blame the team, because You yourself are not a teamplayer. You only excel alone, so you can't do large projects. In your comment you say downside is this.. and directly try to reverse the downside with something good. By the way, programming is not that hard... what is harder is to understand the product your making. Coding is just a screwdriver or a saw. A tool.
@@HermanWillems I agree that programming is not hard, and that it is just a tool. I also agree that I do not team well. I worked at a company called Telebit, they did the first commercial dial up modems that went faster than 2400 bps. I was there over seven years. I created all of the production test programs for that company up until I left: Functional Test, Burn-in test, ORT test, you name it. After I left them I eventually ended up at Cisco Systems, still doing the "cowboy" thing. Cisco bought what was left of Telebit, and I met the guy that had inherited all my code. He was pleased to meet me, he had learned to code by maintaining my tests, and he found the code VERY easy to understand, even though it was C running under MSDOS. At my current company I developed a communications tool for the system communications backbone before anyone knew what I was doing (my boss started two weeks after I did and took a couple of months to come up to speed.) My tool is now used in MANY test fixtures and by several engineers as a basis for their fixtures. I am not worried about someday being forced to team with others on code, after over 30 years of doing this I am now 64 and will be retiring in the not too distant future. I think my boss is worried that it may be sooner rather than later. Certainly my style of coding does not work for all projects, but for getting started on your own without college debt, it worked for me. :)
The best thing that has helped me while teaching myself is working on something I need/want. By knowing what I want it to do I find resources geared to that goal and discover even more on the way. The one thing I could add is, "the resources are there" anyone that says otherwise is using dialup and they can't be trusted. Now I'm developing a control/monitoring platform for container farms and the amount of things I have learned along the way is mind blowing compared to things I learned in a professor led course. Sometime it's a lot and other times I want more.
This is exactly how I learned. Sure I took a programming 101 class in 2008, but then it was basically all gone because I didn't write a single line of code until 2011. I also browse / quickwatch (1.5-2x speed) courses on pluralsight and udemy. This strategy ensures that I will know where to quickly find the answer when I run into problem(s).
I found this video just when I decided to actually pay attention to a programming-related video. For 3 years, I've been watching tutorials, reading, trying out those interactive learning websites, but still, I feel like a beginner cause I made/making the mistakes you addressed in this video. I know HTML, CSS, Javascript and some javascript frameworks, still if someone invites me for an interview, I wouldn't be able to answer simple HTML questions. These 3 years, I never had a roadmap, no deadlines, I just coded when I felt like it, went thru courses, burned out, took 6-7 months break, came back, skipped the basic easy parts cause I felt like I already mastered them and felt depressed right after something complicated came. Well, hopefully I will be able to correct my mistakes.
2 big points that I want to stress that you already said: 1) Set a deadline. I cannot stress how important that is. Having a fire or your ass on the line is a great motivator. Sink or swim. When my job was ending and I HAD TO learn something in order to get that next job was PARAMOUNT. There was no "well, I'll learn a little today, play some games, then learn some stuff this weekend after a few rounds of whatever." NO! It was "I'VE GOT TO LEARN X, Y, and Z ASAP YESTERDAY SO I CAN GET THAT JOB before this one ends. Otherwise I won't be able to pay my bills. People are depending on meeeee!!!!" So having that same motivation as a deadline will force you to learn. 2) Don't get sidetracked. While learning something new it is so easy to get side tracked on some enhacements to some code or feature and not learning what you are supposed to learn because it is more interesting than the boring lesson you have to do instead of what you want to do. Take a break, and get back to it. Do some lesson exercises and make a real-world app to practice what you've learned.
The biggest problem that I had working with people who were only self-taught is that they didn't understand the basics like the Complexity of Algorithms, Finite Automata, language grammers and parsers, cryptography etc. This makes it impossible to have a sensible discussion with them about why some idea or other is going to lead to trouble. They would listen to a professor at university but they sure as heck din't want to get lectured by an annoying know-it-all colleague at work (like me) so they refused to see the importance of e.g. not using an N^2 algorithm. My favorite example was the guy who claimed to have speeded up the MD5 checksum generator by 1000x. Management was delighted and there were pats on the back and it was impossible for me to say how unlikely that was to be possible until a week later when everyone noticed that the output of the function was the same no matter what you put in.
@@SukeerthM_1 There is so much on the internet. Complexity of Algorithms is perhaps the most generally useful concept and this overview looks ok: discrete.gr/complexity/. You also need to look into the complexity of inserting new items into various data structures like lists, hash tables, heaps, balanced trees etc.
Solid advice. If you are that good at keeping track of your time you will succeed in whatever you set your mind to. And if you are not, well now you know it, go work it out!
I'm so glad I found your videos. I was seriously considering doing a coding boot camp, but plunking down the $3,000 deposit plus taking 4 or more months off from work is just really unrealistic for me right now. I wasn't even sure if I could actually get a job if I was self taught, but you've given me the insight and inspiration to know that it's totally possible. Thank you!
I'm guilty of second guessing myself. I originally started with Python, but decided to Switch to web development. I really enjoyed Python, but I was afraid most Python related fields would be very difficult to get in without a degree. Now, I'm focusing on HTML+CSS+Javascript. While I'm enjoying it as well, I find myself understanding the theory, I have a very difficult applying what I've learned. I have next to no creative or design skills,so, it's hard for me create something that doesn't look like hot garbage.
how do you set a date when you don't know how long it will take to learn things? a tutorial might say it takes 20 hours but for every hour of tutorial you need an additional hour to write the code because you need to watch-pause-type, watch-pause-type, etc... sometimes I run into some incompatible code in a tutorial and I have to spend a couple hours researching on the internet how to fix the problem which is faster than posting a question in the tutorial.
Im "ALL-IN" 100%. Too me..its the most important task daily, sit down and practice coding. I watch your videos religiously and apply all of your suggestions without modification. Thank you for these videos! I purchased a dry-erasure board and have my "Plan of Success" written out at the top!
Totally relatable , previously i didn't track my days ... which made it harder to notice my weaknesses and you keep repeating the same mistakes. Tracking sleep and mood helps -- i will try the roadmap today cause that looks like a good advice
8:30 Gosh that was me. I focused and learned how to code HTML and CSS and even Javascript opting to learn how to code in pure JS instead of using libraries first. I started using Bootstrap and learning how to make mobile friendly sites, started to use jQuery. Then I wanted to expand into forms, databases and users and that's when I hit the blog posts with a thousand recommendations. I did write a form handler for an order form that saved customer contact info, allowed customers to select flavor size and quantity of various "treats" and calculated cost, tax and shipping before emailing it to an email address for the order to be processed. Not the best way to do it but something I'm still proud of. After that I was like okay I'll just do a little research, see what's wanted right now and learn that one thing first. The thing that really ended up frustrating me was just setting up a good development/testing environment. I was split in too many directions trying to get things running smoothly, though admittedly I learned a lot about tracking down errors and researching solutions. Now, after taking a year break, I'm going back through dusting off the cobwebs on the HTML, CSS, and JS before trying again with expanding my knowledge and skillset.
Don’t design software for pay unless you have some experience or somebody that knows what they are doing who at least designs the shape of the project and code. Syntax of a computer language is the least important thing you have to learn. Knowing and dealing with the people and problems of a business are essential to successfully designing code that can really solve company problems. If you have a 4 year honors degree in CS, you are not qualified to design software by yourself. You have no idea how little you know. Somebody that knows how to read and write shouldn’t think they can write a book that anybody would actually buy. Regardless of what you think you know, you need supervision for years before you (or the business that is paying you) should trust that you can design a useful project. Maintenance tasks, 20 line throw away code, minor adjustments to a user interface maybe but please do us all a favor and don’t design code for pay without knowing what you are doing. You will not only hurt the reputation of yourself, cost your employer money but will give all the rest of us a bad name. PS The language you use or the syntax of the framework you use is trivial compared to what you need to know to make something useful. If somebody “teaches” you a computer language, it is the equivalent of graduating from grade 2. I can learn a new computer language (enough to program in it) in less than 1 hour. So what! What does it take for a person to get a job as a professional violin player? Natural born talent and 10-15 years of learning and hard work and making software is at least as hard. Anyone that says that programming is easy is conning you.
I started part time and eased my way into full time. That way I didn't have to just quit my other job and free fall for a while. Once I got to the point I was actually being sought out for work, and not just seeking / begging for jobs, I was ready to go all in.
Good point on 'thinking big and acting small'. 4 weeks into learning how to automate deployment but I really just want to work on development. Easy to feel like I'm falling behind until I remember I've been building an important skill set - just not the one I'm excited about :/
I LOVEEE this video!!! Im currently teaching myself to program - previously involved in personal training and behavior change. Thanks for sharing with people that there is SO much more to learning than JUST the aspects of learning (while those are important). This video was very well put together and not too drawn out. I just saw the title during a mental break Im taking. Anyways, i rarely comment and just had to tell ya... great job!
Bonus tips from a guy with two years working experience: 1: Try to learn some sort of collaboration tool (mostly Git). Programming is barely a solo job, you work in a team. 2: Find users to do an acceptance test of your projects. This will not only give you experience with users, but you'll receive valuable feedback to make your shiny portfolio projects even shinier. 3: Don't neglect physical movement. Programming is mostly sitting and sometimes grabbing coffee. I go to gym about 3 days a week. Gives your mind a good boost to stay in super saiyan development mode. 4: Users are the worst people.
Nice. I thought from the title you were going to talk about programming mistakes. You didn't, you were speaking about career development. I like that. I have completed my professional career, and am now using the net to teach me modern things like React for recreational programming challenges (mysql database, flask middleware, react front-end) such as a database to manage my putting together a local association magazine. During my 20-ish years of professional programming (1980-2000), the technology has changed hugely. The need to develop your career is just the same. On the latter, one thing that has changed is access to information. In my early days, the information came in manuals and training courses, such as the VAX-VMS manual set, that took 6' of shelf space in attractive orange binders, and things like Yourdon and Jackson methodologies. During that time I also recruited (interviewed) hundreds of aspiring software engineers (I descry the term programmer, because that is just a small part of the job). The key skill I was looking for was the ability to abstract - i.e. to focus on the solution in various degrees of detail, and to forget about the detail of other parts while focusing on the detail of the part being worked on. That being what I was looking for, how would an aspiring software engineer recognize this in themselves? That is the rub. Somebody who doesn't understand abstraction can't tell when they are missing it. Sorry for the waffle. Random thoughts are the perrogative of the retired. :0)
I'm a self-taught Android developer. While helpful, I disagree with this video because I feel it unnecessarily complicates the process. Setting a date: How does one know when they're competent enough to be paid to code? Tracking sleep: good advice but that's not specific to learning to code. I think the single most important thing is to make apps that YOU use. After completing the sample projects from the books I used to learn Android, one of my first and most important projects was a messenger app. I still use it to this day. The daily use of my own app, to communicate no less (where reliability is critical), was a strong driving force in improving my skills and learning new techniques. It forced me to learn Firebase, version control, UX and other stuff that wasn't in the books. When my users (friends and family) started asking me to take the app out of closed beta so they could invite their circle, that's when I realized I was competent enough to freelance. Of course, one app doesn't make a portfolio. That's when you explore other categories, and once again, make an app that YOU would use. My first projects (and their categories) were, in no particular order: - An app that would let me view deleted Instagram & WhatsApp messages by catching and saving their notifications. It also saves my notifications to Firebase which I can then view from any device on a simple web UI. I'll branch this into a parental-monitoring app in the future. (Utility) - The aforementioned messenger app. (Communication) - A simple appointment-booking app for my mobile computer repair business. (Business) - A simple flashcard-style math & vocabulary game that I can update based on my son's academic needs. (Game/education) I'm currently self-studying iOS so I can publish those same apps for that ecosystem. I started freelancing a few months ago and I've picked up 3 clients who want their own social network and are paying me 5 figures EACH to do so, and that's just Android! TLDR: Make stuff you want to use first and foremost. That's what makes app development fun and not a chore. When the task is fun, learning is easy.
I also forgot, I made a cloud note-taking app similar to Google Keep. The point is, make an app you'd use even if one like it already exists. It's very rewarding and encouraging to use something you made with your own hands even if another app does it better. I recommend a cloud note-taking app for everyone since it's relatively simple and you won't care if you're the only one using it.
thanks,this advice changed my mindset. i have many goals in life(i write them down) but i forgot on programming goals.. we can apply this tricks in real world. thanks again.
Well what I see/hear often is something along the lines of "I want to learn programming. With what language/IDE should I start/is best?" My answer to that is always NONE. Learn the concepts first, take a sheet of paper and write your pseudocode by hand, then 'execute' it in your head step by step to see if it works as intended (I used a similar approach to understand how A* works). If you know that learning the language becomes just learning the syntax (maybe with some quirks the language has). You first need to know how to use a hammer before you can decide which to use for what. The language is the hammer of software developers.
Download Grindstone time tracking on your computer so you can track your study time, and project time. Helped me quantify how long projects took, how long I was passive studying. It's a game changer if you need something to keep you accountable.
I'm a self taught programmer and now manage a programming team and an IT department in a very large company. I started with C, then C++, C# and now at least a dozen others. Once you learn C every other language is just syntax and I find them easy to learn. Programming is logic. Breaking down a problem into a solution made up of many, many pieces. A lot of doors were closed because the lack of a degree, but I managed. I hire my team more on personality and what they are capable of knowing, not what they actually know right now. You either have an aptitude for this type of work or you don't. Going into this career is a commitment of constant learning of new technologies, which I actually enjoy.
Usually when I work on a project I imagine it very simple not that many features but after I get the base down I start making it more complex and it helps because you are not backed up in a corner thinking "Man how am I going to make all of this complex stuff" instead of just focusing on getting the base of the project down.
Advice I always give to people who tell me they want to get into programming. Find what you enjoy doing and run with that. If you like analyzing big data - then do that. If you like creating web applications - then do that. If you like setting up backends - then do that. Create a your own project you can be passionate about or find an open source project. This gives you hands on experience, will keep you better motivated, and will give you something you can talk about in the interview. Not all but most interviewers are passionate about programming and will tend to hire other devs who show they are passionate too. Knowledge is important but isn't the only thing - don't hyper focus on the little details.
i don't think self taught programmers are looking for a job. Most of them are hobbyist and would like to code for themselves. He's thinking in terms of a job. Just people that draw are mostly hobbyist. same goes for cartooning ect..
Great insight Andy. You motivated me to do a little app to track my improvement per language, were I will put a tracker time of study, a reminder of revisions that I need to take, specify what I've been studying, and what I've already learned. It will be able to record my tutorials, repositories, so when I needed, I will be able to find quickly all my projects, lessons, small wins and how my self-taught is working for me. I think that this app can do an automatic resume as I grow, so it will be easier by clicking a link and send it to job applications. It will be open source, of course, so maybe it will help others self-taughters. What you think?
can confirm. I learned Web development in about 3 months, and back then I was told I am ready. but in this field you should always push yourself. Do things you never did before, look at new framework study different databases etc. just give yourself new cool things to try
Really great advice I read regarding this is to stop thinking of yourself as somebody who is "dabbling in code" or "trying to break into a dev role". No. Starting from now, you are a developer. A very inexperienced developer, yes, but a developer nonetheless, and that means you're not half-assing anything. You're getting better at each aspect of your craft every day and with every project, whether it's writing good code, learning new concepts, languages, and frameworks, or becoming better at technologies that professionals use (git, Docker, etc). And since you are a developer and you need a job, that means you're getting out there and trying to find roles that fit your experience level. I think there's something to be said for adopting the mindset needed to become better at something. It's like the old saying of "Dress for the job you want, not the one you have".
You're right. Nobody is ever ready, because the landscape changes all the time. I learned python when it was 2.0. Today it's completely different beast. It will be always like this.
Great advice. For the most part, these tips could be applied to literally any large task or job in life, definitely not just coding. Set goals, form a plan, follow the plan, track progress, repeat. Excellent video!
Lol I know a friend who has the knowledge of almost all the places of online resources to learn, but he barely learned anything. He tries a bit of some and gives up, then repeat with other topics. Told him that he gotta focus on one thing at a time and actually get it done.
While not a self-taught programmer, I certainly agree with the ready v. not-ready when applying to jobs. You just need to be able to program and have the basics, then you can apply for jobs. That is it. While it's nice to know a lot of frameworks, worked on tons of projects, having an online presence (github, linkedin etc.) it's not really necessary to get hired. As long as you are confident that you can show some skills, I would think you're good to go. It may be a great portfolio if you don't have a degree to verify for you.
This is the first time I have liked a video on RUclips. Just like me a few years ago. It is a pain going through this. It’s just like building an app without planning. 🥱 Very frustrating, you always find yourself where you started. Most beginners think everything about programming is code. This is the best and first advise you you need as a self taught programmer, HANDS DOWN.
Hey Andy, I've recently started learning Java/J2EE (I'm completely new to programming, but got solid math from an engineering masters degree). I signed up for a 400 hours course over this coming summer (3months) I'd love to get your comments on its contents such as : Do you think this is a good approach to Java for beginners ? Does this cover the basics of Java ? If not, what would you add ? Would you consider someone "employable" after 400 hours over 3 months of Java ? What topics would you add to this list to complete it ? Would you cover those topics before or after this course ? Course is starting July 1st im gonna try and swallow as much as I can from "Head First Java 2nd Ed." for the next 2 weeks. (Would you recommend another book/source for the coming 2 weeks of June ?) Heres the content of the course : (I'm translating this from french so you might have to fill in the blanks...) ***** Algorithmic UML - Analysys and conception SQL HTML 5 and CSS 3 JavaScript and JQuerry Java - Fondamentals and development JavaSE Java - SVN, MAVEN Hibernate Spring 5 Framework Java EE Java XML Java EE - Web Development JSF2 - Java Server Faces Angular 2 to 7 Scrum Master PSM1 ***** What do you think of this ? It's been amazing to watch your videos and you've played a huge part in raising my motivation higher than it already was! Keep up the great work!! Cheers
Thanks for your really helpful tips! Really appreciate it. I can relate myself with the situations you talked about. Gonna follow your suggestion. Thanks again.
The interesting things is, I tracked my sleep, milestone, achievement etc just because I feel like I need to do it Seems like somekind of thinking singularity
Simple Plan ... current resources.. Freecodecamp, You don't know js series, Complete web dev Zero To Master on Udemy.... So what is my problem? Play around too much!!!
Thanks for the advices Andy. I'm currently self-teaching for 1 month and one of the struggles for me was going to blogs and getting distracted. Great advice, straight to the point. I've just subscribed and I'm digging your content. Great work!
Thanks very much Andy. I started Programming three months ago. I have had three clients so far. But recently I have been lazy, scared, not able to code at the time I scheduled. I think tracking my time or sleep hours is not the issue. Really don't know..
Hey brother how do i know that the technology or language wont disappeare soon? How to choose right technology and language which wont disappeare soon or will be stable for decades?
1. Start off with visual studio and c# its gives you a more visual perspective of what's going in instead of starting with javascript where you have to create the Ui by scratch. 2. Stick with one programming language , most are similar just have to learn the syntax , I like to compare programming languages to the different forms of the English language as they are different in some parts but overall the same. Also when you learn new things apply then by making a mini program nothing to big. 3. As you progress a long start learning a backend language, how to setup a server , routes, where to host your website. Frameworks like bootstrap are easy to pick up just read the documentation on how to use it . Udemy is your friend. 4. When applying to jobs and you see they want you to know all these technologies apply anyway. I seen a position for web developer at my job and I dont know half the shit they put on the job description.
Started programming about 5 Years ago. Just for small projects i wanted to realize then stopped again. 7 Month ago i bought a Raspberry and started with Bash scripting. Mostly by try and error and with some help in some forums. About 5 Month ago i wanted to learn some programming on a more professional base and bought a python beginners book and a little more advanced one. 1k Pages and loads of small scripts later i made a aptitude test for programmers and got a pretty high score. i started to apply for a apprenticeship for adults and got a job within the first 10 tries which also surprised me myself. But my interest in computers is much older. Since i was a small child i was amazed about this "magic box" and i'm a very curious nature which helps to learn ^^. It's my passion. But it needs a lot of discipline and exercise so i can totaly agree with your video.
I'm at a crossroads between web dev and software dev. I initially set out to acquire all of the tools needed to be a front end developer in 2019 (was a graphic designer), but am enjoying the ins, and outs of Javascript, and Python way more than putzing with HTML, and CSS. What do you think the pros, and cons are for pursuing a software portfolio as opposed to a web portfolio? I always thought the true software developer jobs were for people with comp sci degrees.
This was very useful, Andy. You said not to worry about creating the wrong road map or learning plan, but I have one question: would you be able to give some examples of road maps and the 4 to 10 projects they should include? It will help us, self-learners, a lot not because we'd copy them but because we'd get an idea of what's a realistic project (vs. a too easy one or too complex one) when we're first getting started. Thank you for this video. It was well done, as usual. 😊
My long term goal is to become a Self Taught Android Developer, Based on my research my road map is:- 1. C 2. C++ 3. My SQL 4. Data Structures & Algorithms with C++ & Competitive Programming (Last goal of 2019) 5. Java (First goal of 2020) 6. Android Studio 7.Flutter 8. Design Patterns 9. Applying for Jobs in the end of 2020. In India if you want to get employed in Google,Microsoft,Amazon these American Companies, You need strong Data Structures & Algorithms knowledge. I am currently at the end of C. How this road map looks to you Andy I need your advice also. It will be really appreciated and helpful for me.
I don't know if Andy is going to see your comment or say anything, but you can have my free advice in the meantime :) Design Patterns is useful to know, as it provides a language for describing how software is organized. But I'm not sure having it as its own topic is best. With experience writing code for other things, you start to notice certain general problems pop up, and after individually hacked-up solutions you realize there's a good general approach. Refer to that in the future. You learn these patterns by creating them along the way. At some point later you might sit and read an article or web site with a comprehensive list of patterns for the area of software and system you work on, and find it more understandable. In my experience (30+ years) Design pattern don't get used that much, and then only a few certain ones. Factory, Singleton in my last C++ job, was about it. (And not Factory Factories and beyond, just simple Factories.) Flutter is a good choice, after becoming fluent in the relevant languages. I was at a front end Meetup recently, and heard that Flutter is hot, and not just in a this-year fad kind of way. Also, the Dart language is widely liked. I hope browser will support it directly (maybe they do? I haven't been keeping up.) If you're going to be strong in C++ then be sure to know all (or most of) the new features in C++14. C++17, if you can, though it's going to take a few years more for it to be everywhere. Know the STL data structures and stuff, and pick some of the more widely used parts of Boost. Know that some stuff in STL and Boost have been folded into C++14/17, but you are almost certain to be working on older C++ source. A deadline for when to start applying for jobs? Bah, too much work. Just marry into a wealthy family. (I'm still working on that myself.)
@@DrunkenUFOPilot I really appreciate your advice Daren, I din't knew that I should not learn Design Patterns directly I like your approach of learning DP I also think its the correct approach to learn Design patters. I didn't knew that C++ was this much vast, I want to work as a Mobile App Developer in future, So is it fine to learn intermediate level C++ only not the STL kind of stuff you said and then move on with my Mobile App Development Journey? btw thanks for your best advice from your great experience.
Here's a question 🙋 I've always dived in head first and "learned on the job".. But.. That approach cost me a lot of sleep and mental stress 🙄 What I found is that you need the basics like... Loops.. Oop... SQL.. SGML Family Syntax (XML, HTML), than you can scale easier and switch languages The question : why does no one talk about workout/stretching .. It's so important to give you're body (especially back, legs, neck) and posture attention... It literally will bite you in the back 😏 After all those hours in a position
I would say when learning programming, just start with just one language and as you go, start learning the differences in syntax with other languages you want to learn.
I was actually struggling with java, i was stuck in the tutorial and book loop, but now my road map is much clear because of you, i have already applied tips you have mentioned. Thank you
Thanks a lot, my advice would be for self-teachers to read a lot of books. books direct you in a disciplined manner and you get to learn the language you're after, quite quite deep. And another advice, pick one main Language you're gling to be a master at, then learn many others as well and don't just stop at one language
Seems this video doesn't actually apply to me, thought it was a vid on self-taught general mistakes, but its a beginner feet to the fire rant/explanation. Nice tips, can see it being handy for those that are aiming to become engineers tho.
Are you making any of these mistakes? Does this help clarify anything for you?
Didn't have a certain time
Thank you so much, i will never dabble again!
My long term goal is to become a Self Taught Android Developer, Based on my research my road map is:-
1. C
2. C++
3. My SQL
4. Data Structures & Algorithms with C++ & Competitive Programming (Last goal of 2019)
5. Java (First goal of 2020)
6. Android Studio
7.Flutter
8. Design Patterns
9. Applying for Jobs in the end of 2020.
In India if you want to get employed in Google,Microsoft,Amazon these American Companies, You need strong Data Structures & Algorithms knowledge.
I am currently at the end of C. How this road map looks to you Andy I need your advice also. It will be really appreciated and helpful for me.
@@RobinSingh-ms3zt best of luck, my path is somewhat similar
The last one opens my eyes rly. Helped a lot.. but i have a question, when you feel down or unmotivated sometimes and you don't have the energy to learn, how you deal with that ?
So I have a degree in computer science and 25+ years in the industry, and this would have been good advice for me too.
Not at all what I was expecting from the title. I was hoping to hear about some general programming strategies that self-taught programmers are most prone to.
Instead, it's general advice about career-building as a programmer - 99% of which applies to any long-term goal in life.
The content is good; the title is just somewhat misleading.
Fred
I thought the same! I have a CS degree but consider myself largely self taught. I was curious to see what type of mistakes I've been making without knowing it. 😝
Same here. Title is misleading.
@@drakon32 Yeah. I wouldn't say it was wrong, but it is misleading.
And even then, I don't believe that was intentional. He really *is* talking about mistakes made by programmers - just not programming mistakes.
Fred
@@ffggddss : You read my mind!! I was expecting examples of major mistakes that self-taught people make when doing actual programming. I've had formal college courses in COBOL, Pascal, C (with a dash of C++ included), and then several brief "community education" courses in BASIC, and I still feel like I've barely scratched the surface of learning programming.
A video on self-taught anti-patterns would be good. A lot of bootcamp graduates also fall victim to this, the moment they move out of the tech stack they were taught in, they start to crumble.
Hey Andy, I'm a self taught developer myself and I just wanted to add on to your points about how those struggling should go about their learning.
I started back when I was 14 and what drove me was mainly the idea of having fun, there is so much that can be done on software development that is quick, low cost and super fun and interesting. I don't think that learning through strict deadlines or plans applies to everyone and I just wanted to share that.
I hope that you could maybe explore more of the fun stuff of programming as well, such as that kid on RUclips that made a robot scream everytime it hits something!
GLHF and keep doing what you're doing, it's great!
Thanks for sharing Christopher. I’m with you on programming being fun and it’s one of many reasons why I was drawn to the field.
Andy, when it comes to the advice you're giving, I believe it's being given from the heart and from experience, thus it's not a rant, as usual, good points to pass along, good tactics to adopt, and always inspirational.
Here's a tip: set up a trello board for each project with at least backlog, doing and done sections, you can add ready for test, testing and ready to be released too if you're ambitious
Aren't All developers, really, self taught ... you read documentation, books, etc ... AND get up to date with the state of the "craft". I guess theoretical stuff must be studied in university but the actual skill involves creativity and reasoning that, yes it can be taught to some extent, but in the end it is personal
At the end of the day, you have to do the work yourself, that's true. Being selftaught just means that the workflow and the access to information/teachers/equipment may differ. And you may get paid less without a diploma.
If it can’t be taught then how can you self-teach it? I agree, much of what makes a great programmer is genetic. It can’t be taught. You can teach a lot of people to be programmers but not necessarily great.
Hello Andy..have been watching your videos.. it's really inspiring... I started learning how to program almost 3 years ago..started with the hardest c and c++, after OOP topic in c++ the remaining topics where abstract and frustrating so I picked up JavaScript then python then R. With no clear direction I just wandered and eventually gave up on coding. So i got a Job in the Telecoms industry as an Engineer. Everyday I woke up feeling like a looser because I spent so much energy, time and money in learning programming..Came across your videos recently and I understood my problem, I felt I should know every concept before I applied for a Job I was wrong. Following some of your advise, I have designed a timeline for myself picked up a c#, created several portfolio and set deadlines for learning basic concepts. just recently I applied for a Junior developer role in a start up firm and have been interviewed. Am so proud of my commitments and how far have gone in a little time...thanks Andy
Update after 1 year?
@@zephyr_ i hope he answeres you soon
I'm 2 weeks into my journey and your videos fire me up man!
Thanks for the consistent insight and motivation :)
Glad to help you on your journey! Good luck 😊
T3mpy
I am 4 years into my personal journey and I still don't have a coding job :(
I just wanted to let you know and make sure you have your expectations low...
Coding takes years, if somebody tels you they did it in 3 months, they are lying!!!
I wish yall understood how much thought he puts into his program. I'm in his program and the amount of knowledge I have learned from the start until now has insane.
Great lesson. I'm incredibly guilty of spending way too much time on the "passive" vs "active". Glad to have you point that out. It's pretty easy to fool yourself that you're being productive, when really you're not.
Yes! It's easy to confuse being busy with being productive. At a certain point you have to move from "learning" to "doing" and it's much easier to evaluate if you know exactly how much time you're spending doing either. Glad to hear it was helpful!
That first one is good. 20 years ago, I applied for a job before I had really learned to code. Got hired because I spelled “SQL” correctly. Still, to this day, trying to learn to code. 😄
Just beautiful. So well put! Thanks man. I started experiencing some doubts for the first time just two days ago. I was really frightened by how my brain went "well maybe programming is not your thing after all". But hell no! I'm gonna get good and be balling someday soon. I promise that to myself! Thanks man
Glad to hear Dan!
Setting a hard date is a really good point. For a long time I knew I wanted to be a game programmer. So I heard C was the language to learn (it was the PS1 times) so I bought a big book to learn C and on my summer break after my highschool, I decided that by the end of the first month of the summer I would have finished the book. So after I done a couple exercises, I got a good idea of how long it would take me so I done some Math and it meant I had to spend every morning of monday to friday on this (I was living at my parents house on a summer break, so I had time on my hands).
So I did that and not only did it start me on my path as programmer (I've been a game programmer for 14 years now) but it was also very motivating and self rewarding to know that, I can do this. Not long after, I've been told things were switching to C++ so I found a website to learn C++ with gaming examples and my experience with the book really helped me set another goal for those tutorials too.
Also at first I saw programming as a tool to make game, but now I also like programming in general, made my own budget program that I've been using for years, also do some AI contests. Programming is a blast.
@@BikiniGyat Hi ! I initially learned from a book and a site that is long gone around 18 years ago, so my references are a bit outdated. I mentioned AI contests, the platform I'm talking about is codingame.com it also have some "puzzles" and visual challenges and "bot" programming, so it's a really fun way to pratice coding, but not a place to learn from scrach. One site I heard was good for beginners was codecademy.com, so you can learn the basics on there and pratice with fun puzzles on codingame. After that I'd say try out Unreal Engine, very popular game engine and the code is in C++. Since it's popular there are a s*** ton of tutorials on the internet. I'd suggest investing a couple of bucks on a Unreal Udemy course, they pretty much always go in sale for like 95% from time to time and they are pretty long and gives you a good start to then search for specific things you want to do.
Good luck !
The deadline comment was a stake through my heart. Well-done.
Awesome! Yeah it can be a huge problem when you don’t have a concrete date set in mind.
Have to say, you really have the viewpoint of someone who's been there, done that. Literally on point with the pointers you have noticed in learners. I'm not gonna be the guy saying programming is for smart people or anything like that but it's clear as a bright sky that you're smart and you have solid logic in your rants and advice. Truly a great mentor and inspiration and best of all, your ideas and advice can be applied to almost anything, not just programming.
Actually, all of your comments are relevant to all kinds of self improvement efforts for competitive purposes.
Definitely - for a start, it applies to learning and using natural languages as well.
Love this advice. I feel that I lack the discipline to commit to dates for personal projects, I feel that I do better in classroom settings. Going to go to grad school in the fall for CS but I'm already 26. Probably a complete waste of money but, to be self sufficient on my own is not easy. Act Small think big. Thanks Andy.
Listen, you are always already something (insert age) . it's never to late to pick up a new skill. best of luck!
More than 30 years ago I was a hardware design engineer, self-taught, no degree. My boss needed a production test program for our product, fully automated. After 6 people hired, he had a program that tended to crash the PC randomly. He turned to me and said "I finally accept what you have been saying, if you want it done, do it yourself, so, fix that program. You have two weeks." The program was written in C, and I had never seen C before. I knew Basic and assembly programming, self taught. He gave me the systems, and a couple of books to help. After a day and a half, I asked him "I am done, can I take the rest of the two weeks off?" Of course, the answer was "no", and I was given more programming tasks. I determined that the code I was given was "spaghetti code", and I went to work fixing it. In the long run, I was responsible to a large degree for the reputation for a quality product that we had. And I have been creating automated test programs, for production and for verification (two very different thing) ever since. I am currently the backbone of the HW and FW verification team for yet another company.
The BIGGEST thing you need, if you want to be a non-degreed programmer, is completed projects under your belt. Always keep a copy of any code you develop, so you don't have to re-invent. But to get a job without a degree you need to be able to show that you can perform, that you can accomplish something. The best way to do that is to deliver a project, for a company or for yourself. What the project is actually is unimportant, as long as it highlights the skills you want to sell. I am a test engineer, and my ability to get the PC to communicate with hardware under test via RS232 or Telnet helps a lot. (Derivatives of RS232 like RS422 or RS485 or whatever are easy once you understand RS232.)
The downside to my being self-taught: I am a terrible ball hog.. My code is MY code. I do not share, except to give a co-worker a copy of my source and help him to understand it, and after that he is on his own. The upside is that I do my coding MY way, and I strive to make it effective. Engineers with degrees sometimes deride my programs, even deride me for having no degree, but I have also dethroned them, embarrassed them, highlighted serious bugs in the products they were so proud of. I once outperformed a Stanford PhD and his group of three engineers, and I was doing it as a side task while I developed production tests. It comes down to attitude. Do you want to kick butt or not? I have been hated by slackers, and loved by engineers who realized I was helping them produce a superior product by finding the bugs in what they had done.
But the key thing is to demonstrate your ability. A degree is a promise of ability that is sometimes not realized. Demonstrated ability wins over degrees without demonstrated ability. Choose a project, work it through, put it on your resume.
Fling Monkey This is so true. Thank you for sharing.
What kind of projects should a non-degreed newbie dev have on their portfolio?
@@liquerinfrnt That really depends on what kind of programming you want to do for a job. Learning to program is like learning to read, you get the basic skill and then apply it to what you are REALLY interested in. What do you want to read about? What do you want to program? Do you want to program web interfaces? So you want to hack in Linux? Do you want to do what I do and create automated test programs to break the things my company makes so that they can be improved? Do you want to make cool gadgets and toys? The world is wide open, where do you want to go? How do you see selling your programming skills? You should pick a project that highlights and develops those skills.
Windows is popular, there are several programming environments there. Mac is also popular. Smart phone apps can sell. Linux is for people who want to control the world, and it has several languages that come with it. Small processor boards like Arduino have a lot of potential.
Key thing to do: Don't just learn to program, develop multiple skills and combine them into a bigger project. Can you do circuit design? Build boards and program them. I play with Windows (LabWindows/CVI) and Arduino and some electronics and woodworking. You probably have skills you don't even know you have, what do you have to bring to the party?
Wait untill you have to work in a team together on a single product. You will probably fail hard. Because your a solo person. Your code is then probably full with bad practises because you never verified your code by other programmers who can also give you advice. I know these kind of people like you. They are great solo. But the company gets too dependent on you, and the code is mostly badly structured because it's all in your head and someone else can't understand shit of your code. You act like your way is good, yes maybe in a small little company where the projects are small and they company is naive with code base and future maintenance by other people. For example they risk this shit on one person... YOU. This is from a company perspective very bad.(What if you get sick, or die?) I always learn from the critics of my coworker or i teach them. Depends what kind of persons they are. People like you, it's really hard in a team. Then persons like you blame the team, because You yourself are not a teamplayer. You only excel alone, so you can't do large projects. In your comment you say downside is this.. and directly try to reverse the downside with something good. By the way, programming is not that hard... what is harder is to understand the product your making. Coding is just a screwdriver or a saw. A tool.
@@HermanWillems I agree that programming is not hard, and that it is just a tool. I also agree that I do not team well.
I worked at a company called Telebit, they did the first commercial dial up modems that went faster than 2400 bps. I was there over seven years. I created all of the production test programs for that company up until I left: Functional Test, Burn-in test, ORT test, you name it. After I left them I eventually ended up at Cisco Systems, still doing the "cowboy" thing. Cisco bought what was left of Telebit, and I met the guy that had inherited all my code. He was pleased to meet me, he had learned to code by maintaining my tests, and he found the code VERY easy to understand, even though it was C running under MSDOS.
At my current company I developed a communications tool for the system communications backbone before anyone knew what I was doing (my boss started two weeks after I did and took a couple of months to come up to speed.) My tool is now used in MANY test fixtures and by several engineers as a basis for their fixtures.
I am not worried about someday being forced to team with others on code, after over 30 years of doing this I am now 64 and will be retiring in the not too distant future. I think my boss is worried that it may be sooner rather than later.
Certainly my style of coding does not work for all projects, but for getting started on your own without college debt, it worked for me. :)
The best thing that has helped me while teaching myself is working on something I need/want. By knowing what I want it to do I find resources geared to that goal and discover even more on the way. The one thing I could add is, "the resources are there" anyone that says otherwise is using dialup and they can't be trusted.
Now I'm developing a control/monitoring platform for container farms and the amount of things I have learned along the way is mind blowing compared to things I learned in a professor led course. Sometime it's a lot and other times I want more.
This is exactly how I learned. Sure I took a programming 101 class in 2008, but then it was basically all gone because I didn't write a single line of code until 2011.
I also browse / quickwatch (1.5-2x speed) courses on pluralsight and udemy. This strategy ensures that I will know where to quickly find the answer when I run into problem(s).
Thank you for this excellent advice. It can be daunting when you see just how much there is you could/should be studying.
Great Video. Some of those points you touched on happened to me. Set goals, set time and do it.
Thanks Lance!
I found this video just when I decided to actually pay attention to a programming-related video. For 3 years, I've been watching tutorials, reading, trying out those interactive learning websites, but still, I feel like a beginner cause I made/making the mistakes you addressed in this video. I know HTML, CSS, Javascript and some javascript frameworks, still if someone invites me for an interview, I wouldn't be able to answer simple HTML questions. These 3 years, I never had a roadmap, no deadlines, I just coded when I felt like it, went thru courses, burned out, took 6-7 months break, came back, skipped the basic easy parts cause I felt like I already mastered them and felt depressed right after something complicated came. Well, hopefully I will be able to correct my mistakes.
2 big points that I want to stress that you already said:
1) Set a deadline. I cannot stress how important that is. Having a fire or your ass on the line is a great motivator. Sink or swim. When my job was ending and I HAD TO learn something in order to get that next job was PARAMOUNT. There was no "well, I'll learn a little today, play some games, then learn some stuff this weekend after a few rounds of whatever." NO! It was "I'VE GOT TO LEARN X, Y, and Z ASAP YESTERDAY SO I CAN GET THAT JOB before this one ends. Otherwise I won't be able to pay my bills. People are depending on meeeee!!!!" So having that same motivation as a deadline will force you to learn.
2) Don't get sidetracked. While learning something new it is so easy to get side tracked on some enhacements to some code or feature and not learning what you are supposed to learn because it is more interesting than the boring lesson you have to do instead of what you want to do. Take a break, and get back to it. Do some lesson exercises and make a real-world app to practice what you've learned.
The biggest problem that I had working with people who were only self-taught is that they didn't understand the basics like the Complexity of Algorithms, Finite Automata, language grammers and parsers, cryptography etc. This makes it impossible to have a sensible discussion with them about why some idea or other is going to lead to trouble. They would listen to a professor at university but they sure as heck din't want to get lectured by an annoying know-it-all colleague at work (like me) so they refused to see the importance of e.g. not using an N^2 algorithm. My favorite example was the guy who claimed to have speeded up the MD5 checksum generator by 1000x. Management was delighted and there were pats on the back and it was impossible for me to say how unlikely that was to be possible until a week later when everyone noticed that the output of the function was the same no matter what you put in.
Any resources that you recommend in topics you mentioned , like Complexity of Algorithms, Finite Automata etc .
It would be really helpful
@@SukeerthM_1 There is so much on the internet. Complexity of Algorithms is perhaps the most generally useful concept and this overview looks ok: discrete.gr/complexity/. You also need to look into the complexity of inserting new items into various data structures like lists, hash tables, heaps, balanced trees etc.
Solid advice. If you are that good at keeping track of your time you will succeed in whatever you set your mind to. And if you are not, well now you know it, go work it out!
Hey man thanks for the advice on creating a road map. You really make it seem manageable for us who get super intimidated by the road ahead.
I'm so glad I found your videos. I was seriously considering doing a coding boot camp, but plunking down the $3,000 deposit plus taking 4 or more months off from work is just really unrealistic for me right now. I wasn't even sure if I could actually get a job if I was self taught, but you've given me the insight and inspiration to know that it's totally possible. Thank you!
I'm guilty of second guessing myself. I originally started with Python, but decided to Switch to web development. I really enjoyed Python, but I was afraid most Python related fields would be very difficult to get in without a degree. Now, I'm focusing on HTML+CSS+Javascript. While I'm enjoying it as well, I find myself understanding the theory, I have a very difficult applying what I've learned. I have next to no creative or design skills,so, it's hard for me create something that doesn't look like hot garbage.
You're not alone bro but keep push through you'll get it
Learn php & MySQL also. Once you get that hot garbage going learn to audit performance.
how do you set a date when you don't know how long it will take to learn things? a tutorial might say it takes 20 hours but for every hour of tutorial you need an additional hour to write the code because you need to watch-pause-type, watch-pause-type, etc... sometimes I run into some incompatible code in a tutorial and I have to spend a couple hours researching on the internet how to fix the problem which is faster than posting a question in the tutorial.
Getting a mentor is the advice i needed. Thanks Andy.
yeah, i could use mentor too, but where do you find one?
Thanks Andy. I'll start to track how many hours per week I'm studying new subjects.
Awesome. Good luck!
Im "ALL-IN" 100%. Too me..its the most important task daily, sit down and practice coding. I watch your videos religiously and apply all of your suggestions without modification. Thank you for these videos! I purchased a dry-erasure board and have my "Plan of Success" written out at the top!
Totally relatable ,
previously i didn't track my days ... which made it harder to notice my weaknesses and you keep repeating the same mistakes. Tracking sleep and mood helps
-- i will try the roadmap today cause that looks like a good advice
8:30 Gosh that was me. I focused and learned how to code HTML and CSS and even Javascript opting to learn how to code in pure JS instead of using libraries first. I started using Bootstrap and learning how to make mobile friendly sites, started to use jQuery. Then I wanted to expand into forms, databases and users and that's when I hit the blog posts with a thousand recommendations. I did write a form handler for an order form that saved customer contact info, allowed customers to select flavor size and quantity of various "treats" and calculated cost, tax and shipping before emailing it to an email address for the order to be processed. Not the best way to do it but something I'm still proud of. After that I was like okay I'll just do a little research, see what's wanted right now and learn that one thing first. The thing that really ended up frustrating me was just setting up a good development/testing environment. I was split in too many directions trying to get things running smoothly, though admittedly I learned a lot about tracking down errors and researching solutions. Now, after taking a year break, I'm going back through dusting off the cobwebs on the HTML, CSS, and JS before trying again with expanding my knowledge and skillset.
Don’t design software for pay unless you have some experience or somebody that knows what they are doing who at least designs the shape of the project and code. Syntax of a computer language is the least important thing you have to learn. Knowing and dealing with the people and problems of a business are essential to successfully designing code that can really solve company problems. If you have a 4 year honors degree in CS, you are not qualified to design software by yourself. You have no idea how little you know. Somebody that knows how to read and write shouldn’t think they can write a book that anybody would actually buy.
Regardless of what you think you know, you need supervision for years before you (or the business that is paying you) should trust that you can design a useful project. Maintenance tasks, 20 line throw away code, minor adjustments to a user interface maybe but please do us all a favor and don’t design code for pay without knowing what you are doing. You will not only hurt the reputation of yourself, cost your employer money but will give all the rest of us a bad name.
PS The language you use or the syntax of the framework you use is trivial compared to what you need to know to make something useful.
If somebody “teaches” you a computer language, it is the equivalent of graduating from grade 2. I can learn a new computer language (enough to program in it) in less than 1 hour. So what! What does it take for a person to get a job as a professional violin player? Natural born talent and 10-15 years of learning and hard work and making software is at least as hard. Anyone that says that programming is easy is conning you.
Thanks mahn..... I really needed that
I started part time and eased my way into full time. That way I didn't have to just quit my other job and free fall for a while. Once I got to the point I was actually being sought out for work, and not just seeking / begging for jobs, I was ready to go all in.
Good point on 'thinking big and acting small'.
4 weeks into learning how to automate deployment but I really just want to work on development.
Easy to feel like I'm falling behind until I remember I've been building an important skill set - just not the one I'm excited about :/
Great advice. I get into rabbit holes sometimes and setting a deadline is a great way to go.
As a self taught programmer who's trying to launch himself and psychology graduate, I have to say your tips are RIGHT on point, man! I subbed!
I LOVEEE this video!!! Im currently teaching myself to program - previously involved in personal training and behavior change. Thanks for sharing with people that there is SO much more to learning than JUST the aspects of learning (while those are important).
This video was very well put together and not too drawn out. I just saw the title during a mental break Im taking. Anyways, i rarely comment and just had to tell ya... great job!
Thanks Jennie! Totally agree. 😊
Bonus tips from a guy with two years working experience:
1: Try to learn some sort of collaboration tool (mostly Git). Programming is barely a solo job, you work in a team.
2: Find users to do an acceptance test of your projects. This will not only give you experience with users, but you'll receive valuable feedback to make your shiny portfolio projects even shinier.
3: Don't neglect physical movement. Programming is mostly sitting and sometimes grabbing coffee. I go to gym about 3 days a week. Gives your mind a good boost to stay in super saiyan development mode.
4: Users are the worst people.
Number 4 lol
Great stuff. Thanks for sharing!
A guy speaks about a topic in a friendly and chill manner --- RANT! :D
Good advice btw, thank you!
Heh heh..Im not good at ranting. Glad it was helpful!
This video is a huge deal. Everyone trying to do this self taught should watch this video.
Nice. I thought from the title you were going to talk about programming mistakes. You didn't, you were speaking about career development. I like that.
I have completed my professional career, and am now using the net to teach me modern things like React for recreational programming challenges (mysql database, flask middleware, react front-end) such as a database to manage my putting together a local association magazine.
During my 20-ish years of professional programming (1980-2000), the technology has changed hugely. The need to develop your career is just the same. On the latter, one thing that has changed is access to information. In my early days, the information came in manuals and training courses, such as the VAX-VMS manual set, that took 6' of shelf space in attractive orange binders, and things like Yourdon and Jackson methodologies.
During that time I also recruited (interviewed) hundreds of aspiring software engineers (I descry the term programmer, because that is just a small part of the job). The key skill I was looking for was the ability to abstract - i.e. to focus on the solution in various degrees of detail, and to forget about the detail of other parts while focusing on the detail of the part being worked on. That being what I was looking for, how would an aspiring software engineer recognize this in themselves? That is the rub. Somebody who doesn't understand abstraction can't tell when they are missing it.
Sorry for the waffle. Random thoughts are the perrogative of the retired. :0)
I'm a self-taught Android developer. While helpful, I disagree with this video because I feel it unnecessarily complicates the process. Setting a date: How does one know when they're competent enough to be paid to code? Tracking sleep: good advice but that's not specific to learning to code.
I think the single most important thing is to make apps that YOU use.
After completing the sample projects from the books I used to learn Android, one of my first and most important projects was a messenger app. I still use it to this day.
The daily use of my own app, to communicate no less (where reliability is critical), was a strong driving force in improving my skills and learning new techniques. It forced me to learn Firebase, version control, UX and other stuff that wasn't in the books.
When my users (friends and family) started asking me to take the app out of closed beta so they could invite their circle, that's when I realized I was competent enough to freelance.
Of course, one app doesn't make a portfolio. That's when you explore other categories, and once again, make an app that YOU would use.
My first projects (and their categories) were, in no particular order:
- An app that would let me view deleted Instagram & WhatsApp messages by catching and saving their notifications. It also saves my notifications to Firebase which I can then view from any device on a simple web UI. I'll branch this into a parental-monitoring app in the future. (Utility)
- The aforementioned messenger app. (Communication)
- A simple appointment-booking app for my mobile computer repair business. (Business)
- A simple flashcard-style math & vocabulary game that I can update based on my son's academic needs. (Game/education)
I'm currently self-studying iOS so I can publish those same apps for that ecosystem. I started freelancing a few months ago and I've picked up 3 clients who want their own social network and are paying me 5 figures EACH to do so, and that's just Android!
TLDR: Make stuff you want to use first and foremost. That's what makes app development fun and not a chore. When the task is fun, learning is easy.
I also forgot, I made a cloud note-taking app similar to Google Keep.
The point is, make an app you'd use even if one like it already exists. It's very rewarding and encouraging to use something you made with your own hands even if another app does it better.
I recommend a cloud note-taking app for everyone since it's relatively simple and you won't care if you're the only one using it.
thanks,this advice changed my mindset. i have many goals in life(i write them down) but i forgot on programming goals..
we can apply this tricks in real world.
thanks again.
Well what I see/hear often is something along the lines of "I want to learn programming. With what language/IDE should I start/is best?"
My answer to that is always NONE. Learn the concepts first, take a sheet of paper and write your pseudocode by hand, then 'execute' it in your head step by step to see if it works as intended (I used a similar approach to understand how A* works). If you know that learning the language becomes just learning the syntax (maybe with some quirks the language has). You first need to know how to use a hammer before you can decide which to use for what. The language is the hammer of software developers.
Download Grindstone time tracking on your computer so you can track your study time, and project time. Helped me quantify how long projects took, how long I was passive studying. It's a game changer if you need something to keep you accountable.
I'm a self taught programmer and now manage a programming team and an IT department in a very large company. I started with C, then C++, C# and now at least a dozen others. Once you learn C every other language is just syntax and I find them easy to learn. Programming is logic. Breaking down a problem into a solution made up of many, many pieces. A lot of doors were closed because the lack of a degree, but I managed. I hire my team more on personality and what they are capable of knowing, not what they actually know right now. You either have an aptitude for this type of work or you don't. Going into this career is a commitment of constant learning of new technologies, which I actually enjoy.
Usually when I work on a project I imagine it very simple not that many features but after I get the base down I start making it more complex and it helps because you are not backed up in a corner thinking "Man how am I going to make all of this complex stuff" instead of just focusing on getting the base of the project down.
Advice I always give to people who tell me they want to get into programming. Find what you enjoy doing and run with that. If you like analyzing big data - then do that. If you like creating web applications - then do that. If you like setting up backends - then do that. Create a your own project you can be passionate about or find an open source project. This gives you hands on experience, will keep you better motivated, and will give you something you can talk about in the interview. Not all but most interviewers are passionate about programming and will tend to hire other devs who show they are passionate too. Knowledge is important but isn't the only thing - don't hyper focus on the little details.
Nice one Andy!!
Thanks Mario 😊
i don't think self taught programmers are looking for a job. Most of them are hobbyist and would like to code for themselves. He's thinking in terms of a job. Just people that draw are mostly hobbyist. same goes for cartooning ect..
Great insight Andy. You motivated me to do a little app to track my improvement per language, were I will put a tracker time of study, a reminder of revisions that I need to take, specify what I've been studying, and what I've already learned. It will be able to record my tutorials, repositories, so when I needed, I will be able to find quickly all my projects, lessons, small wins and how my self-taught is working for me. I think that this app can do an automatic resume as I grow, so it will be easier by clicking a link and send it to job applications. It will be open source, of course, so maybe it will help others self-taughters. What you think?
I don't know if I made myself clear, because my English it's a little bit rusted. I'm from Brazil btw
Thanks for this, I am currently pursuing a data science path and this is exactly what I needed to hear.
Dude, I need sources to study ds pls!
can confirm.
I learned Web development in about 3 months, and back then I was told I am ready. but in this field you should always push yourself. Do things you never did before, look at new framework study different databases etc. just give yourself new cool things to try
Really great advice I read regarding this is to stop thinking of yourself as somebody who is "dabbling in code" or "trying to break into a dev role". No. Starting from now, you are a developer. A very inexperienced developer, yes, but a developer nonetheless, and that means you're not half-assing anything. You're getting better at each aspect of your craft every day and with every project, whether it's writing good code, learning new concepts, languages, and frameworks, or becoming better at technologies that professionals use (git, Docker, etc). And since you are a developer and you need a job, that means you're getting out there and trying to find roles that fit your experience level.
I think there's something to be said for adopting the mindset needed to become better at something. It's like the old saying of "Dress for the job you want, not the one you have".
Yeah totally right I feel very annoyed with myself
Well spoken... This is enough to really help people out there
You're right. Nobody is ever ready, because the landscape changes all the time. I learned python when it was 2.0. Today it's completely different beast. It will be always like this.
I love Andy advocating the importance of sleep, i think it applies to all art and profession
Great advice. For the most part, these tips could be applied to literally any large task or job in life, definitely not just coding. Set goals, form a plan, follow the plan, track progress, repeat. Excellent video!
yeah, I'm not looking for a job, I'm wanting to build my own apps, for myself but I'm sure they'd be useful to others.
Lol I know a friend who has the knowledge of almost all the places of online resources to learn, but he barely learned anything. He tries a bit of some and gives up, then repeat with other topics.
Told him that he gotta focus on one thing at a time and actually get it done.
While not a self-taught programmer, I certainly agree with the ready v. not-ready when applying to jobs. You just need to be able to program and have the basics, then you can apply for jobs. That is it. While it's nice to know a lot of frameworks, worked on tons of projects, having an online presence (github, linkedin etc.) it's not really necessary to get hired. As long as you are confident that you can show some skills, I would think you're good to go. It may be a great portfolio if you don't have a degree to verify for you.
This is the first time I have liked a video on RUclips. Just like me a few years ago. It is a pain going through this. It’s just like building an app without planning. 🥱 Very frustrating, you always find yourself where you started. Most beginners think everything about programming is code. This is the best and first advise you you need as a self taught programmer, HANDS DOWN.
Hey Andy,
I've recently started learning Java/J2EE (I'm completely new to programming, but got solid math from an engineering masters degree).
I signed up for a 400 hours course over this coming summer (3months)
I'd love to get your comments on its contents such as :
Do you think this is a good approach to Java for beginners ?
Does this cover the basics of Java ? If not, what would you add ?
Would you consider someone "employable" after 400 hours over 3 months of Java ?
What topics would you add to this list to complete it ? Would you cover those topics before or after this course ?
Course is starting July 1st im gonna try and swallow as much as I can from "Head First Java 2nd Ed." for the next 2 weeks.
(Would you recommend another book/source for the coming 2 weeks of June ?)
Heres the content of the course :
(I'm translating this from french so you might have to fill in the blanks...)
*****
Algorithmic
UML - Analysys and conception
SQL
HTML 5 and CSS 3
JavaScript and JQuerry
Java - Fondamentals and development
JavaSE
Java - SVN, MAVEN
Hibernate
Spring 5 Framework
Java EE
Java XML
Java EE - Web Development
JSF2 - Java Server Faces
Angular 2 to 7
Scrum Master PSM1
*****
What do you think of this ?
It's been amazing to watch your videos and you've played a huge part in raising my motivation higher than it already was!
Keep up the great work!!
Cheers
Hello
Thanks for your really helpful tips! Really appreciate it. I can relate myself with the situations you talked about. Gonna follow your suggestion. Thanks again.
Glad I could help Syful. Cheers!
The interesting things is,
I tracked my sleep, milestone, achievement etc just because I feel like I need to do it
Seems like somekind of thinking singularity
Thanks for the great tips , exactly what I'm going through right now .
Simple Plan ... current resources.. Freecodecamp, You don't know js series, Complete web dev Zero To Master on Udemy.... So what is my problem? Play around too much!!!
Thank you. I needed to hear this. Thank you for sharing
Glad to help!
Thanks for the advices Andy. I'm currently self-teaching for 1 month and one of the struggles for me was going to blogs and getting distracted.
Great advice, straight to the point.
I've just subscribed and I'm digging your content.
Great work!
How you doing now
Thanks very much Andy. I started Programming three months ago. I have had three clients so far. But recently I have been lazy, scared, not able to code at the time I scheduled. I think tracking my time or sleep hours is not the issue. Really don't know..
Hey brother how do i know that the technology or language wont disappeare soon? How to choose right technology and language which wont disappeare soon or will be stable for decades?
Thank you Andy this really helps a lot.
You’re welcome...glad to help
This was great Andy. Helpful as usual.
1. Start off with visual studio and c# its gives you a more visual perspective of what's going in instead of starting with javascript where you have to create the Ui by scratch.
2. Stick with one programming language , most are similar just have to learn the syntax , I like to compare programming languages to the different forms of the English language as they are different in some parts but overall the same. Also when you learn new things apply then by making a mini program nothing to big.
3. As you progress a long start learning a backend language, how to setup a server , routes, where to host your website. Frameworks like bootstrap are easy to pick up just read the documentation on how to use it . Udemy is your friend.
4. When applying to jobs and you see they want you to know all these technologies apply anyway. I seen a position for web developer at my job and I dont know half the shit they put on the job description.
This is so helpful! I just lost my scholarship to an immersive program so this motivates me. Thanks
This is awesome, and important for most of us(self taught developers)
Thanks Andy, same I was stuck thinking too much rather than completing my mini projects.
Started programming about 5 Years ago. Just for small projects i wanted to realize then stopped again. 7 Month ago i bought a Raspberry and started with Bash scripting. Mostly by try and error and with some help in some forums. About 5 Month ago i wanted to learn some programming on a more professional base and bought a python beginners book and a little more advanced one. 1k Pages and loads of small scripts later i made a aptitude test for programmers and got a pretty high score. i started to apply for a apprenticeship for adults and got a job within the first 10 tries which also surprised me myself.
But my interest in computers is much older. Since i was a small child i was amazed about this "magic box" and i'm a very curious nature which helps to learn ^^. It's my passion. But it needs a lot of discipline and exercise so i can totaly agree with your video.
Another great video, thanks Andy.
I needed to hear that first tip. Thanks!
You’re welcome!
You are a good talker, it would be wonderful to watch tutorials from you
You are absolutely right and I really find this helpful. Thanks for the video.
I'm at a crossroads between web dev and software dev. I initially set out to acquire all of the tools needed to be a front end developer in 2019 (was a graphic designer), but am enjoying the ins, and outs of Javascript, and Python way more than putzing with HTML, and CSS. What do you think the pros, and cons are for pursuing a software portfolio as opposed to a web portfolio? I always thought the true software developer jobs were for people with comp sci degrees.
I would consider this as the advices. Thank you for you effort to putting these mistakes out there.
These are great points and tips! This could be applied to practically anything you are studying/working on!
This was very useful, Andy.
You said not to worry about creating the wrong road map or learning plan, but I have one question: would you be able to give some examples of road maps and the 4 to 10 projects they should include? It will help us, self-learners, a lot not because we'd copy them but because we'd get an idea of what's a realistic project (vs. a too easy one or too complex one) when we're first getting started.
Thank you for this video. It was well done, as usual. 😊
Thanks for the advice! I really appreciate it.
Great to hear!
My long term goal is to become a Self Taught Android Developer, Based on my research my road map is:-
1. C
2. C++
3. My SQL
4. Data Structures & Algorithms with C++ & Competitive Programming (Last goal of 2019)
5. Java (First goal of 2020)
6. Android Studio
7.Flutter
8. Design Patterns
9. Applying for Jobs in the end of 2020.
In India if you want to get employed in Google,Microsoft,Amazon these American Companies, You need strong Data Structures & Algorithms knowledge.
I am currently at the end of C. How this road map looks to you Andy I need your advice also. It will be really appreciated and helpful for me.
I don't know if Andy is going to see your comment or say anything, but you can have my free advice in the meantime :)
Design Patterns is useful to know, as it provides a language for describing how software is organized. But I'm not sure having it as its own topic is best. With experience writing code for other things, you start to notice certain general problems pop up, and after individually hacked-up solutions you realize there's a good general approach. Refer to that in the future. You learn these patterns by creating them along the way. At some point later you might sit and read an article or web site with a comprehensive list of patterns for the area of software and system you work on, and find it more understandable. In my experience (30+ years) Design pattern don't get used that much, and then only a few certain ones. Factory, Singleton in my last C++ job, was about it. (And not Factory Factories and beyond, just simple Factories.)
Flutter is a good choice, after becoming fluent in the relevant languages. I was at a front end Meetup recently, and heard that Flutter is hot, and not just in a this-year fad kind of way. Also, the Dart language is widely liked. I hope browser will support it directly (maybe they do? I haven't been keeping up.)
If you're going to be strong in C++ then be sure to know all (or most of) the new features in C++14. C++17, if you can, though it's going to take a few years more for it to be everywhere. Know the STL data structures and stuff, and pick some of the more widely used parts of Boost. Know that some stuff in STL and Boost have been folded into C++14/17, but you are almost certain to be working on older C++ source.
A deadline for when to start applying for jobs? Bah, too much work. Just marry into a wealthy family. (I'm still working on that myself.)
@@DrunkenUFOPilot I really appreciate your advice Daren, I din't knew that I should not learn Design Patterns directly I like your approach of learning DP I also think its the correct approach to learn Design patters.
I didn't knew that C++ was this much vast, I want to work as a Mobile App Developer in future, So is it fine to learn intermediate level C++ only not the STL kind of stuff you said and then move on with my Mobile App Development Journey? btw thanks for your best advice from your great experience.
Here's a question 🙋
I've always dived in head first and "learned on the job".. But.. That approach cost me a lot of sleep and mental stress 🙄
What I found is that you need the basics like... Loops.. Oop... SQL.. SGML Family Syntax (XML, HTML), than you can scale easier and switch languages
The question : why does no one talk about workout/stretching .. It's so important to give you're body (especially back, legs, neck) and posture attention... It literally will bite you in the back 😏
After all those hours in a position
I would say when learning programming, just start with just one language and as you go, start learning the differences in syntax with other languages you want to learn.
Sir, you gave me so much in these 10 minutes. Thanks. I realized my faults.
I was actually struggling with java, i was stuck in the tutorial and book loop, but now my road map is much clear because of you, i have already applied tips you have mentioned. Thank you
Great to hear Arshpreet! Keep up the good work.
This doesn't have nearly as much to do with "programming", as working towards any goal.
Thanks a lot, my advice would be for self-teachers to read a lot of books.
books direct you in a disciplined manner and you get to learn the language you're after, quite quite deep.
And another advice, pick one main Language you're gling to be a master at, then learn many others as well and don't just stop at one language
Seems this video doesn't actually apply to me, thought it was a vid on self-taught general mistakes, but its a beginner feet to the fire rant/explanation. Nice tips, can see it being handy for those that are aiming to become engineers tho.
I would recommend develping personal dev app as part of your portfolio :)