As a dev who has just 2 years of professional experience, and has lacked access to mentorship, this information is incredibly valuable. I can see many examples from my past two years where I have succeeded or failed in applying the principles outlined in this video, and I now have the expanded awareness to be more intentional about these things in the future. Thank you
It took me about 5 or 6 years as programmer to realize most of these things, so I think this video is not only for "new" developers. Great summary of what our profession is all about.
This is criminally underrated. I've written down everything you said to make sure that I never fall under the impression that I've somehow "outgrown" these concepts set by veterans such as yourself. If you stress that something is important, I'd rather blindly trust you than experience the repercussions for thinking that I know better (Dunning-Kruger Effect). Thank you.
It's a false dichotomy you shouldn't either blindly trust or ignore advices. You should understand all advices, tools, tips and rules are valid in a certain context and not in general. Understanding the context will make you understand why you often should not follow certain advices for your specific case.
42 years of experience here. Fabulous advise, delivered succinctly. One clarification I’d add: youngsters get obsessed by abstraction, and frequently mislead by conflating abstraction with inheritance and nouns. The key to useful abstraction are the verbs, and the nouns should be abstracted so they can be fed to the verbs indiscriminately, i.e. polymorphism. Add dependency injection, and you’re now able to usefully abstract. Abstraction IS NOT about writing a lot of conditional logic, it’s about removing conditional logic!
As a software developer with almost 10 years of experience under my belt I am glad I found this video. It reinforced me that I am doing it right :) To junior devs, I would say focus on TDD and clean code first, make those a habit, get to know your tools and the language you are working with, then you can and should dive into higher topics like what were addressed in this fantastic video!
Summary of things in the video 1. Everyone is junior at something. 2. It’s ok to say “I don’t know”. 3. Apply “engineering thinking” to solving problems. 4. Make progress in small controlled experiments. 5. Seek mentors. 6. Seek out pair programming. 7. Find like-minds. 8. Don’t be obsessed with tools. 9. Focus on the problem you are solving. 10. With lots of code - play with it. 11. Learn test-driven development. 12. Fundamentals are more important than tools. 13. Languages and frameworks should be incidentals. 14. Problem solving > design > coding > language and frameworks. 15. Take coupling/dependancies seriously. 16. Concurrency requires caution. 17. Optimize for learning and discovery. 18. Optimize for manage complexity. A lot more valuable things are discussed in depth in the video.
I've seen a bunch of videos with advices for new software developers and none of the speakers to my mind were so enthusiastic about the job in the IT. It was so nice of you to greet us with such warmth at the beginning of the video! It IS very inspiring when you finally see a person who is still able to enjoy the work despite the decades of experience. Thank you :)
This is a great breakdown on the industry. Unfortunately, those doing the recruitment for many organisations, don't understand most of these points. Once you have a role all of this advice is spot on. Great job.
Thanks, I think that recruitment is a difficult job, but often poorly done. It is understandable that people too often take the "skills checklist" approach, because, though much worse, it is easier to do. I spent a fair bit of time in trying to recruit developers to a couple of organisations that I worked in, it is a difficult thing to do well, but it seems to me important enough to spend time on and to try to do well. I got to the stage where I didn't read CVs before an interview, because they were so targeted at lists of skills rather than the stuff that I was interested in.
I'm started programming 9 months ago. I'm at the beginning to crawl still. I became so hungry for knowledge that I'd never possibly imagined that I would be falling in love that hard for a thing. In the 9 past months, I had 3 burnouts. In the first one, I've spent at least one month until I can get back to the front of a computer again. This was when I've decided to learn how to learn to recover myself from burnouts readily and realized that I have become a programmer. Thank you for the valuable advice.
Trying to transition from QA to development in gamedev, I started learning how to code very recently. Looking through all the job requirements for Gameplay Programmers etc seems so daunting I started to doubt if I have enough lifetime to master all those skills and technologies. This video gave me lots of hope and further fueled my drive to push forward and learn. Thank you!
Very useful stuff. After I got my second higher education three years ago, I did programming all alone and, probably, this is an excuse, I didn’t have time to learn how to do it right, because I immediately needed to complete commercial tasks quickly, in languages and with the help of tools which I have just learned to use. We all know that formal computer science education does not provide programming skills in specific languages and development environments. In such an environment, and even I would say bubble, I worked for about three years. But then the war happened. A few months after that, I was gathering my thoughts about how to live on, and as a result, a few months ago I left my country, leaving almost everything behind. Grabbing two bags with things and a backpack with laptops, I crossed the border of my country on foot. Now, in order to be able to work remotely in a normal company, competing with good programmers, I need to increase my level by several steps at once, otherwise there remains the prospect of being one of those stereotypes who, having several higher educations, work as sellers or loaders. I try not to think about the upcoming trial and deportation, I try to learn new things. It's not easy when you live on suitcases and don't know if you can afford to live under a roof and eat in the coming month. A good programming video can take your mind off the stress. As a former psychologist and almost linguist, having studied at four different higher education institutions, interacting with students of three different generations, with teachers of completely different levels, I can immediately recognize a good training video and a good language structure (interaction of thought and word of a speaking person), which is easy to perceive even to foreigners who studied the language mainly from textbooks and Hollywood films. Thanks for the good content.
The first advice i would agrue is one of the most important once. The thing i've found is that the more i learn, the more i realize that i got no idea what i am doing.
I feel like I’ve become a senior engineer just by listening to this video. I’m going to make SRS flashcards of all the things that aren’t already burned into my mind.
Hey David, just wanted to say, that after my two years of working on software development, I know at least enough to value all these tips and carry them onto my career. Thank you very much!
Hey I am restarting my life (have been for the last 7 years) and I recently got a degree in Software Development focused Computer Information Systems. I am finally in a position to break into the industry (hopefully) after overcoming some obstacles that disallowed me to go for tech jobs and I really appreciate this video. I aim to become a software dev and work on a team challenging myself and growing. Keep this stuff coming I enjoy learning more about how to be more successful in this field.
As a Developer withone year of professional Experience it is very obvious, that you actually have a Deep understanding of our field and can communicate your learnings well. Thank you and keep it up
Honestly, the information in this video is invaluable. As a junior in college, I couldn’t have found this video at a better time. I’ve already started creating some of the crazy ideas I have in my head and this video helped me realize some of the weak methodologies I was carrying out. I also loved the tidbit about watching someone use your product. I never considered the importance of observing the interactions between your product and outside interfaces. Cheers!
That content was awesome - thank you. The reasoning of every advice was clear, the attitude is that of a true mentor‘s heart, and the whole setting felt no-nonsense, focused reassuring and inviting. As kind of a personal bonus, I like listening to your voice and enjoy watching you explain things. So, a big thank you from an aspiring developer from far away Germany, who once was apprenticed to a carpenter (no joke), who then studied History on her way to a PhD (translating Ancient Greek and Latin), who then lost everything, … who finally has discovered that strange, beautiful, nerdy dev land and feels very much at home there. It‘s the best of all worlds, where I can concurrently explore, built, be creative, and do science 🙃
I'll say that one of the biggest bits of advice is that talking about a problem bit; I think talking out, explaining the problem to one another is the core of what makes Pair Programming so effective. Second would be exposure to new ideas or ways of doing a thing that one may have done differently. The caveat being that if you see something you'd normally expect to result in an error, it may well be best to voice the concern (non judgmentally) rather than accept that the other person's skill is simply that good that they're showing you a manner wherein the error would be avoided. That may be the case, but stating your concern upfront is part of your contribution to the experience, and they may in fact actually be in error; so catching it early may save some time and frustration troubleshooting later. But back to my point on explaining the problem. Mulling an issue over in ones head may not be as productive as explaining the matter to someone else. Wherein doing so immediately exposes to you what the issue is you've been missing. They may or may not see it as immediately depending on where they're starting from comparatively. But, if you've been soloing an issue and get a partner for a brief moment, explain it to them, almost immediately while explaining it, the eureka moment happens, it's almost maddening, and you can't tell if that speaks to the power of pair programming or not frankly, but I'll give it the win, for that was almost always the impetus for the event occurring. ^_^ I love personal space, but I can't gainsay dual-core development neither! ^_^ But I ain't one to gossip... .
Thank You for taking the time to set up a beginning roadmap for Jr. Developers. Talking to us about what is actually important , and what to strive for certainly will eliminate a few bumps and bruise along the way. This discussion already has changed the way I approach my job, and lead me to subscribe immediately. Great Job.
Another fantastic T-shirt ;) this advice doesn't just apply to developers either - very useful! Some other great advice in the updated version of the Pragmatic Programmer book too.
The best piece of advice ever for beginers who looking to self teach, who maybe learned frameworks before they even ever known the meaning of the fundamentals explainded in this video. Thanks
I found this all very valuable even though I'm a software tester who only does programming for test automation and as a hobby on the side. Your channel as a whole is quite excellent. It surprises me that your subscriber numbers are not higher.
I've worked full-time as a software developer for almost two decades, and I fully agree with and benefit from hearing these pieces of advice. So it's not just for *new* software developers; It's good to hear these again. I should spend more time meditating on and practicing these ideas...
This was insanely insightful. UA-cam needs more like this content. I subscribed immediately. It is easy to learn frameworks and etc. but hard to learn how to think about general structure, road and patterns. Thanks a lot.
Always strive to work for a company which hires entry-level talent, even if you're not entry-level. In order to succeed and stay in business, these companies have to be prepared to provide the skills that they require (that is, training in specific technologies), when these skills cannot be found in the pool of available talent. Companies which are always looking for X years of experience with technology Y have no vision and will fail when their lack of planning bites them.
@@royhonders The fundamentals are part of what I think of as a genuine "engineering approach". The outcome is software with fewer defects, that is easier to work on and easier to change to meet user needs. The focus of this "engineering approach" is on two things, optimising for learning - science, iteration, feedback, experimentation etc. and optimising to manage complexity, modularity, cohesion etc.
Amazing clarity; advice that you can feel. Every now and then you shine a light on something we got right and the sweet bells chime. So rich and most comprehensive. I am most grateful for this.
Knowing that you don't know and opening that box by analyse and discourse is the most important step. If they hate Pair-Programming: Run! Being good with problem-analysis means being good with terms. That means: Be good with language. Solve problems structural. Awesome talk. Ah...and dont separate concerns by finding very strange concerns...
Your channel is among the best things I've came across in the last couple of months, within this magnificent universe of software development. Thanks a lot for this great work! ✌️✌️✌️
Thank you. Just wanted to show my respects for the years in the industry. I've started 10 years ago and still learning better ways of solving situations I encounter daily (problems are only in math and they allways have at least 2 solutions) . For juniors and starters I would suggest to start with the basic principles of programming, OOP concepts and then play with multiple languages to get to know which are the tools you could use to solve situations :) best of luck to all
I would slightly change that approach. When I am presented with a problem, my first thought is "is a solution possible?". At that point, my approach is to try and think of any way in which you could solve this with software. If I can think of one, no matter how horrible or complicated my initial idea is, then I am comfortable that it is possible - and all I have to do is find a nice, or better, solution. I don't usually want to describe this first version to anyone, because the solution is usually nasty. I am pretty experienced, and so I am pretty confident that if I can imagine a solution, I can build one too. I am also VERY confident that I can start without knowing all of the answers. So for regular things, I am happy to start very quickly. At that point, I want to start, not with the most complex stuff, but with the most valuable stuff. Ideally, I'd like to create something useful and get it out to people to see how they react. If the problem has some aspect that I have no idea how to do it, or imposes (for example) performance constraints that I don't know if they are possible, I will do some experiments - These are consciously throw-away, in terms of code. Don't confuse learning if something is feasible, with building something that is production ready. If you try to do both at the same time, you will do a worse job of both. Best to try and think of the simplest experiment that can show you the way forward, and do that.
The issue with this is that it assumes you know what the hard part is which assumes you have deep knowledge of the problem domain. In the real World, you write what you THINK is the hard part first, then tell the boss it is all going to be done on budget. A month later you discover the REAL hard part and you are up a creek without a paddle.
But Sr do it as easy as possible and didn’t even concern to the other end of integration which is adjusting their code to accommodate the easy way of the Leader/Sr.
Can really tell that you come from a place of profound experience. Where I come from Software development, especially in a software service company is not that good a job. People are just overworked and there is no emphasis on learning. Just on getting the job done because the lifecycle of the software we're developing isn't that much. Always encouraging clients to pay for a newer version than to keep the older one running and more modular and extensible. Please make a video about work culture in the software field as well. If this video is anything to judge by, that should also be a good one. Glad to have found your channel. Thanks.
I have been doing this for a long time, and have been lucky to work as part of some great teams, so I have learned a lot from them. Thanks for your comments on the channel. I agree with you that culture is an important part of good engineering, I have some videos that touch on some aspects of that. Here are a couple that you may find interesting, but I do plane to do more, and I will think about what I can do based on your suggestion, so thanks for that too. "How to build big SW with Small Teams": ua-cam.com/video/cpVLzcjCB-s/v-deo.html "You must be crazy to do pair programming": ua-cam.com/video/aItVJprLYkg/v-deo.html "Top 10 Rules For Continuous Integration": ua-cam.com/video/Xl62gQpAl1w/v-deo.html
Great advice collection. And independent of the language or developers level. In Russia and some other ex-USSR countries there is a popular domain-specific framework called 1C with its own language used to automate trade, accounting, warehousing and other business domains. I'm not an expert at it but I clearly see all the problems described by you that even "senior" 1C-developers bring into their clients' code base even though the framework itself nudges the developers to learn the business domain and be good at it to some extent. I watch some other UA-cam channels on programming in Russian and English and I must say that your adviсe are much more profound and resonating with practice than almost everything I've seen here on UA-cam before. Thank you very much sir for your wisdom and advice!
These are very very helpful. Just watched probably 5 of your videos over the last couple of days. In the fast paced world of software development being reminded of grounding principles and what actually matters is an important reminder. Best videos about programming and higher level concepts I could find on UA-cam.
my professor at advance Testing class referenced this channel. Now i know what he is talking about. based in science and accurate resource and great experience. keep up bro
I had a ZX81 first, but my family clubbed together to buy me the Spectrum, and I did most of my early programming on it. The box contains a real one too 😁 😎
@@ContinuousDelivery I started with a ZX80 kit and a solder iron. Then a PROM later it was a ZX81 and then came the Speccie and Jupiter Ace. Wow that was a long time ago.
I am one year in my work and this field, after getting my degree. I feel so useless and I have problem grasping loads of information I have been given. Thankfully they have been patient so far, but for me to develop my skills I need projects, which there is a lack off. I am not too good of a technical problem solver but I am learning but very very slowly. I have been wondering why I am here, how can I improve to be better at my new job I spent time and money to get too. Questions that have been bothering me over the last months have been is this the right field for me? Have I wasted time getting here and hit a invisible wall I have trouble getting through. I am glad I found your channel and I am going to consume some of your material and put the advices you give into practice. If any other people have any other advice I am open for them.
This is golden information for self taught developers that come from different background other than CS. And it is available for free on UA-cam. Thank you kind Sir!
This channel is blowing my ****ing mind. Just got my "full stack" belt (a tiny bit not really there yet maybe ish) Really getting serious, and this is echoing my best thoughts back to me fleshed out and reinforced while calling my bad habits out like an eagle spotting a mouse. BLESS YOU.
Hi from Brazil. I worked in France last year. I applied the "pair programming" and I didn't even knew there were a name for it. It worked pretty well. I liked so much when you explained the difference between a good and a bad programmer. I'll try to improve things like that in the future. Also letting people to use my software was not at all what I expected and I had to do some changes because it seemed to be not that obvious for them. Thanks for sharing with the world your knowledge. Have a nice 2021!
I just started as a back-end java after a change of "career" despite having only a degree in chemistry, after months of self-taught development I was able to jump into the programming industry. I will treasure these tips and try not to fall into the most trivial mistakes that everyone complains about. Thank you very much Dave, wish you the best!
Thank you, that was helpful. Im just getting into software/coding in my 40s, and am really enjoying it. I hope you still have that Sinclair somewhere. Im from the Commodore 64/Amiga generation, but the Sinclair systems were kind of legendary by then. Be well!
Gonna recommend this to everyone This is just awesome not a second wasted covered so much I'm pretty sure I lost track at some point overall just really glad I came across this video
I really like your way to teach how to improve software engineering skills. Great efficient programmers mindsets distinction. Hearing your programming style show how much abstraction in coding increases software design optimisation.
Great video, enjoyed it a lot. You describe separation of concerns and coupling in a very clear way, especially for someone like me who is still learning software development.
wow to think that a junior dev can keep 101 things in mind when they have probably just finished college is awesomely generous. Let us keep it simple. You get three things to keep in mind: Keep it simple, readable, and coherent to the issue.
Love that you kept the original ZX Spectrum box! I recently discovered your channel and have been quite enjoying it so far, and today I was curious to hear what you were going to recommend to juniors. The Spectrum 48K was my very first "real" computer, got it in 1983 and learned Z80 assembly, BASIC, Pascal and C on it, shortly before starting my career on IBM PCs. Sweet times. We must be in the same age group, and I wonder now if you began on that too. I still have mine in the basement... but no original box :/
I played a little with a ZX81 before the Spectrum. But I mostly learned the basics of programming on the Spectrum. The box in the pictures has a Spectrum in it, not my original one, a a gift from my wife, who also organised my family to chip-in and buy my my original one 😁😎
I am working on my thesis using VR to help medicine students practice communication and physical interaction. I have 0 experience in working with VR software which makes me a jr, but I have played VR games and own an Index VR headset so the first thing I did was finding a tool that can help me building the solution which I found it using Unity3D and SteamVR plugin by Valve and so far I managed to build a small demo A room where the player (I like to call the user the player) can spawn a stethoscope using the controller, grab it and put on top of a cube, if the stethoscope and the cube are colliding then a heart beat sound will play, everything in a VR environment. In this way I have a good view of what I can do and see that a solution is reachable. I hope my approach was good
Dave, it's great to see the background of your room. I really enjoy the content of the channel and your personal approach to deliver it. Now I learned that we have things in common other than software development by looking at things surrounding your workplace. I love model airplanes, ZX Spectrum was my first computer back in 90s, and I enjoy Guinness too))) Thank you.
That first tip is so vital! I gained PTSD and debilitating imposter syndrome from a very bad work experience under a mentally abusive boss to whom nothing was ever good enough and was publicly humiliating anyone who made even one mistake in their eyes while they were constantly looking over your shoulder. After that, I have been struggling extremely hard to get anything delivered in software engineering due to extreme panic attacks whenever a situation arises where I don’t know the answer to a question or how to solve the problem immediately. Applying to jobs and sending any work reviewed for commit has been hell, and I often get such panic attacks I sometimes faint. I wish I could get back to the mindset of trying your best is enough, and no one knows everything. But at least for the moment, that path seems blocked for me. I am still working on it, and at least I haven’t fainted in almost a year now during the panic attacks.
Thank you very much. Unfortunately, most of the jobs or whoever hiring software engineers and doing the interview doesn't this. Rather they use a checklist of the tech stack they know, as you said.
This is a great video and I would love to see more like it. Just like many others have already written before me, this advice is relevant not only for junior developers. I would even argue that it becomes more relevant the more senior you get. Because you start to develop a certain kind of assertiveness or even arrogance, due to your success. Taking a few steps back and look at the bigger picture really does help. Also, it kind-of makes it easier to explain to commercial people (often called managers) why it is not a brilliant idea to staff teams almost exclusively with inexperienced people. Not only will it likely produce bad results. But it will also deprive the "juniors" of a chance for proper mentoring and support. The latter takes time and nobody can support 10 folks. But that is probably a separate discussion (and video ;-) ). Thanks for the video!
Thank you. I agree with you about the value of teams made up of a mix of experience. I think that companies a very dumb to not focus on training people, and for that you need some more experienced people to guide them. I led a team that did some very difficult, very cool things. We built one of the world's highest performance financial systems. It was a daunting engineering challenge. When we began we decided that we were going to hire people that we already knew, from personal experience, were great, and then very smart people that were new to the industry so that we could help to guide them. I am extremely proud of the impact that we had on several people's careers as a result. We helped them to grow to become great software developers. This wasn't a cost to our org, it was a benefit. Too many orgs are much too short-sighted in this respect.
“Everybody is junior at something “
Very nice...
Thanks, it was one of the most common responses that I got from others, as well as something that I believe in myself.
Great tips in this video. Finally found someone that likes Tintin @feyzullah
correction -> every homo sapien is junior at something.
This might be the first video i saw that doesnt talk about coding, but the actual things programmer need, great video!
Thanks
As a dev who has just 2 years of professional experience, and has lacked access to mentorship, this information is incredibly valuable. I can see many examples from my past two years where I have succeeded or failed in applying the principles outlined in this video, and I now have the expanded awareness to be more intentional about these things in the future. Thank you
Im on the same boat
It took me about 5 or 6 years as programmer to realize most of these things, so I think this video is not only for "new" developers. Great summary of what our profession is all about.
This is criminally underrated. I've written down everything you said to make sure that I never fall under the impression that I've somehow "outgrown" these concepts set by veterans such as yourself. If you stress that something is important, I'd rather blindly trust you than experience the repercussions for thinking that I know better (Dunning-Kruger Effect). Thank you.
Wow! Thank you - I hope you continue to find my stuff helpful.
It's a false dichotomy you shouldn't either blindly trust or ignore advices. You should understand all advices, tools, tips and rules are valid in a certain context and not in general. Understanding the context will make you understand why you often should not follow certain advices for your specific case.
42 years of experience here.
Fabulous advise, delivered succinctly.
One clarification I’d add: youngsters get obsessed by abstraction, and frequently mislead by conflating abstraction with inheritance and nouns.
The key to useful abstraction are the verbs, and the nouns should be abstracted so they can be fed to the verbs indiscriminately, i.e. polymorphism.
Add dependency injection, and you’re now able to usefully abstract.
Abstraction IS NOT about writing a lot of conditional logic, it’s about removing conditional logic!
As a software developer with almost 10 years of experience under my belt I am glad I found this video. It reinforced me that I am doing it right :)
To junior devs, I would say focus on TDD and clean code first, make those a habit, get to know your tools and the language you are working with, then you can and should dive into higher topics like what were addressed in this fantastic video!
I've had 6 years of non professional experience and this video was the most eye opening I've ever watched on UA-cam. Thank you for that.
Summary of things in the video
1. Everyone is junior at something.
2. It’s ok to say “I don’t know”.
3. Apply “engineering thinking” to solving problems.
4. Make progress in small controlled experiments.
5. Seek mentors.
6. Seek out pair programming.
7. Find like-minds.
8. Don’t be obsessed with tools.
9. Focus on the problem you are solving.
10. With lots of code - play with it.
11. Learn test-driven development.
12. Fundamentals are more important than tools.
13. Languages and frameworks should be incidentals.
14. Problem solving > design > coding > language and frameworks.
15. Take coupling/dependancies seriously.
16. Concurrency requires caution.
17. Optimize for learning and discovery.
18. Optimize for manage complexity.
A lot more valuable things are discussed in depth in the video.
I've seen a bunch of videos with advices for new software developers and none of the speakers to my mind were so enthusiastic about the job in the IT. It was so nice of you to greet us with such warmth at the beginning of the video! It IS very inspiring when you finally see a person who is still able to enjoy the work despite the decades of experience.
Thank you :)
You're very welcome!
As someone whose not a professional developer (hardly a hobbyist) I came just to say I love your shirt.
I have a small collection of silly Sci-Fi shirts, check out tonight's video for another :)
That shirt is why I clicked...
I have this shirt!
This is a great breakdown on the industry. Unfortunately, those doing the recruitment for many organisations, don't understand most of these points. Once you have a role all of this advice is spot on. Great job.
Thanks, I think that recruitment is a difficult job, but often poorly done. It is understandable that people too often take the "skills checklist" approach, because, though much worse, it is easier to do. I spent a fair bit of time in trying to recruit developers to a couple of organisations that I worked in, it is a difficult thing to do well, but it seems to me important enough to spend time on and to try to do well. I got to the stage where I didn't read CVs before an interview, because they were so targeted at lists of skills rather than the stuff that I was interested in.
@@ContinuousDelivery what were you interested in?
@@Nurof3n_ I talk about some of that stuff in this video: ua-cam.com/video/osnOY5zgdMI/v-deo.html
I'm started programming 9 months ago. I'm at the beginning to crawl still. I became so hungry for knowledge that I'd never possibly imagined that I would be falling in love that hard for a thing. In the 9 past months, I had 3 burnouts.
In the first one, I've spent at least one month until I can get back to the front of a computer again.
This was when I've decided to learn how to learn to recover myself from burnouts readily and realized that I have become a programmer.
Thank you for the valuable advice.
Thank you, and good luck. It is a very addictive pass-time, so take it easy, but have fun too.
Trying to transition from QA to development in gamedev, I started learning how to code very recently.
Looking through all the job requirements for Gameplay Programmers etc seems so daunting I started to doubt if I have enough lifetime to master all those skills and technologies.
This video gave me lots of hope and further fueled my drive to push forward and learn.
Thank you!
Very useful stuff. After I got my second higher education three years ago, I did programming all alone and, probably, this is an excuse, I didn’t have time to learn how to do it right, because I immediately needed to complete commercial tasks quickly, in languages and with the help of tools which I have just learned to use. We all know that formal computer science education does not provide programming skills in specific languages and development environments. In such an environment, and even I would say bubble, I worked for about three years. But then the war happened. A few months after that, I was gathering my thoughts about how to live on, and as a result, a few months ago I left my country, leaving almost everything behind. Grabbing two bags with things and a backpack with laptops, I crossed the border of my country on foot. Now, in order to be able to work remotely in a normal company, competing with good programmers, I need to increase my level by several steps at once, otherwise there remains the prospect of being one of those stereotypes who, having several higher educations, work as sellers or loaders. I try not to think about the upcoming trial and deportation, I try to learn new things. It's not easy when you live on suitcases and don't know if you can afford to live under a roof and eat in the coming month. A good programming video can take your mind off the stress. As a former psychologist and almost linguist, having studied at four different higher education institutions, interacting with students of three different generations, with teachers of completely different levels, I can immediately recognize a good training video and a good language structure (interaction of thought and word of a speaking person), which is easy to perceive even to foreigners who studied the language mainly from textbooks and Hollywood films. Thanks for the good content.
The first advice i would agrue is one of the most important once. The thing i've found is that the more i learn, the more i realize that i got no idea what i am doing.
I feel like I’ve become a senior engineer just by listening to this video. I’m going to make SRS flashcards of all the things that aren’t already burned into my mind.
Thanks😎
mind sharing them on Anki?
Hey David, just wanted to say, that after my two years of working on software development, I know at least enough to value all these tips and carry them onto my career. Thank you very much!
Hey I am restarting my life (have been for the last 7 years) and I recently got a degree in Software Development focused Computer Information Systems. I am finally in a position to break into the industry (hopefully) after overcoming some obstacles that disallowed me to go for tech jobs and I really appreciate this video. I aim to become a software dev and work on a team challenging myself and growing. Keep this stuff coming I enjoy learning more about how to be more successful in this field.
Good luck, and thanks for the feedback
I am 2 years into my journey as a Software Developer and have found this video very insightful. Thank you.
Glad it was helpful!
As a Developer withone year of professional Experience it is very obvious, that you actually have a Deep understanding of our field and can communicate your learnings well. Thank you and keep it up
Thank you
I'm just starting out my software development journey and you have turned my mindset on its head. Thank you sir! Please keep posting quality content!
Thanks! this clears a lot of things.
Glad it was helpful!
I love your knowledge and humility. It is refreshing to find a UA-cam channel that really looks at the fundamentals. Thank you
Honestly, the information in this video is invaluable. As a junior in college, I couldn’t have found this video at a better time. I’ve already started creating some of the crazy ideas I have in my head and this video helped me realize some of the weak methodologies I was carrying out. I also loved the tidbit about watching someone use your product. I never considered the importance of observing the interactions between your product and outside interfaces. Cheers!
Glad it was helpful!
I was overwhelmed by the information I got from this video, thank you so much.
That content was awesome - thank you.
The reasoning of every advice was clear, the attitude is that of a true mentor‘s heart, and the whole setting felt no-nonsense, focused reassuring and inviting. As kind of a personal bonus, I like listening to your voice and enjoy watching you explain things.
So, a big thank you from an aspiring developer from far away Germany, who once was apprenticed to a carpenter (no joke), who then studied History on her way to a PhD (translating Ancient Greek and Latin), who then lost everything, … who finally has discovered that strange, beautiful, nerdy dev land and feels very much at home there.
It‘s the best of all worlds, where I can concurrently explore, built, be creative, and do science 🙃
Thank you. I’m glad you enjoyed the video and found it helpful!
That’s a good one! My story is a bit similar. Studied marketing, and for an MBA, but discovered myself to love this field.
I'll say that one of the biggest bits of advice is that talking about a problem bit; I think talking out, explaining the problem to one another is the core of what makes Pair Programming so effective. Second would be exposure to new ideas or ways of doing a thing that one may have done differently. The caveat being that if you see something you'd normally expect to result in an error, it may well be best to voice the concern (non judgmentally) rather than accept that the other person's skill is simply that good that they're showing you a manner wherein the error would be avoided. That may be the case, but stating your concern upfront is part of your contribution to the experience, and they may in fact actually be in error; so catching it early may save some time and frustration troubleshooting later.
But back to my point on explaining the problem. Mulling an issue over in ones head may not be as productive as explaining the matter to someone else. Wherein doing so immediately exposes to you what the issue is you've been missing. They may or may not see it as immediately depending on where they're starting from comparatively. But, if you've been soloing an issue and get a partner for a brief moment, explain it to them, almost immediately while explaining it, the eureka moment happens, it's almost maddening, and you can't tell if that speaks to the power of pair programming or not frankly, but I'll give it the win, for that was almost always the impetus for the event occurring. ^_^
I love personal space, but I can't gainsay dual-core development neither! ^_^
But I ain't one to gossip... .
I agreed with all of that.
0:59, there's stress too.
4:00, _"I never learn anything in the tournaments that I won"_ - Bobby Jones, top golf player.
Thank You for taking the time to set up a beginning roadmap for Jr. Developers. Talking to us about what is actually important , and what to strive for certainly will eliminate a few bumps and bruise along the way. This discussion already has changed the way I approach my job, and lead me to subscribe immediately. Great Job.
Thank you, in case you missed it, this weeks video is also aimed specifically at more junior devs too. ua-cam.com/video/5g3dK2DgW-k/v-deo.html
Another fantastic T-shirt ;) this advice doesn't just apply to developers either - very useful! Some other great advice in the updated version of the Pragmatic Programmer book too.
Just the "Cyberdyne Systems" one left in the SciFi T-shirt series🤣 😎
The best piece of advice ever for beginers who looking to self teach, who maybe learned frameworks before they even ever known the meaning of the fundamentals explainded in this video. Thanks
Thanks
First time seeing a video from you, thank you for this. Starting my first dev job in 2 weeks.
I found this all very valuable even though I'm a software tester who only does programming for test automation and as a hobby on the side. Your channel as a whole is quite excellent. It surprises me that your subscriber numbers are not higher.
Problem Solving > Design > Coding > Programming languages and Framework.
I like this!
Thanks!
I've worked full-time as a software developer for almost two decades, and I fully agree with and benefit from hearing these pieces of advice. So it's not just for *new* software developers; It's good to hear these again. I should spend more time meditating on and practicing these ideas...
This was insanely insightful. UA-cam needs more like this content. I subscribed immediately. It is easy to learn frameworks and etc. but hard to learn how to think about general structure, road and patterns. Thanks a lot.
Always strive to work for a company which hires entry-level talent, even if you're not entry-level. In order to succeed and stay in business, these companies have to be prepared to provide the skills that they require (that is, training in specific technologies), when these skills cannot be found in the pool of available talent. Companies which are always looking for X years of experience with technology Y have no vision and will fail when their lack of planning bites them.
Thank you for sharing this great summary. Its always good to step bach and think about this fundamentals. Even after 20 years of experience.
You're very welcome!
What exactly did you get out of these fundamentals?
@@royhonders The fundamentals are part of what I think of as a genuine "engineering approach". The outcome is software with fewer defects, that is easier to work on and easier to change to meet user needs.
The focus of this "engineering approach" is on two things, optimising for learning - science, iteration, feedback, experimentation etc. and optimising to manage complexity, modularity, cohesion etc.
Amazing clarity; advice that you can feel. Every now and then you shine a light on something we got right and the sweet bells chime. So rich and most comprehensive. I am most grateful for this.
Knowing that you don't know and opening that box by analyse and discourse is the most important step. If they hate Pair-Programming: Run! Being good with problem-analysis means being good with terms. That means: Be good with language. Solve problems structural. Awesome talk. Ah...and dont separate concerns by finding very strange concerns...
Your channel is among the best things I've came across in the last couple of months, within this magnificent universe of software development. Thanks a lot for this great work! ✌️✌️✌️
Mr. David Farley, you are a treasure. Thank you for sharing your wisdom.
Thank you. Just wanted to show my respects for the years in the industry. I've started 10 years ago and still learning better ways of solving situations I encounter daily (problems are only in math and they allways have at least 2 solutions) . For juniors and starters I would suggest to start with the basic principles of programming, OOP concepts and then play with multiple languages to get to know which are the tools you could use to solve situations :) best of luck to all
Thanks, for the good advice
I remember someone saying: When starting a new project do the hard part first, that way you'll find out early if your project is even viable.
I would slightly change that approach. When I am presented with a problem, my first thought is "is a solution possible?". At that point, my approach is to try and think of any way in which you could solve this with software. If I can think of one, no matter how horrible or complicated my initial idea is, then I am comfortable that it is possible - and all I have to do is find a nice, or better, solution.
I don't usually want to describe this first version to anyone, because the solution is usually nasty.
I am pretty experienced, and so I am pretty confident that if I can imagine a solution, I can build one too. I am also VERY confident that I can start without knowing all of the answers. So for regular things, I am happy to start very quickly.
At that point, I want to start, not with the most complex stuff, but with the most valuable stuff. Ideally, I'd like to create something useful and get it out to people to see how they react.
If the problem has some aspect that I have no idea how to do it, or imposes (for example) performance constraints that I don't know if they are possible, I will do some experiments - These are consciously throw-away, in terms of code. Don't confuse learning if something is feasible, with building something that is production ready. If you try to do both at the same time, you will do a worse job of both. Best to try and think of the simplest experiment that can show you the way forward, and do that.
The issue with this is that it assumes you know what the hard part is which assumes you have deep knowledge of the problem domain. In the real World, you write what you THINK is the hard part first, then tell the boss it is all going to be done on budget. A month later you discover the REAL hard part and you are up a creek without a paddle.
But Sr do it as easy as possible and didn’t even concern to the other end of integration which is adjusting their code to accommodate the easy way of the Leader/Sr.
Can really tell that you come from a place of profound experience. Where I come from Software development, especially in a software service company is not that good a job. People are just overworked and there is no emphasis on learning. Just on getting the job done because the lifecycle of the software we're developing isn't that much. Always encouraging clients to pay for a newer version than to keep the older one running and more modular and extensible. Please make a video about work culture in the software field as well. If this video is anything to judge by, that should also be a good one. Glad to have found your channel. Thanks.
I have been doing this for a long time, and have been lucky to work as part of some great teams, so I have learned a lot from them.
Thanks for your comments on the channel. I agree with you that culture is an important part of good engineering, I have some videos that touch on some aspects of that. Here are a couple that you may find interesting, but I do plane to do more, and I will think about what I can do based on your suggestion, so thanks for that too.
"How to build big SW with Small Teams": ua-cam.com/video/cpVLzcjCB-s/v-deo.html
"You must be crazy to do pair programming": ua-cam.com/video/aItVJprLYkg/v-deo.html
"Top 10 Rules For Continuous Integration": ua-cam.com/video/Xl62gQpAl1w/v-deo.html
@@ContinuousDelivery No, thank you for the great content. Looking forward to see that.
These pieces of advice would have been handy when I started out... It really would have made a world of difference!
Great advice collection.
And independent of the language or developers level.
In Russia and some other ex-USSR countries there is a popular domain-specific framework called 1C with its own language used to automate trade, accounting, warehousing and other business domains.
I'm not an expert at it but I clearly see all the problems described by you that even "senior" 1C-developers bring into their clients' code base even though the framework itself nudges the developers to learn the business domain and be good at it to some extent.
I watch some other UA-cam channels on programming in Russian and English and I must say that your adviсe are much more profound and resonating with practice than almost everything I've seen here on UA-cam before.
Thank you very much sir for your wisdom and advice!
Very cool and humbling video. Demystifying, inspiring and deeply insightful.
Happy Healthy New Year!
Thank you! Happy new year.
These are very very helpful. Just watched probably 5 of your videos over the last couple of days. In the fast paced world of software development being reminded of grounding principles and what actually matters is an important reminder. Best videos about programming and higher level concepts I could find on UA-cam.
The very beginning really triggered something In me to keep going. Glad to hear from an older perspective.
my professor at advance Testing class referenced this channel. Now i know what he is talking about. based in science and accurate resource and great experience. keep up bro
Thanks, glad you like it!
Ive worked as a systemdeveloper since 2007 and I found this usefull
The Sinclair ZX Spectrum box in the back bring back memories. It was the first computer I had as a kid. 48K RAM was a lot back then :)
I had a ZX81 first, but my family clubbed together to buy me the Spectrum, and I did most of my early programming on it. The box contains a real one too 😁 😎
@@ContinuousDelivery I started with a ZX80 kit and a solder iron. Then a PROM later it was a ZX81 and then came the Speccie and Jupiter Ace. Wow that was a long time ago.
This video really helped me a lot in my beginning. Literally every piece of advice was extremely useful for me. Much appreciated 👍
Thanks, I am very happy that you found it helpful.
I am one year in my work and this field, after getting my degree. I feel so useless and I have problem grasping loads of information I have been given. Thankfully they have been patient so far, but for me to develop my skills I need projects, which there is a lack off. I am not too good of a technical problem solver but I am learning but very very slowly.
I have been wondering why I am here, how can I improve to be better at my new job I spent time and money to get too. Questions that have been bothering me over the last months have been is this the right field for me? Have I wasted time getting here and hit a invisible wall I have trouble getting through.
I am glad I found your channel and I am going to consume some of your material and put the advices you give into practice.
If any other people have any other advice I am open for them.
This is golden information for self taught developers that come from different background other than CS. And it is available for free on UA-cam. Thank you kind Sir!
Glad it was helpful!
This channel is blowing my ****ing mind.
Just got my "full stack" belt (a tiny bit not really there yet maybe ish)
Really getting serious, and this is echoing my best thoughts back to me fleshed out and reinforced while calling my bad habits out like an eagle spotting a mouse.
BLESS YOU.
Thanks :)
Hi from Brazil. I worked in France last year. I applied the "pair programming" and I didn't even knew there were a name for it. It worked pretty well. I liked so much when you explained the difference between a good and a bad programmer. I'll try to improve things like that in the future. Also letting people to use my software was not at all what I expected and I had to do some changes because it seemed to be not that obvious for them. Thanks for sharing with the world your knowledge. Have a nice 2021!
Thanks, you too - happy new year.
I just started as a back-end java after a change of "career" despite having only a degree in chemistry, after months of self-taught development I was able to jump into the programming industry. I will treasure these tips and try not to fall into the most trivial mistakes that everyone complains about. Thank you very much Dave, wish you the best!
Thanks, and good look with your change of career.
Thanks for your advice. It reminds me of code complete.
Thank you, that was helpful. Im just getting into software/coding in my 40s, and am really enjoying it. I hope you still have that Sinclair somewhere. Im from the Commodore 64/Amiga generation, but the Sinclair systems were kind of legendary by then. Be well!
Have to rewatched this, thats a mouthful of great advice. Thanks
Glad it was helpful!
Think this is good review for even senior developers.
Thanks
Thank you sir for your precious advice highly appreciate your efforts.
Gonna recommend this to everyone
This is just awesome not a second wasted covered so much I'm pretty sure I lost track at some point overall just really glad I came across this video
Thanks
Great information! Really appreciate you sharing this.
Thanks so much. I am new to programming but an old hat in other industries and most of these point apply there too, in modified form of course.
Glad it was helpful!
I really like your way to teach how to improve software engineering skills. Great efficient programmers mindsets distinction. Hearing your programming style show how much abstraction in coding increases software design optimisation.
Great to hear!
Great video, enjoyed it a lot. You describe separation of concerns and coupling in a very clear way, especially for someone like me who is still learning software development.
Thanks, and welcome
This is good advice. Wish I had this when I started out.
wow to think that a junior dev can keep 101 things in mind when they have probably just finished college is awesomely generous. Let us keep it simple. You get three things to keep in mind: Keep it simple, readable, and coherent to the issue.
Love that you kept the original ZX Spectrum box! I recently discovered your channel and have been quite enjoying it so far, and today I was curious to hear what you were going to recommend to juniors. The Spectrum 48K was my very first "real" computer, got it in 1983 and learned Z80 assembly, BASIC, Pascal and C on it, shortly before starting my career on IBM PCs. Sweet times. We must be in the same age group, and I wonder now if you began on that too. I still have mine in the basement... but no original box :/
I played a little with a ZX81 before the Spectrum. But I mostly learned the basics of programming on the Spectrum. The box in the pictures has a Spectrum in it, not my original one, a a gift from my wife, who also organised my family to chip-in and buy my my original one 😁😎
Quality content, we need more... Спасибо Вам)
Thanks, will do!
I am working on my thesis using VR to help medicine students practice communication and physical interaction.
I have 0 experience in working with VR software which makes me a jr, but I have played VR games and own an Index VR headset so the first thing I did was finding a tool that can help me building the solution which I found it using Unity3D and SteamVR plugin by Valve and so far I managed to build a small demo
A room where the player (I like to call the user the player) can spawn a stethoscope using the controller, grab it and put on top of a cube, if the stethoscope and the cube are colliding then a heart beat sound will play, everything in a VR environment. In this way I have a good view of what I can do and see that a solution is reachable.
I hope my approach was good
😎
Amazing video! It will take me watching this a few times before I can absorb all that info. Thank you so much.
Thank you very much for your valuable input for software developers.
Excellent insight, great advice what needs to be in focus. Thank you for sharing.
Dave, it's great to see the background of your room. I really enjoy the content of the channel and your personal approach to deliver it. Now I learned that we have things in common other than software development by looking at things surrounding your workplace. I love model airplanes, ZX Spectrum was my first computer back in 90s, and I enjoy Guinness too))) Thank you.
Get good at problem solving and the coding will come along with it. Wiser words have never been spoken.
Speaking about mentors, after a few minutes of watching, I can admit for sure, that I will follow the mentors like an author.
That first tip is so vital!
I gained PTSD and debilitating imposter syndrome from a very bad work experience under a mentally abusive boss to whom nothing was ever good enough and was publicly humiliating anyone who made even one mistake in their eyes while they were constantly looking over your shoulder.
After that, I have been struggling extremely hard to get anything delivered in software engineering due to extreme panic attacks whenever a situation arises where I don’t know the answer to a question or how to solve the problem immediately. Applying to jobs and sending any work reviewed for commit has been hell, and I often get such panic attacks I sometimes faint.
I wish I could get back to the mindset of trying your best is enough, and no one knows everything. But at least for the moment, that path seems blocked for me. I am still working on it, and at least I haven’t fainted in almost a year now during the panic attacks.
I'm sorry that you have had such a negative experience! I hope you find a much nicer place to work soon.
@@ContinuousDelivery Thank you for the kind words
Thank you very much. Unfortunately, most of the jobs or whoever hiring software engineers and doing the interview doesn't this. Rather they use a checklist of the tech stack they know, as you said.
Thank you for the advices. I feel very fortunate to learn from someone as experienced as you.
So nice of you
Thank you for sharing, it was very helpful!
You are welcome!
I really enjoy listening to your videos, so thank you! Great advice, and free!!
You are so welcome!
Thank you very much, this is exactly what I need right now
Thank you so much Mr. Farleyfor this video, it was really helpful
Sometimes we need to re-phase ourselves. This is nice video to watch, doesn't matter how long you are working on programming.
This is a great video and I would love to see more like it. Just like many others have already written before me, this advice is relevant not only for junior developers. I would even argue that it becomes more relevant the more senior you get. Because you start to develop a certain kind of assertiveness or even arrogance, due to your success. Taking a few steps back and look at the bigger picture really does help. Also, it kind-of makes it easier to explain to commercial people (often called managers) why it is not a brilliant idea to staff teams almost exclusively with inexperienced people. Not only will it likely produce bad results. But it will also deprive the "juniors" of a chance for proper mentoring and support. The latter takes time and nobody can support 10 folks. But that is probably a separate discussion (and video ;-) ). Thanks for the video!
Thank you. I agree with you about the value of teams made up of a mix of experience. I think that companies a very dumb to not focus on training people, and for that you need some more experienced people to guide them.
I led a team that did some very difficult, very cool things. We built one of the world's highest performance financial systems. It was a daunting engineering challenge. When we began we decided that we were going to hire people that we already knew, from personal experience, were great, and then very smart people that were new to the industry so that we could help to guide them. I am extremely proud of the impact that we had on several people's careers as a result. We helped them to grow to become great software developers. This wasn't a cost to our org, it was a benefit. Too many orgs are much too short-sighted in this respect.
Awesome content for Developers of different levels. Thanks for sharing
I love your advices. They are understandable and very useful. I hope you get a lot more viewers.
Thanks
Thank you! As always great thoughts and wisdom
Glad you enjoyed it!
Thank you :) you are definitly helping me.
Super helpful stuff, sir. I look forward to using the resources you have outlined.
Glad to help!
This is really good video. It makes me scared of the journey ahead but it prepares my mind for what I should aim at as a very beginner. Thank you sir
Hmm... is that really a Me-262? And a good use for that old ZX Spectrum box...
Thank you for making this video! This is what I was looking for.
I have 7 years experience in Mobile Development and I still always check advice for juniors. Great video. I really like your chanel.
Thanks, I am pleased that you like it.
This is so valuable, thank you for sharing Dave!
Glad it was helpful!