5 Sure Signs You're No Longer Junior Programmer

preview_player
Показать описание
Try your skills on the examples from this video and assess how much you have advanced from the days of junior-level programming!

▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
👨 About Me 👨
Hi, I’m Zoran, I have more than 20 years of experience as a software developer, architect, team lead, and more. I have been programming in C# since its inception in the early 2000s. Since 2017 I have started publishing professional video courses at Pluralsight and Udemy and by this point, there are over 100 hours of the highest-quality videos you can watch on those platforms. On my YouTube channel, you can find shorter video forms focused on clarifying practical issues in coding, design, and architecture of .NET applications.❤️
▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
⚡️COPYRIGHT NOTICE:
The Copyright Laws of the United States recognize a “fair use” of copyrighted content. Section 107 of the U.S. Copyright Act states: “Notwithstanding the provisions of sections 106 and 106A, the fair use of a copyrighted work, including such use by reproduction in copies or phono records or by any other means specified by that section, for purposes such as criticism, comment, news reporting, teaching (including multiple copies for classroom use), scholarship, or research, is not an infringement of copyright." This video and our youtube channel, in general, may contain certain copyrighted works that were not specifically authorized to be used by the copyright holder(s), but which we believe in good faith are protected by federal law and the Fair use doctrine for one or more of the reasons noted above.
Рекомендации по теме
Комментарии
Автор

În our hearts, we all know that isPublished was just fine.

CrossbowBeta
Автор

0.75x speed to listen to Uncle Iroh coding.

DevilDriver
Автор

I program in C. it's so funny that I don't have to worry about these choices :-)

theevilcottonball
Автор

While it feels natural to write OOP like this and I do agree on all of your points, you're presenting it in a way as if to say "If you don't do this you suck/if you do this you're not a junior" and neither of those are true.

A junior developer isn't someone who doesn't understand how to model their classes. It's someone who is inexperienced and needs more guidance to complete their work and they often get assigned easier work to do.

Because of this definition, the technical ability of a junior lies on a huge spectrum and there are even times where a junior can write beautiful code, but still be a junior. There are also plenty of seniors that can write terrible code, but they're still seniors deserving of their title.

That's because good code doesn't necessarily imply seniority (i.e. it can but that's not always the case), it comes from continuously studying code and having enough time to write the code. Your coworkers will love you if they read your code and they can both understand and be able to modify it easily when requirements change, and you will love your past self if you made things easy for your current self reading your code.

You don't get a title change because you now apply more theory into your code, or because you've stopped using static members when you don't need to.

You get a title change when you become more independent and reliable to your team, so for the juniors reading this, that's probably what you should focus on. Good code will come naturally as you get more exposure to good code, with experience and as you study.

dimitriscollier
Автор

Sign you are truly a Senior Programmer: you appreciate simplicity.

leptosurreal
Автор

Sorry, I usually like your videos but there too much generalization in this one. Sure, in theory, most of this sounds good but getting better is also to know when to make exceptions that improve the system.

Also, a non-LINQ four-liner is fine and should IMO pass a code review, that’s a nitpick.

yannisgoogleapps
Автор

It feels like sometime it's over designed and not easy to understand... Basically it makes your code unreadable.

mariusgurau
Автор

It feels like I'm being lectured by Dracula😅😂 (I do not mean to offend), imposing thousands of years of knowledge in a few minutes...
Still learning to program, so not all of this makes sense yet.

AstonJay
Автор

I can think all 5. Problem with 3, 4 and 5 depends on the language you use. Some language makes it easier than the other.

minma
Автор

Good luck storing your books in a database with your hierarchies. Instead of having one property, you will end up having tons of classes and tons of type checks. Overengineering. Developers of any level, please, don't do that everywhere, just because someone from Youtube told you that if you don't, you are still a junior! Always think before making any abstractions. They are good, but not everywhere.

АртемБаляница
Автор

I feel like the true seniors are able to evaluate the ask for scoping and make decisions on many of these concepts. Perfect OOP is not always the most readable nor is it always worth the time. Also, the concept of “perfect OOP” is certainly lang dependent despite the many shared paradigms you typically encounter

cxarra
Автор

And what are the drawbacks of just declaring

public DateOnly? PublishingDate { get; init; } for instance?

In my opinion, it does the job and not overengineered in our model when book has a unique publishing data in all country / project is country-specific

Null value  means it is not scheduled, Date in the future is scheduled, current and past date means it is published.

dmitryye
Автор

Your videos have a way of simultaneously making me feel a lot dumber but get a lot smarter. It's really quite impressive.

tmjones
Автор

As someone who struggled to remember terminology i found myself worrying a lot at the start of each point, but as you explained each situation it made sense and reminded me a lot of the same thought processes i go through when designing solutions, and i always felt better at the end 😂

sVieira
Автор

The simple, the better.

(when it works, don't touch)

AMMIN
Автор

I’ve subscribed to these ideas for a while. The problem is to convince the rest of the team as well.

I’m getting there. I’ve managed to show how a bit of restructuring can make the difference between “ugh this is going to require a huge refactor” and “this unexpected feature request is trivial to add”.

oscarfriberg
Автор

As an electronic programmer, all I'm seeing is hieroglyphics

martinrodriguez
Автор

I really don't get this problem, just make a const isPublished method that check if the publishing date was in the past.
If you want a requirement for the publishing date, then solve it before the construction. If the publishing date is based on some other book data, it could be solved through a method like date). If the required data isn't inside the book class, the book class should either get the valid date or only have a interface for aquiring the date (but an interface would simply add an abstraction layer without any benefits, but you seem to like useless dependency injections).

If the publishing date is not clear at creation of the book you could make the publishing date an optional, that could be set through a setter.
If you want a publishing event simply filter the books with the date in question and you are good to go.

Quite honestly this code at the end looks messy, just because of adding a "publishing event" without specifying what that is or why it need to exist.

MrDavibu
Автор

1. Basically use interfaces and favor OOP
2. Visibility should help you program, public and private are your frenemies, but static is like the guy who handles everything, but forgets about it when you ask them how they did it.
3. again public private, just "thought out". (for gms2 users: if instance exists)
4. Understand allocation (pointers? barely recalling them from C++)
5. Making an object a constant is valid and nothing's wrong with it lol.

thebuffman
Автор

I feel like in a real world application the Book class would likely be ORM mapped or used for serialization/deserialization, and in that case I'd try to avoid any sort of polymorphism until I'm sure it is really needed. It's a pain to map that stuff to database and to figure out what types should be used when parsing. Immutability doesn't make sense in that case either, unless you are really sure you want a duplicate of the book in the DB. I'm assuming that the class was supposed to be used in a different way, but I'm struggling to think of an architecture where the Book as you describe it would make sense

Diamcreeper