#381 in Computers & technology books
Reddit mentions of Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development (3rd Edition)
Sentiment score: 7
Reddit mentions: 9
We found 9 Reddit mentions of Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development (3rd Edition). Here are the top ones.
Buying options
View on Amazon.comor
- Prentice Hall PTR
Features:
Specs:
Height | 10.25 Inches |
Length | 8.5 Inches |
Number of items | 1 |
Weight | 3.76108618972 Pounds |
Width | 2.15 Inches |
Amazon links to the three mentioned books:
Agile Principles, Patterns and Practices (Robert C Martin)
Applying UML and Patterns (Craig Larman)
Art of Unit Testing (Roy Osherove)
Don't leave on that account alone. If you have a passion for programming, these concepts you missed can still be learnt. You do not stop learning once you finish your studies, on the contrary, CS is one of those professions where you have to constantly update your knowledge pool.
I would not worry as much about the details of what a protected class and if a subclass can access private members or not. Master instead concepts like encapsulation, separation of concerns, abstraction, ... concepts that transcend language-specific syntax. If you are actively studying by yourself, you will get always improve.
If you want to polish your OO skills, I highly recommend you find yourself a copy of Applying UML and Patterns. I would also recommend reading Code Complete 2, a must-read for all software developers.
The Stanford Algorithm book is complete overkill in my opinion do NOT read that book. That's insane. Read it when you've been doing programming for a while and have a grasp of how it even applies.
Here's my list, it's a "wanna be a decent junior" list:
​
Reasoning: So, the first book is to give you a sense of all that's out there. It's short and sweet and primes you for what's ahead. It helps you understand most of the basic industry buzz words and whatnot. It answers a lot of unknown unknowns for a newbie.
Next is just a list languages off the top of my head. But you can pick anything, seriously it's not a big deal. I did put Java first because that's the most popular and you'll like find a mountain of resources.
Then after some focused practice, I suggest grabbing some SQL. You don't need to be an expert but you gotta know about DBs to some degree.
Then I put an analysis book that's OOP focused. The nifty thing about that book, is it breaks into design patterns nicely with some very simple design patters to introduce you to design patterns and GRASP.
Then I put in a legit Design Patterns book that explains and explores design patterns and principles associated with many of them.
Now that you know how code is structured, you're ready for a conversation about Architecture. Clean architecture is a simple primer on the topic. Nothing too crazy, just preps you for the idea of architecture and dealing with it.
Finally, refactoring is great for working devs. Often your early work will be focused on working with legacy code. Then knowing how to deal with those problems can be helpful.
FINAL NOTE: Read the soft skills books first.
The reason for reading the soft skills books first is it helps develop a mental framework for learning all the stuff.
Good luck! I get this isn't strictly computer science and it's likely focused more toward Software Development. But I hope it helps. If it doesn't. My apologies.
I've always felt like C is a good language for a programmer to think in. With that being said, I often recommend that a programmer who doesn't need to know C++ learn C if (s)he wants to learn something that will improve his/her skill across the board.
C will give you a good appreciation of what's going on behind the scenes in many of the languages you use. You'll get an appreciation for how passing by value and reference works in other languages thanks to pointers. You'll learn how your strings are actually managed in memory. You'll have a better understanding of how many of those built-in generics you may use (List<>, LinkedList<>, HashMap<>) actually work, because if you want to use them in C you'll have to implement them yourself or download a source file and read it to understand the author's implementation.
This knowledge will help you build more elegant solutions. You'll be less sloppy and gratuitous creating new strings anywhere and everywhere, and may even find yourself using references more often. Your code may or may not be cleaner, but you'll have an appreciation for how and why you should write code for runtime efficiency. You'll be more likely to use the right data structure for your task at hand.
The best part is that C has a great standard resource for learning the language. Pick up The C Programming Language Second Edition and read it cover to cover. By the time you're done you'll know everything you need to know about C, and will have a wonderful reference in the even that you need to use C later on.
If you want to improve your object-oriented programming skills, you don't need to learn a new language. It is best to learn OO independent of any language in order to gather a strong understanding of the underlying concepts and to be able to apply it to any language. Craig Larman's Applying UML and Patterns is the best book I've ever read on the subject.
Senior Level Software Engineer Reading List
Read This First
Fundamentals
Development Theory
Philosophy of Programming
Mentality
Software Engineering Skill Sets
Design
History
Specialist Skills
DevOps Reading List
Some great text resources on the subject:
Getting started online resources:
Hope this helps.
I'd suggest to work on analyzing and designing before coding.
Analysis is about breaking down the problem (the use cases the software needs to fill).
Design is about building a solution out of components, assigning responsibilities to those components and identifying their relationships.
My rule of thumb is: if what I'm about to code is complex enough that I have no idea how I'll piece it together, I'm not ready to code yet.
A whiteboard or a sketch pad and basic diagram drawing skills are really useful. The point isn't to draw a blue print, it's to sketch out ideas about how to articulate your components and to gain insight on the hard parts through visualization.
The challenge is structural (how many classes? whose method is this? composition or inheritance?) and dynamic (A calls C, which calls B, which asynchronously calls X… is this optimal?).
I've really enjoyed Larman's book on Object-Oriented Analysis and Design. The title sounds much more narrow than the actual subject matter.
its actually in the http://www.amazon.com/Applying-UML-Patterns-Introduction-Object-Oriented/dp/0131489062 which is used in many educational institutions. still see it used on my friends education and he just started in january. i had it back in 2005 or so
I think this is the book they use for software engineering planning https://www.amazon.com/Applying-UML-Patterns-Introduction-Object-Oriented/dp/0131489062
I'm also still learning but it talks about iterative design of OOP and UML to layout the designs. I wonder what other books there are for this, but his question is similar to mine. OP may be a little further in learning than I am since I'm still working through data structures and algorithms of my C++ book.