My 2 cents from 23+ years now retired software engineer: * Stay objective about what you code as well as others code. You can take pride in your work but don't get personal. * No company likes to hear what sucks, they just need solid code so write it that way and fix what's not without complaining. * Try to get on projects rather than maintenance work. Projects are hard work, you get less sleep and a lot more stress but you learn more and get more satisfaction once completed. * Project leads/managers can't keep a tight ship if you stray from your tasks even if what you did needed doing. Instead bring it to their attention and offer your services. * You will quickly become obsolete if you don't constantly learn new things. Learn on the job if you can but most likely you will need to learn on your own dime. * If you're going to quit, quit for a smart reason and another job you can step into. Being pissed off isn't a smart reason and gaps in your unemployment records is a big turnoff to employers. * Lastly and maybe most important, stay organized and well prepared so you can stay relaxed and have fun.
I've been a software engineer for > 25 years (C++ -> Web Dev) and you're absolutely correct. One thing on deployment is that you usually have several pre release enviroments you can test deploy to (i.e. integration and staging) which makes it a bit less manic. The main thing you learn through experience is that you code defensively.....writing checks on all inputs (v important for JS) and designing all your code so it CAN be tested and therfore demonstrated that it works. Great channel Happy Cat (When I saw you channel for first time I thought it was "the Hippy Cat"!!!!)........ keep it up!
I'm a couple of years away from becoming an engineer, but you have answered some of my questions ahead of time. It was nice to be able to picture the work environment through your own perspective! Thank you.. Hope you have a beautiful, bright career!
I am 100% self taught and never realized the importance of clean code. It may sound obvious, but you don't really get the full impact of how clean code effects others until you work with a team. The book "Clean Code" by Robert Cecil Martin is well worth a read before or during your first job.
I'm learning to code and my professor always comment on how clean my code is. It's simply a byproduct of being a minimalist but I'm just happy I don't have to deal with messy code because I am already feeling like there's so much other things I need to learn in order to be work ready. :/
Yep. The other thing that's really important to understand is when you need to used canned or tried and tested algorithms in order to solve mundane sorting issues. Otherwise, trying to solve those problems linearly would take an eternity.
I'm not at the coding game but i'm at the 3D game where if i don't keep my self organized on where my stuff is, on my 'layer' stack in the project i just get lost and that eats time, and as we all know time is money, i'm also self taught but in my case if my stuff is not clean i my self will get lost, i already lost actual projects because i didin't got stuff to the right place before i even begin (moved model away and broke the scene)
dealing with legacy systems is my thing, a lot of work i do is cleaning up after companies thought that they were smart hiring programmers to do sysadmin stuff.
Yes, those are different professions with different mind-sets, different cultures and values, despite some obvious overlaps. This is not yet widely understood within business and general culture.
I loved this video! Please keep making more videos about Software Engineering in general. This was EXACTLY the kind of stuff I've dealt with in my first year as a professional Software Engineer. I'm sure most people have no idea before they started, because I know I didn't. :)
My job is to program automated industry stuff. The functions I use are often even older than me! The function used to control a conveyor is 25 years old and was completely undocumented. Now every time I use a "new-to-me" function that is not documented and I have the time, I try to understand how it works and document it. And yea. Getting calls at midnight not the nicest thing, but better than seeing the chaos next morning. If what I programmed suddenly failes, I have to be quick. Every minute is up to $10,000 loss. But if you think of that, you panic, and it takes even longer. Get one person to barricade the whole place, and then remove the emergency stops, disable all security features. Just make the thing work again. A proper fix can wait till I am no longer alone, and have time to figure out whats wrong.
Hey, this video is really useful indeed. I love the fact im around your age and you are always interested in things that concern me too :) You inspire people! Thanks! Any ideas about how to look for a job that suits you or how to prepare yourself psychologically about the big step out of university?
If you are writing code and you are anywhere from 7 to 700 years old then most of this is already relevant. (Been programming for over 30 years; still teaching people this stuff - now I'll point most of them to this video ;-)
My internship was about developping code for bugs and features directly related to the main app, we were working in one of the main teams as a "Real dev". It was awesome. From Canada, Quebec, probably different in other countries tho
Figuring out what interns should be doing is hard. They're going to start in June with no idea what they're going to be working on and by September they're gone, perhaps never to be seen again. You want an intern doing something useful so you get something for what you pay them, and you don't want them to spend a lot of time getting up to speed on the product. You also don't want to give them something crucial because there is a chance they won't actually get anything done and you don't want them interfacing with other teams because they don't know enough about the personalities and conflicts involved for that to work well. So, interns wind up doing ancillary stuff that's nice to have, not core features that are in plan for the next release, and they tend to interface only with other members of their immediate team. The implement things like features that are stretch goals or utilities to help with the workflow, and the work tends to have a well-defined beginning and ending points rather than being ongoing. Interns also tend to get stuck with tasks that nobody else wants to do because they're boring or repetitive or something. It's important, useful work, but it's not what the core team is usually doing.
Here's one: it has to do with teamwork. Sometimes dealing with legacy code, you feel you might have the cure all answer to updating or modernizing, but you are met with resistance that may or may not seem reasonable. Remember you work on a team. Sometimes there are substantial reasons for things being a certain way. Give it time to understand the history of a project, and realize that even though you are smart, so are others. Your way may not always be the best, be a good listener and critical thinker when it comes to other's techniques/methods/thoughts/styles/etc. Do not be the "type a" dictator that no one wants to work with. Most likely your code will live on after you, so make things maintainable and clear. Fancy tricks are not always a good idea; clarity is better for maintainability and stability.
A bit more... i didn't mean to make it sound like "keep your ideas to yourself"... it was more about being able to team work them. If your ideas get shot down, keep them in your back pocket... refine them. anticipate future problems where your pet solutions will fit, and offer them up when the time is right. make sure you keep learning. use assignments as learning opportunities. explore options, even if they're not acceptable for the current task, add the ideas to your pocket.
7:15 kinda what you find in enterprise solutions. I've worked on a system for an insurance company where EVERY SINGLE METHOD had to be unit tested. After that there are the integration tests and finally code quality rating from a 3rd party consultant company.
I don't know if this will help everyone but I was able to transition from Operations to Development by showing them things I have done that prove I have a developer mindset like creating scripts or websites such as dashboards for equipment that we needed a dashboard for and finding a mentor was super helpful. My mentor is now my boss so that is another way that someone straight from college might be able to get a foot in the door and get their first job. Hopefully that will help someone that is trying to break into the development world. Good luck to everyone trying and I wish you much success.
This is one of the most helpful software dev videos that I've watched on UA-cam. It's nice to kind of get a feel of what I'll be going through once I finish school and start working as a dev.
Remember, if your doing something fun, and trying to find a solution that haven't been done before. Then you don't have any idea what you do per definition. So everyone asks themselves who they fooled to land the job. Don't panic your not along. A lot of theory will not fly in reality. Make something simple and incrementally increase the functionality or complexity until it breaks and then fix it.
AnotherUselessNick Many small things, but in combination, i wasn't happy anymore. I needed some change and i want to be a happy cat again :) I don't have a new job yet but i planned for some month of timeout anyways, so this is no problem.
Johnny How long should you wait to start looking outside of 50 miles from where you live for a new job? I've been in a situation before where unfortunately there weren't enough places to send in my resume in my general area and it had me worried what would happen if I wasn't able to find work and I needed to.
Great video. You've pointed out really interesting and important topics. I'll recommend your video to my 4th grade computer science students. They'll need to know most of this before they venture out into the job market and start looking for internships or some entry level programmer jobs. :) Once again, great work.
Even though I'm a games programmer, this made me laugh, the first project I worked on involved taking a legacy game (like 15 years old code) and getting it to run using the new game engine, fortunately I joined after the initial stages so I mostly read the original code to determine how the hell the game physics worked for particular objects so we could replicate the feel of the game but writing it in modern C++. And funnily enough, shortly before release I found a flaw in the core of our implementation of the original code from when we first started porting it to modern C++ which was actually shifting the character a small amount to seperate the character from the terrain the opposite way to the original implementation causing them to get stuck in terrain instead. One of the most annoying parts was, that I found out there were run time asserts to catch this behaviour but the guy who ported that part turned them off so the issue went unnoticed and had to be left unfixed as it could have altered how levels played which could not be changed before launch.
Awesome video! For me, another super important item for your toolbox is to have Metrics in your software. Search around for Statsd and Graphite for an OSS solution. Metrics give you "eyes" into the behavior of your systems in aggregating ways that can give more insight than from logs, and they let you see aperiodic problems and behavior that can't be caught by unit testing, such as slow memory leak situations.
I have just been employed in an IT company in Luxembourg and I really enjoyed this video ☺️. Lots of real life examples and good practices (though most companies have their own processes since a long time that bottleneck their productivity). I will really look forward into that continuous integration tool.
Thank you HappieCat! :3 You have probably the most down to earth software engineering learning channel I have ever seen. You create videos that talk about the basics of what is really important to know and assume your viewers can go out and learn more in depth about topics by themselves (which is what software engineering is all about). But you have a knack for explaining complex of not-so-well-known topics in a way where a programmer can quickly gain enough knowledge to share a conversation with a more experienced programmer. Your channel is filling a niche many programming channels do not right now and I really appreciate everything you do. Not to mention how uplifting and cheery your channel is, which makes the name HappieCat fit so well! Thank you so much and keep up the amazing work you are doing!!! :)
A lot of work places allow for very comfortable dress code. One thing that's been lost to the ages is that a formal dress despite informal dress code is useful for several reasons. 1, 2 and 3) Getting into comfortable clothing at home helps your mind split away from dealing with work problems, especially if you find yourself thinking about work problems while at home. 4) Professional attire just makes people take you more seriously, so if you have to tell a superior that something is difficult because of some arbitrary technological constraint, it helps.
Ask questions, question everything maybe not openly but listen and try to find simple solutions to hard problems. Sometimes people that worked on a solution for a long time create complex solution and oversee the simple quick fix. That fix might be the right pragmatic solution.
I knew a ton of HTML (and CSS) and decided to make a website for someone, since I didn't have any experience, it was a clusterfuck for the first month...Yep a month, no database, content adding system...nothing, just a couple pages. Must say that now that I have some experience I am able to make this website in around an hour :D
Although the CSS looked frickin amazing on the site, colors were nice aswell. I also noticed the site has been updated many times and about a year ago, I found out the guy I made it for learned HTML and CSS +JS and absolutely recoded it :(
Tiari Notepad++ is actually pretty sweet in my opinion. I used the shit out of it for Assembly code. But, I am not forced to use it 8 hours a day, so that may be a difference of opinion right there.
Hey, thanks for the video. I'm applying for an internship, and from what I know you have this mentor at work throughout the internship who is there to help you, and you aren't really assigned the same tasks as the others. So yeah it's as close as you get to understanding the real world, but there will be a lot more after you actually do graduate and start looking for work as a software engineer..
I've been looking after a VB6 program for over 18 years. It still works and I'm still adding features. It may be finished one day (like Java, or Acrobat Reader)
When given a problem to solve, time block the solution. If you can't find the solution in the time block you determined, take a break or ask for help. Sometimes we developers get a bit stuck chasing down one solution path and become blind to other solution paths.
Damn, this vid is amazing. Here I am in university and I'm scared shit-less that I don't understand how everything works together but I learned a lot just from this one video. I just subscribed. :)
What an infectious smile(smirk) you always have on. Watching your videos make me happy. That's needed in the tech industry. If I had a daughter I would want to her be a smart, happy, positive person like you. But now I can't help wondering what you look like when you're NOT happy?
About that experience requirement for entry level coding jobs: The kind of experience that coders need to get between learning their first programming language and starting their first coding job is not something that can be taught in employee training. Basically, it's the experience of being burned by your own mistakes over and over again. It also takes time for the basic programming concepts to really sink in and to overcome some common mental blocks. Here's a question I use to figure out whether someone is ready for an entry level coding job: "Make a boolean variable nabed 'test' and assign to it whether or not the value in 'x' is greater than 3." Here's the wrong answer (C++ syntax, please excuse the lack of indentation): bool test; if (x > 3) { test = true; } else { test = false; }
I don't want to reveal the correct answer right away so I'll just give you a hint. The code does exactly what the question is asking for. But *how* it is done reveals that the coder has a mental block due to lack of experience.
Bill Ill: Exactly. Hasasinful: Being able to answer that question correctly on your own also usually means that you don't spend all your mental energy just on getting the @!ing code to work anymore. Instead, you'll have enough energy left to worry about all the things that make the difference between code that somehow happens to work and code that is actually good. But it's just a rule of thumb. As you can see, there's no real causal connection.
Difference between code that somehow happens to work and code that is actually good. I am gonna think about it. I have a question though.If i am working with other developers maybe i should use the most basic form of coding because if they dont understand it we can't work as a team.Is it about optimizing the project? Currently im learning python/django so true answer didnt even cross my mind i know its not an excuse but im learning from you. Thanks :)
As a 20+ year veteran programmer, the one thing that always astounds me, and I'm not sure if it's the same in the US as it is here in Canada, is that colleges and universities don't teach anything at all about source control. The number of times I've had to mentor a new developer and they don't even know what source control IS... Note I absolutely do not blame them (the junior developer). I blame the schools for not teaching it. I then take a fairly significant amount of time to teach them the ins and outs of source control, as proper use/understanding of source control is critical to avoiding simple problems. Yes, source control systems are usually setup to prevent most issues of code being overwritten, old code coming back from the dead, etc; but in the end it's still just a computer that can only do precisely what we tell it to, so I tend to not trust it. I'm very, very careful with source control. Make sure every file the system thinks is changed, I did actually change (compare). Then compare line-by-line every change. Make sure I'm using the latest version locally before attempting to merge. Comment EVERY checkin with not only the ticket/issue number but a summary of what the change is. Do many small checkins instead of large checkins. Check-in daily, even if it's just to a working branch or shelveset. Etc. :)
Stuyk they pay poorly. You can check out sites like freelance.com for opportunities. You will be competing with people who can live for 10 dollars a day. good luck its unpleasant to take a 20 hours job for 20 bucks. It is paid experience though.
remote work so what website should they go to and prove their decentness on a scale of 1 to 10 to participate in these dev shops? they said been looking all over so my guess is going to the ye olde dev shoppe closest to them didnt work or is not an option. I offered a place and a warning of difficulty. denoting my comment doesnt improve your vague comment, or help anyone at all.
What you really should prepare for: The company doesn't have code review, unit tests or reliable versioning. Legacy code though, yeah, you will probably have that.
God! i wish someone had explained this thing to me when i started. My first job consisted on maintaining a huge 10 years old C/C++ app with 0 documentation and always on fire within a team of 90 developers around the world I learned all this things by force haha, but in the bright side anything after that was heaven in comparation
I'm right at that moment in life. Preparing my first application this week and I'm pretty scared. ...but not scared of legacy code. During my bachelor's thesis I was at one point just given a file with a couple hundred lines of uncommented code. It was mathematical stuff, so only calculation and no library calls or the like - and literally every variable was a single letter. Really, the worst case of dirty code from the swamp. Although I'd hate to work with crap like that again, at least I have seen how deep the rabbit hole can be.
The company I work for has a small IT department. So Unit Tests come down to "Do I delay new features and bug fixes or do I write unit tests?" Sure, in the long run they might be extremely helpful, but I don't always get the time to do so. So be aware this might be a scenario for you.
My philosophy on unit test is that they are better than documentation. Often its way too difficult to write good in-code documentation to cover all the special cases. Unit test paint a better picture.
hey girl thanks for the video you're great although I don't understand many words I'm ESL and not real american what is the word you use on min 14:00 dona patch? or doris's patch.
I am not a software engineer. I am a mechanical engineer with a heavy inclination towards automation. I started my "job" (in my startup) in coding firmware for an embedded system. The problem with me is that I am not able to read other people's code. I found an open source firmware that is close to what I do but it's not exactly the same. I tried porting things from it but I could not figure out how. So I decided to just write the whole thing from scratch and now I am stuck with a half baked software and cannot figure out how I should correct it. The sad thing is that I am the only guy in my team who knows a thing or two about coding. The rest are pure mechanical engineers. And we don't have money to hire someone at this point. Its getting frustrating to a point where I just want to give up.
Jeremiah Fernandez A tape laying machine to make carbon fiber parts. Look up automated fiber placement machines on UA-cam. Something like that but a new process. I basically have to run 5 axes CNC with controlling fiber feed, resin pumps, cutter and spray.
Regarding job spec (3 years experience for entry level job) I think that's largely a disconnect between HR and operations... Then again, I don't know any HR or ops in big firms
I do agree that sometimes internship is not enough because they will assign less task. what do you think, If I'm able to build like 5 large scale projects or more vs intern. I think I will cover much if I build the things I'm interested in.
Oh I could organize the heck out of code. I remember seeing somewhere though that adding too many comments can slow down the code once you get to large scale project?
I feel like school only gave me the barebones.. There are soo many beginner level tutorials on the web, but its really hard to find intermediate lessons. I've been working for 2 years at a company as software dev and I find it hard to grow
A quick comment about code reviews that my team has been doing lately is treating them as a place of discussion to spread learnings among the team as opposed to just nit picking. For example if you see something you don't understand, ask and spark a discussion, ask them why they did things a certain way or just give them a hi-five if you see something really cool they've done :) all the best devs!
You are like my hero, I want to work towards being like you and I want to go into this software dev kinda stuff when I finish school and uni. It just seems really intimidating and quite scary but I'm sure if I work on it, it'll all be fine. Which also leads to a question about working towards what I want to do, I'm learning Java programming and I just want to know if there's any exercises or challenges or projects or anything that anybody recommends to help develop programming skills?
As a employed dev who finished uni about a year ago, here's my only advice. Don't spend your whole life studying at school. The time is simply not worth it. From my experience, no one gives a hoot what school or diploma you have if you can prove you have the right skills for the job. My boss doesn't have any degree, but his knowledge software development is so insanely superior to any course you can take, because he was honing his skills everyday for like 2 decades now. A nice diploma will certainly help you to get noticed by HR, but no one will hire you if you can't prove you have what it takes for the job. You don't need all the fancy degrees if you want to be a dev. Being able to solve real problems is the most crucial ability to have and it only comes with time. Get hired, get better and never stop. Always forward.
Cool video and really helpful. But I do have one doubt for those out there working. Are on-call duties paid for? I mean I guess anywhere in the world you get paid for a set amount of hours a day within a timetable. So waking you up in the middle of the night once might be okay, but several times? Who pays for that? Or is software personnel supposed to slave away like that? Just curious, again I don't know how it works.
I'm working as a student as a software engineer and the thing I wish I knew is: Work on languages/projects you're interested in. I'm working for over a year now and I feel sad every time I have to learn something new about a big ass boring financial database. a) I'm really disinterested a lot of the time and forcing myself to learn something I dislike is stressful and tedious and ultimately ineffective. b) I can't really quit, at least not before finishing college... because of the way it looks to the employer. Everything else you'll catch up to in time...I feel like trying to focus on not forgetting ''legacy code'' before you even got the feel of the real work experience is pretty useless (and most of the stuff mentioned in the video). You're a programmer for goodness sake, you'll learn in time, you'll learn from your mistakes, you'll become better...just keep learning if you want to and if you're ambitious about it.
Hi I want to learn proggraming to develop games but i dont know how should i start it. Im living in iran and i cant buy curses from pluralsight or other similar sites.plz help me.
Hi HappieCat, do you aim to work in office? As a dev you have many opportunities to work remotely, but this might not be the best idea for starters. And there is another con to remote working - once you go remote, you never get back to office :D (6 years remote here)
My 2 cents from 23+ years now retired software engineer:
* Stay objective about what you code as well as others code. You can take pride in your work but don't get personal.
* No company likes to hear what sucks, they just need solid code so write it that way and fix what's not without complaining.
* Try to get on projects rather than maintenance work. Projects are hard work, you get less sleep and a lot more stress but you learn more and get more satisfaction once completed.
* Project leads/managers can't keep a tight ship if you stray from your tasks even if what you did needed doing. Instead bring it to their attention and offer your services.
* You will quickly become obsolete if you don't constantly learn new things. Learn on the job if you can but most likely you will need to learn on your own dime.
* If you're going to quit, quit for a smart reason and another job you can step into. Being pissed off isn't a smart reason and gaps in your unemployment records is a big turnoff to employers.
* Lastly and maybe most important, stay organized and well prepared so you can stay relaxed and have fun.
the best way to get girl
thank you
Makes sense. Thanks!
I just landed my first software engineering job, will start in june 2018 right after university :)
Congrats!!
gratz :)
noice ninja skillz
Heyyy we're graduating at the same time!
any advice for a junior computer engineering student?
I increase my test coverage by deleting code
Clever girl!
wow..!!!! this is what i always afraid to do .. but i agree with u . very effective.!
The best code is deleted code.
MrC0MPUT3R what about commenting it out? Like if you don't fully need it. Delete it! If not uncomment it!?
If you need your code it shouldn't be commeted. If you don't need it's is gone.
I've been a software engineer for > 25 years (C++ -> Web Dev) and you're absolutely correct. One thing on deployment is that you usually have several pre release enviroments you can test deploy to (i.e. integration and staging) which makes it a bit less manic. The main thing you learn through experience is that you code defensively.....writing checks on all inputs (v important for JS) and designing all your code so it CAN be tested and therfore demonstrated that it works. Great channel Happy Cat (When I saw you channel for first time I thought it was "the Hippy Cat"!!!!)........ keep it up!
I'm a couple of years away from becoming an engineer, but you have answered some of my questions ahead of time. It was nice to be able to picture the work environment through your own perspective! Thank you.. Hope you have a beautiful, bright career!
I am 100% self taught and never realized the importance of clean code. It may sound obvious, but you don't really get the full impact of how clean code effects others until you work with a team. The book "Clean Code" by Robert Cecil Martin is well worth a read before or during your first job.
I'm learning to code and my professor always comment on how clean my code is. It's simply a byproduct of being a minimalist but I'm just happy I don't have to deal with messy code because I am already feeling like there's so much other things I need to learn in order to be work ready. :/
Yep. The other thing that's really important to understand is when you need to used canned or tried and tested algorithms in order to solve mundane sorting issues. Otherwise, trying to solve those problems linearly would take an eternity.
Paul Binder ha. You mean the thousands of undocumented code isn't clean. I'll remember what it does when I revisit it.... Oh the lessons learned.
This is the first time I've read him referred to by his full name. He himself goes by "Uncle Bob", or at best Bob Martin.
I'm not at the coding game but i'm at the 3D game where if i don't keep my self organized on where my stuff is, on my 'layer' stack in the project i just get lost and that eats time, and as we all know time is money, i'm also self taught but in my case if my stuff is not clean i my self will get lost, i already lost actual projects because i didin't got stuff to the right place before i even begin (moved model away and broke the scene)
dealing with legacy systems is my thing, a lot of work i do is cleaning up after companies thought that they were smart hiring programmers to do sysadmin stuff.
Yes, those are different professions with different mind-sets, different cultures and values, despite some obvious overlaps. This is not yet widely understood within business and general culture.
I loved this video! Please keep making more videos about Software Engineering in general. This was EXACTLY the kind of stuff I've dealt with in my first year as a professional Software Engineer. I'm sure most people have no idea before they started, because I know I didn't. :)
Your points about legacy systems and testing are spot on.
I didn't even know what legacy was until this video and I've been learning to code for a good year now. Yeesh!
My job is to program automated industry stuff. The functions I use are often even older than me!
The function used to control a conveyor is 25 years old and was completely undocumented. Now every time I use a "new-to-me" function that is not documented and I have the time, I try to understand how it works and document it.
And yea. Getting calls at midnight not the nicest thing, but better than seeing the chaos next morning. If what I programmed suddenly failes, I have to be quick. Every minute is up to $10,000 loss. But if you think of that, you panic, and it takes even longer.
Get one person to barricade the whole place, and then remove the emergency stops, disable all security features. Just make the thing work again. A proper fix can wait till I am no longer alone, and have time to figure out whats wrong.
Damn. That is an insane amount of pressure and responsibility on you. Did the code crash often?
Great video. This stuff applies outside of programmers as well. Being a sysadmin for 10 years it resonated with me a good bit.
Hey, this video is really useful indeed. I love the fact im around your age and you are always interested in things that concern me too :) You inspire people! Thanks! Any ideas about how to look for a job that suits you or how to prepare yourself psychologically about the big step out of university?
I'll rewatch this in 1 year after my degree, that's really useful! :D
If you are writing code and you are anywhere from 7 to 700 years old then most of this is already relevant. (Been programming for over 30 years; still teaching people this stuff - now I'll point most of them to this video ;-)
My internship was about developping code for bugs and features directly related to the main app, we were working in one of the main teams as a "Real dev". It was awesome. From Canada, Quebec, probably different in other countries tho
Figuring out what interns should be doing is hard. They're going to start in June with no idea what they're going to be working on and by September they're gone, perhaps never to be seen again. You want an intern doing something useful so you get something for what you pay them, and you don't want them to spend a lot of time getting up to speed on the product. You also don't want to give them something crucial because there is a chance they won't actually get anything done and you don't want them interfacing with other teams because they don't know enough about the personalities and conflicts involved for that to work well.
So, interns wind up doing ancillary stuff that's nice to have, not core features that are in plan for the next release, and they tend to interface only with other members of their immediate team. The implement things like features that are stretch goals or utilities to help with the workflow, and the work tends to have a well-defined beginning and ending points rather than being ongoing. Interns also tend to get stuck with tasks that nobody else wants to do because they're boring or repetitive or something. It's important, useful work, but it's not what the core team is usually doing.
It is great to have access to helpful videos like these online. Good times! Thank you for the quality content!
Here's one: it has to do with teamwork. Sometimes dealing with legacy code, you feel you might have the cure all answer to updating or modernizing, but you are met with resistance that may or may not seem reasonable. Remember you work on a team. Sometimes there are substantial reasons for things being a certain way. Give it time to understand the history of a project, and realize that even though you are smart, so are others. Your way may not always be the best, be a good listener and critical thinker when it comes to other's techniques/methods/thoughts/styles/etc.
Do not be the "type a" dictator that no one wants to work with. Most likely your code will live on after you, so make things maintainable and clear. Fancy tricks are not always a good idea; clarity is better for maintainability and stability.
A bit more... i didn't mean to make it sound like "keep your ideas to yourself"... it was more about being able to team work them. If your ideas get shot down, keep them in your back pocket... refine them. anticipate future problems where your pet solutions will fit, and offer them up when the time is right.
make sure you keep learning. use assignments as learning opportunities. explore options, even if they're not acceptable for the current task, add the ideas to your pocket.
7:15 kinda what you find in enterprise solutions. I've worked on a system for an insurance company where EVERY SINGLE METHOD had to be unit tested. After that there are the integration tests and finally code quality rating from a 3rd party consultant company.
I don't know if this will help everyone but I was able to transition from Operations to Development by showing them things I have done that prove I have a developer mindset like creating scripts or websites such as dashboards for equipment that we needed a dashboard for and finding a mentor was super helpful. My mentor is now my boss so that is another way that someone straight from college might be able to get a foot in the door and get their first job.
Hopefully that will help someone that is trying to break into the development world. Good luck to everyone trying and I wish you much success.
Very interesting and informative video with specific information and case studies. Good stuff bro.
This is one of the most helpful software dev videos that I've watched on UA-cam. It's nice to kind of get a feel of what I'll be going through once I finish school and start working as a dev.
I'm a senior in college, and hopefully starting a job once I graduate. This video really helped me understand what to expect, thanks!
You 've been doing great work with your videos, keep it up!
I was wondering for a while now about what actually happens in a software industry, this video was a great help. ThankYou
Remember, if your doing something fun, and trying to find a solution that haven't been done before. Then you don't have any idea what you do per definition. So everyone asks themselves who they fooled to land the job. Don't panic your not along.
A lot of theory will not fly in reality. Make something simple and incrementally increase the functionality or complexity until it breaks and then fix it.
Any things to know after my first software job? I quit my job.
Aw, how come? And did you quit it before getting a new job? O_o
AnotherUselessNick Many small things, but in combination, i wasn't happy anymore. I needed some change and i want to be a happy cat again :)
I don't have a new job yet but i planned for some month of timeout anyways, so this is no problem.
+Paul Paulson
Heh, I see. Then have a wonderful timeout and best wishes for your next job :)
Johnny How long should you wait to start looking outside of 50 miles from where you live for a new job? I've been in a situation before where unfortunately there weren't enough places to send in my resume in my general area and it had me worried what would happen if I wasn't able to find work and I needed to.
Paul Paulson better not to try than quit. Go to the beach, live off the land....
Great video. You've pointed out really interesting and important topics. I'll recommend your video to my 4th grade computer science students. They'll need to know most of this before they venture out into the job market and start looking for internships or some entry level programmer jobs. :) Once again, great work.
Even though I'm a games programmer, this made me laugh, the first project I worked on involved taking a legacy game (like 15 years old code) and getting it to run using the new game engine, fortunately I joined after the initial stages so I mostly read the original code to determine how the hell the game physics worked for particular objects so we could replicate the feel of the game but writing it in modern C++. And funnily enough, shortly before release I found a flaw in the core of our implementation of the original code from when we first started porting it to modern C++ which was actually shifting the character a small amount to seperate the character from the terrain the opposite way to the original implementation causing them to get stuck in terrain instead. One of the most annoying parts was, that I found out there were run time asserts to catch this behaviour but the guy who ported that part turned them off so the issue went unnoticed and had to be left unfixed as it could have altered how levels played which could not be changed before launch.
Awesome video! For me, another super important item for your toolbox is to have Metrics in your software. Search around for Statsd and Graphite for an OSS solution. Metrics give you "eyes" into the behavior of your systems in aggregating ways that can give more insight than from logs, and they let you see aperiodic problems and behavior that can't be caught by unit testing, such as slow memory leak situations.
I have just been employed in an IT company in Luxembourg and I really enjoyed this video ☺️. Lots of real life examples and good practices (though most companies have their own processes since a long time that bottleneck their productivity).
I will really look forward into that continuous integration tool.
This was a perfectly timed video as I'm just about to apply for a position at Cerner
Thank you HappieCat! :3 You have probably the most down to earth software engineering learning channel I have ever seen. You create videos that talk about the basics of what is really important to know and assume your viewers can go out and learn more in depth about topics by themselves (which is what software engineering is all about). But you have a knack for explaining complex of not-so-well-known topics in a way where a programmer can quickly gain enough knowledge to share a conversation with a more experienced programmer. Your channel is filling a niche many programming channels do not right now and I really appreciate everything you do. Not to mention how uplifting and cheery your channel is, which makes the name HappieCat fit so well! Thank you so much and keep up the amazing work you are doing!!! :)
This is the first video I've watched of yours and it was great. The information is spot on. Matches my experience exactly.
i like your presentation style, thanks for talking about this kinda stuff candidly
A lot of work places allow for very comfortable dress code. One thing that's been lost to the ages is that a formal dress despite informal dress code is useful for several reasons. 1, 2 and 3) Getting into comfortable clothing at home helps your mind split away from dealing with work problems, especially if you find yourself thinking about work problems while at home. 4) Professional attire just makes people take you more seriously, so if you have to tell a superior that something is difficult because of some arbitrary technological constraint, it helps.
Ask questions, question everything maybe not openly but listen and try to find simple solutions to hard problems.
Sometimes people that worked on a solution for a long time create complex solution and oversee the simple quick fix.
That fix might be the right pragmatic solution.
I knew a ton of HTML (and CSS) and decided to make a website for someone, since I didn't have any experience, it was a clusterfuck for the first month...Yep a month, no database, content adding system...nothing, just a couple pages. Must say that now that I have some experience I am able to make this website in around an hour :D
Although the CSS looked frickin amazing on the site, colors were nice aswell. I also noticed the site has been updated many times and about a year ago, I found out the guy I made it for learned HTML and CSS +JS and absolutely recoded it :(
That's been my experience in the last 3 years... What first took a month now takes a minute :P
Never release on a Friday. Just don't do it.
This is the most often broken rule ever, even by those that propose and push for this rule... (I'm including myself here)
DE usually updates warframe on thursdays and fridays
Maybe as a corollary for the CI folks, don't push your build and go home for the day. Had way too many broken builds to fix after hours.
Wube Software release Factorio updates every Friday. Works like a charm.
there's nothing much you can change after a video's release. unlike software
My first job.. I had to update and maintain 20 year old classic asp code... My ide wasn't visual studio it was notepad++
It was hell
What do you do now?
Visual studio is complete shit. U t better off without it. Try using sublime
Tiari
Notepad++ is actually pretty sweet in my opinion. I used the shit out of it for Assembly code. But, I am not forced to use it 8 hours a day, so that may be a difference of opinion right there.
Tiari
hey! Don’t bad mouth Notepad++ xD
Hey, thanks for the video. I'm applying for an internship, and from what I know you have this mentor at work throughout the internship who is there to help you, and you aren't really assigned the same tasks as the others. So yeah it's as close as you get to understanding the real world, but there will be a lot more after you actually do graduate and start looking for work as a software engineer..
I've been looking after a VB6 program for over 18 years. It still works and I'm still adding features. It may be finished one day (like Java, or Acrobat Reader)
As a QA tester I find the #4 very funny, because my job pretty much consist in acting like the users that you describe 😂😂
When given a problem to solve, time block the solution. If you can't find the solution in the time block you determined, take a break or ask for help. Sometimes we developers get a bit stuck chasing down one solution path and become blind to other solution paths.
Damn, this vid is amazing. Here I am in university and I'm scared shit-less that I don't understand how everything works together but I learned a lot just from this one video. I just subscribed. :)
Software dev for 4 years. I approve this video.
It's been so long since I've seen you! Bookmarking your channel right now
Thank you for posting this, it's a great resource.
I super duper love this video. You could be my favorite new hire by paying attention to all of these tips!
I've been thinking about taking up coding. Thanks for the heads up.
thank you for sharing your experience and knowledge. keep up the good work. I look forward to checking out your game. good luck
What an infectious smile(smirk) you always have on. Watching your videos make me happy. That's needed in the tech industry.
If I had a daughter I would want to her be a smart, happy, positive person like you.
But now I can't help wondering what you look like when you're NOT happy?
You look so happie!!
ha
To me she looks much more adult for an unknown reason. Maybe the lights have changed.
Well, yeah. She's putting the best of herself out there for people to see.
she looks a bit tired tbh
お前は幸せ猫!
Hey, I'm a CS 2nd year from London, you've got a new subscriber! great insight video, thank you :)
About that experience requirement for entry level coding jobs: The kind of experience that coders need to get between learning their first programming language and starting their first coding job is not something that can be taught in employee training. Basically, it's the experience of being burned by your own mistakes over and over again. It also takes time for the basic programming concepts to really sink in and to overcome some common mental blocks.
Here's a question I use to figure out whether someone is ready for an entry level coding job: "Make a boolean variable nabed 'test' and assign to it whether or not the value in 'x' is greater than 3." Here's the wrong answer (C++ syntax, please excuse the lack of indentation):
bool test;
if (x > 3) {
test = true;
} else {
test = false;
}
next_ghost -why is this wrong?int x or something?
I don't want to reveal the correct answer right away so I'll just give you a hint. The code does exactly what the question is asking for. But *how* it is done reveals that the coder has a mental block due to lack of experience.
next_ghost well it could be taking user input, using a function or commenting? im really curious whats the right answer :)
Bill Ill: Exactly.
Hasasinful: Being able to answer that question correctly on your own also usually means that you don't spend all your mental energy just on getting the @!ing code to work anymore. Instead, you'll have enough energy left to worry about all the things that make the difference between code that somehow happens to work and code that is actually good. But it's just a rule of thumb. As you can see, there's no real causal connection.
Difference between code that somehow happens to work and code that is actually good.
I am gonna think about it.
I have a question though.If i am working with other developers maybe i should use the most basic form of coding because if they dont understand it we can't work as a team.Is it about optimizing the project?
Currently im learning python/django so true answer didnt even cross my mind i know its not an excuse but im learning from you.
Thanks :)
As a 20+ year veteran programmer, the one thing that always astounds me, and I'm not sure if it's the same in the US as it is here in Canada, is that colleges and universities don't teach anything at all about source control. The number of times I've had to mentor a new developer and they don't even know what source control IS... Note I absolutely do not blame them (the junior developer). I blame the schools for not teaching it. I then take a fairly significant amount of time to teach them the ins and outs of source control, as proper use/understanding of source control is critical to avoiding simple problems. Yes, source control systems are usually setup to prevent most issues of code being overwritten, old code coming back from the dead, etc; but in the end it's still just a computer that can only do precisely what we tell it to, so I tend to not trust it. I'm very, very careful with source control. Make sure every file the system thinks is changed, I did actually change (compare). Then compare line-by-line every change. Make sure I'm using the latest version locally before attempting to merge. Comment EVERY checkin with not only the ticket/issue number but a summary of what the change is. Do many small checkins instead of large checkins. Check-in daily, even if it's just to a working branch or shelveset. Etc. :)
Why have I not found you before? Your channel is awesome! of I had seen this video a year ago my life would have been easier, Thanks!
I always wonder. Are there remote jobs out there for junior devs. Been looking all over the place.
Stuyk they pay poorly. You can check out sites like freelance.com for opportunities. You will be competing with people who can live for 10 dollars a day. good luck its unpleasant to take a 20 hours job for 20 bucks. It is paid experience though.
remote work so what website should they go to and prove their decentness on a scale of 1 to 10 to participate in these dev shops? they said been looking all over so my guess is going to the ye olde dev shoppe closest to them didnt work or is not an option. I offered a place and a warning of difficulty. denoting my comment doesnt improve your vague comment, or help anyone at all.
What you really should prepare for: The company doesn't have code review, unit tests or reliable versioning. Legacy code though, yeah, you will probably have that.
I'm glad to see you're still happie :)
God! i wish someone had explained this thing to me when i started.
My first job consisted on maintaining a huge 10 years old C/C++ app with 0 documentation and always on fire within a team of 90 developers around the world
I learned all this things by force haha, but in the bright side anything after that was heaven in comparation
I'm right at that moment in life. Preparing my first application this week and I'm pretty scared. ...but not scared of legacy code. During my bachelor's thesis I was at one point just given a file with a couple hundred lines of uncommented code. It was mathematical stuff, so only calculation and no library calls or the like - and literally every variable was a single letter. Really, the worst case of dirty code from the swamp. Although I'd hate to work with crap like that again, at least I have seen how deep the rabbit hole can be.
Super helpful video, thank you
Insightful, practical, egoless, and helpful. Subscribed!
The company I work for has a small IT department. So Unit Tests come down to "Do I delay new features and bug fixes or do I write unit tests?" Sure, in the long run they might be extremely helpful, but I don't always get the time to do so. So be aware this might be a scenario for you.
Super useful video, thank you!
You 100% nailed DotA. Sometimes you patch, get one game in and then have to patch again.
I lost your channel name a long time ago, and I'm so glad I found you again!
Girl I love you this is exactly what I was looking for
My philosophy on unit test is that they are better than documentation. Often its way too difficult to write good in-code documentation to cover all the special cases. Unit test paint a better picture.
In my first internship, I needed to rewrite an old MS Access program coded in VB. I was the only one there who could port it to .NET.
I've made a few bucks on occasion by knowing VB, or the antique Windows API. Things that I thought were dead and gone long before.
hey girl thanks for the video you're great although I don't understand many words I'm ESL and not real american what is the word you use on min 14:00 dona patch? or doris's patch.
She used an acronym: DOTA. It's a video game. ✌️
I am not a software engineer. I am a mechanical engineer with a heavy inclination towards automation. I started my "job" (in my startup) in coding firmware for an embedded system. The problem with me is that I am not able to read other people's code. I found an open source firmware that is close to what I do but it's not exactly the same. I tried porting things from it but I could not figure out how. So I decided to just write the whole thing from scratch and now I am stuck with a half baked software and cannot figure out how I should correct it. The sad thing is that I am the only guy in my team who knows a thing or two about coding. The rest are pure mechanical engineers. And we don't have money to hire someone at this point. Its getting frustrating to a point where I just want to give up.
what are you building?
Jeremiah Fernandez
A tape laying machine to make carbon fiber parts. Look up automated fiber placement machines on UA-cam. Something like that but a new process. I basically have to run 5 axes CNC with controlling fiber feed, resin pumps, cutter and spray.
Vaibhav Shah cool! i used to study mech eng but quit after 2 years
Would you please make a video of how a professional developers work flow goes on a day to day basis?
Regarding job spec (3 years experience for entry level job) I think that's largely a disconnect between HR and operations... Then again, I don't know any HR or ops in big firms
Any tips for transitioning in the opposite direction? That is, professional dev to student?
I do agree that sometimes internship is not enough because they will assign less task. what do you think, If I'm able to build like 5 large scale projects or more vs intern. I think I will cover much if I build the things I'm interested in.
This is great advice, thank you :)
Love the bleeding analogy, very accurate and visual :D
We have a legacy system that’s 20 years old. People have just kept bodging on top of it.
Oh I could organize the heck out of code. I remember seeing somewhere though that adding too many comments can slow down the code once you get to large scale project?
Very useful information here
I feel like school only gave me the barebones.. There are soo many beginner level tutorials on the web, but its really hard to find intermediate lessons. I've been working for 2 years at a company as software dev and I find it hard to grow
A quick comment about code reviews that my team has been doing lately is treating them as a place of discussion to spread learnings among the team as opposed to just nit picking. For example if you see something you don't understand, ask and spark a discussion, ask them why they did things a certain way or just give them a hi-five if you see something really cool they've done :) all the best devs!
You are like my hero, I want to work towards being like you and I want to go into this software dev kinda stuff when I finish school and uni. It just seems really intimidating and quite scary but I'm sure if I work on it, it'll all be fine.
Which also leads to a question about working towards what I want to do, I'm learning Java programming and I just want to know if there's any exercises or challenges or projects or anything that anybody recommends to help develop programming skills?
This is great, thanks
As a employed dev who finished uni about a year ago, here's my only advice. Don't spend your whole life studying at school. The time is simply not worth it. From my experience, no one gives a hoot what school or diploma you have if you can prove you have the right skills for the job. My boss doesn't have any degree, but his knowledge software development is so insanely superior to any course you can take, because he was honing his skills everyday for like 2 decades now. A nice diploma will certainly help you to get noticed by HR, but no one will hire you if you can't prove you have what it takes for the job. You don't need all the fancy degrees if you want to be a dev. Being able to solve real problems is the most crucial ability to have and it only comes with time. Get hired, get better and never stop. Always forward.
Heyyy you're back!
Cool video and really helpful. But I do have one doubt for those out there working. Are on-call duties paid for? I mean I guess anywhere in the world you get paid for a set amount of hours a day within a timetable. So waking you up in the middle of the night once might be okay, but several times? Who pays for that? Or is software personnel supposed to slave away like that?
Just curious, again I don't know how it works.
I'm working as a student as a software engineer and the thing I wish I knew is: Work on languages/projects you're interested in.
I'm working for over a year now and I feel sad every time I have to learn something new about a big ass boring financial database.
a) I'm really disinterested a lot of the time and forcing myself to learn something I dislike is stressful and tedious and ultimately ineffective.
b) I can't really quit, at least not before finishing college... because of the way it looks to the employer.
Everything else you'll catch up to in time...I feel like trying to focus on not forgetting ''legacy code'' before you even got the feel of the real work experience is pretty useless (and most of the stuff mentioned in the video).
You're a programmer for goodness sake, you'll learn in time, you'll learn from your mistakes, you'll become better...just keep learning if you want to and if you're ambitious about it.
"stop the bleeding" also known as "making a workaround"
I really like your videos!
First time I see you in person... but I still see you as a happy cat :P
i love ur videos sooo much soo helpful and looking forward to that game ^^
What is the point in collage if the learning curve is that drastic in the real world.
to get reference, and prove you can be a slave to the system
otherwise there is no point
Hi
I want to learn proggraming to develop games but i dont know how should i start it. Im living in iran and i cant buy curses from pluralsight or other similar sites.plz help me.
Hi HappieCat, do you aim to work in office? As a dev you have many opportunities to work remotely, but this might not be the best idea for starters. And there is another con to remote working - once you go remote, you never get back to office :D (6 years remote here)
Thank you
Yaaayy great video this is awesome 🤓
Thanks for this!😊☺🙂
Thanks for the tips, smile!
Wanna make a video about those college programming paper-and-pencil examn?
How is the game going?