I want to know what are the best resources available on internet for .NET developer to enhance knowlede daily. Please explain some useful tips to become a successful deve loper and stay ahead in IT industry.
Sainath's Advice on Tuesday, July 05, 2011 :
There is no perfect answer for this question, but I will make an attempt.
You are right on track when you say "enhance knowledge daily"
- daily deliberate action is the way to go ahead and stay ahead. Rather than focussing on specifics, I will first dwell on the fundamental thought processes i.e. principles which have helped me. Having said that, the software development space is changing rapidly and yesterday's plans and conclusions no longer hold true in light of new information. But there are patterns which have helped me and that is exactly what I will touch upon.SKILL = KNOWLEDGE + PRACTICE1) Mastery over fundamentals
First and foremost, you should have absolute mastery over the fundamentals. What does that mean? Basically, the C# language specification has undergone a lot of changes / additions since the time the 1st version of .Net was released. You need to have a rock solid understanding of these language constructs in detail. Do not write 2.0 type code when the 4.0 development environment has been provided to you. Mastery over fundamentals will take some amount of time - but in my opinion it is the best investment and will pay handsome dividends. Reason - fundamentals do not change over time. Pros who have mastered OOAD have not had to revisit it in the last 10 years, all programming languages follow the same OOAD paradigm. True, there have been additions / enhancements but the core remains the same. Yet I regularly meet developers who know how to code a WCF service but do not have a strong grounding in OOAD. As a consequence the code they write has to get refactored after a review. Without the strong understanding, they are actually building the wrong skills and developing bad programming habits. A simple effort on their part to "learn how to write better code using OOAD" would dramatically raise their market value. I hope you get the point I am trying to make over here.
Referring to OOAD, it is not enough to just know what encapsulation, abstraction means - rather, you should be able to see a real-life scenario for ex. a bank branch comprising of a bank manager, teller, cashier, etc and map an object model for the scenario.2) Pursue excellence
This is a big one - you must have observed different people having different strategies in the IT space. Some are in the race for collecting certifications, the moment a new certification is announced, they are the first to complete it and proudly put it against their names. The other strategy is to add new technology buzzwords on the CV after gaining an "overview understanding". To some extent, it is the environment and pace of change in IT that prompts most people to do it. The more buzzwords, certifications you have on your CV, the better chances your CV has of falling in the filter. This is a correct strategy, but in the long term, this is not enough. Pursuing excellence, in my opinion means to benchmark yourself against the best in the field and try to become like them. Effectively, it would mean closely following some of the below persons.Martin Fowler
), most famous for his writings on software architecture. "Patterns of enterprise software architecture" is a book every software professional should read - you will suddenly re-discover a lot of stuff which you have been following all along but in a new light.The word "recordset" will sound more like a "pattern" and less of a ADO.Net object once you have understood what Fowler is saying.Mike Cohn
You cannot afford to ignore Mike Cohn if you aim to gain mastery over Agile software development. There is a lot of freely available great stuff on his site. Below is a list of some fantastic books written by him.
"User stories applied" - discussed requirement gathering using user stories in detail
"Agile estimation and planning" - a lot of persons say "you don't plan in Agile". That is plain ignorance - truth is, you plan more often. Please read this book to understand estimation using planning poker methodology and planning in Agile
"Succeeding in Agile" - compilation of real-world experiences of successful and unsuccessful adoptions of Agile in which Mike was involved. This will inform you about potential pitfalls to avoid if you are involved in an Agile transition.Ken Schwaber
), founder of Scrum along with Jeff Sutherland
You gain a strong hold over Agile using Scrum by reading up what Ken Schwaber has written on the topic. With that foundation, you are then ready to dive into the more advanced topics dealt by Mike Cohn and other experts.
"Agile project management using Scrum" - to gain a strong grounding in Scrum fundamentals
"The enterprise and Scrum" - If you happen to be leading a Scrum transition in an organization or are a part of it, this will be an invaluable guide book for you.Ron Jeffries
Once you have become proficient in Scrum principles, you will automatically feel the need to strive for technical excellence. Part of this journey involves mastering XP, TDD (Test driven development), etc. Ron Jeffries is a leading authority and thought leader in the field. Makes sense to follow him.J.D.Meier
I have been a die-hard fan of J.D. Meier ever since I read some of the work done by his teams on the patterns publications of Microsoft. The patterns are so well-designed enabling you to quickly find the information you need when working on a project. Even otherwise, you cannot claim to be architecturally sound if you are not conversant with his works. Some prime examples are listed below:http://msdn.microsoft.com/en-us/library/dd673617.aspx
Microsoft Application Architecture guide - 2nd editionhttp://msdn.microsoft.com/en-us/practices/bb190351
Complete catalog of patterns and practices publications
And J.D. Meier's general advice on other topics is also very helpful, below is an example:http://gettingresults.com/wiki/Focus_GuidelinesCraig Larman
Another expert in the field. Martin Fowler considers the below publication the best on the topic the title stateshttp://www.amazon.com/Applying-UML-Patterns-Introduction-Object-Oriented/dp/0131489062
The man who wrote the classic on OOAD and other topics as well.http://www.amazon.com/Object-Oriented-Analysis-Design-Applications-2nd/dp/0805353402
Classic on OOAD
He is currently summing up all his experience and working on the below book.http://www.handbookofsoftwarearchitecture.com
Another master who has written various classics like "Code Complete", "Software estimation", etcKent Beck
Expert on extreme programming, test driven development. Pete Deemer
He is absolutely brilliant when it comes to Agile and highly knowledgeible, I say this from 1st hand experience having attended his training session. He has written some very useful concise books, please check the below links:http://www.goodagile.com/distributedscrumprimer/http://www.goodagile.com/resources/roleofthemanager10.pdfAlistair Cockburn
Most famous for his book "writing effective use cases". Lots of useful stuff on his blog as well.Scott Ambler
Another thought leader in the field.Kalen Delaney
- the SQL Server guru.http://www.insidesqlserver.com/http://sqlblog.com/blogs/kalen_delaney/default.aspxblogs.msdn.com
This is a really great place to learn but you need to have good searching skills to find what you are looking for. Packed with advice from experts - and this is mostly real-life experince and not theoretical stuff.channel9.msdn.com
Another great place to gain a better understanding and multiple viewpoints.
The pursuit of excellence in any field is not an easy option for many people, and I think below are some of the reasons:
- The pursuit of excellence is a life-long thing - only those with a long term focus can take the journey
- Requires self-discipline - walking on this path would mean saying good-bye to TV and other entertainment options.
- You need genuine interest and a deep passion for the field - when you read stuff posted by these masters, it should make you excited, absorb you and you should lose track of time. If this is not happening, probably software is not your true passion. It could be something else like painting, photography,etc. Passion is only when your hands, heart, brain, soul and environment is in complete sync and you lose track of time, not otherwise. It is when you get up energized after spending hours at your desk and not exhausted. It is when you reluctantly head to sleep since nature intends it when you would rather continue working.
- If the field automatically captures your attention for long periods without any conscious effort on your part, you have found your passion. If you have to discipline yourself to focus on your tasks, it's not a passion.
- Results may not be immediately visible in the short-term and you should not look for short-term results either. It's called delayed gratification, much like the stocks which are retained for many years and give stupendous returns at the end. The same logic applies here.
- You will need to ignore the masses - if you are following the guy next door who in turn is following his next door guy and eventually everyone is going round in circles. Choose your mentors and people who influence your thinking with utmost care - as a wise man once said "You can't fly with the eagles if you scratch with the chickens." Make sure you have identified your eagles carefully - a very small percentage of the human population pursues excellence.
In the internet age, knowledge is available to every person , the question is, will you avail of this incredible opportunity that you have?3) Embrace personal growth
- Be ready to lose in the relative sense - be aware that you are gaining in the absolute sense. There may be points when some peers are surging ahead in their careers "positionally" - in terms of titles. Always focus on the role you are playing in any organization, the size of the problem you are trying to solve (whether you are having to step out of your comfort zone) and what qualities you are developing as a result and what growth you are experiencing. You grow in solid steps when you pursue excellence - however, this takes time and commitment which most persons are unwilling to invest in.
This is a critical building block which most persons are missing, and in my opinion it can make all the difference in the long term. This includes developing a basket of skills, some of which include - leadership development (becoming a better leader), goal setting skills, communication, time management, etc. I was convinced about this when I saw even J.D.Meier working on his skill areas - please check the below links:http://blogs.msdn.com/b/jmeier/archive/2010/11/30/leadership-books-a-z.aspxhttp://blogs.msdn.com/b/jmeier/archive/2010/05/26/greatness-distilled-lessons-learned-from-leaders.aspxhttp://blogs.msdn.com/b/jmeier/archive/2010/01/25/career-growth.aspx
Life is short and you will not have the time to figure it out all by yourself. The best approach is to follow the greats who have walked the path before you - and learn from their experience rather than wasting time trying to learn everything from personal experience.
These are the 3 pillars or principles from my limited understanding - once you have understood these, you should be in a position to identify the specifics you need to start moving and keep moving forward.
All the best !
Shoeb2222 said on Tuesday, July 05, 2011
Thank you very much for such a detailed advice, I truly appreciate your suggestion, will work on it.