Archive for the ‘learning’ Category.

Injecting new skills into the team

Last week I passed through a very nice experience, so, I couldn’t hold my self about the desire to share it.

Out team needed to build something really new and a bit though, also we have a very mixed skill sets in the team, furthermore we had to bring awareness to everybody about what should be done and how, but we had no easy way of doing this. The solution couldn’t be better, we defined two sessions of what I called “team design/programming”, where we locked ourselves into a room, using a notebook and a 50″ TV, this way everyone could see what was happening. We started presenting the goal of that session, what we would look for, what to build, the platform we’re aiming and so on.

After that we started coding and all of us could code a bit, fix, re-factor, bring new ideas, ask questions, discuss and help. That was really an amazing experience, in despite of the fact that sometimes someone wanted to dominate the notebook ( that includes myself :D ). The bottom line of these sessions was a well defined platform, everybody having the knowledge about what we did, why, how, the ability to provide support to other teams, and now we have these new skills into the team. That was really astonishing.

Bringing new people into the team

Change is always something stressing at some level, because there is uncertainty, energy must be spent to adapt, react, change minds, learn new skills and so on. I’ve passed through the experience of move from companies and also moving from different teams inside the same company, and I learned something very useful about it.

It’s a very simple rule of making the newcomer comfortable with the new environment, making things clear and easy to him/her, give them time to breath and perceive the environment. Also, the team should be supportive to this new person, because the adaptation will be at the speed of light in comparison of any other kind of environment.

A long time ago…

Hi All,

Wow, it has been a long time since my last post. Unfortunately I’ve been doing so many things at once, and I couldn’t even write a single line. But now I have a free time to do this.

So, I promise I will be posting interesting things here again. One thing among the other 10000 is my preparation for the IBM SOA Certification, and I’d like to bring here some discussions about it. I found very interesting things in my studies :)

Another thing I will be posting is about EAI tools, such as IBM MQ, TIBCO, ServiceMix and so on.

So, stay tuned !

See ya.

A good bookshelf

Well, I’ve been postponing this for so long, but not anymore :)

If you didn’t already read my post about learning, please read it first.

These are the books I consider nice books to learn how to program, what is agile methodologies, OO/OOAD, Java/J2EE/JEE and Software Architecture.

1) To learn learn Java and JEE you should read this books :

Head First Java, 2nd Edition -> This book is a very nice and didactic introduction about Java (Fundamentals).

Test Driven Development: By Example -> The title talks for itself.

SCJP Sun Certified Programmer for Java 6 Exam 310-065 -> If you want to take the certification and have an in depth explanation about some core java subjects, this book is for you. (Fundamentals)

Head First Servlets and JSP -> This book is about Web Development with Java, and also a help to pass in the certification, this book is part of Head First Series, that is a very didactic reading.  When I was studying Java Web Development, I used the next one, but feel free to choose the most convenient 4u. ( Web Dev )

SCWCD Exam Study Kit -> The same subject as the previous one. Actually there is a second edition of this book, but as I don’t read it yet, I’m suggesting the first edition. ( Web Dev )

Head First EJB -> The best book to learn the fundamentals of EJB 2.x spec. Of course this specification became deprecated with the introduction of EJB 3 spec, but there still a lot of things running on the previous spec in the world. So, it’s nice to know how things work if you have to provide some maintenance on this ( Distributed Programming )

Mastering Enterprise JavaBeans, 3rd Edition -> The same as before, but this book will give you another view ( not so didactic ) about EJB 2.x ( Distributed Programming )

EJB Design Patterns: Advanced Patterns, Processes, and Idioms -> Almost the same thing as I wrote for Head First EJB… if you want or need to develop something on that way, take a look at this book. ( Distributed Programming )

Enterprise JavaBeans 3.0 (5th Edition) -> Now we got the an interesting point. In this book you’ll learn the new way of develop distributed components using the EJB 3.0 spec. This book shows how to work with business components as pojos, the life cycle, mapping the database ( JPA ) and more. ( Distributed Programming )

Java Messaging -> Here you will learn distributed programming model in java using asynchronous messages and JMS.

Core J2EE Patterns: Best Practices and Design Strategies (2nd Edition) -> Design Patterns focused on the J2EE world.

2) To learn Software Integration, SOA and EAI :

Service-Oriented Architecture (SOA): Concepts, Technology, and Design -> This is a award winner book about SOA. Here you’ll learn the guts of SOA, the concepts, what is a service, how to build a service, how to compose a service, what is the true and the false SOA. This book is a must read for every one that wants to work with software integration. ( Distributed Programming / SOA )

SOA Principles of Service Design -> A sweet continuation of the above subject. ( Distributed Programming / SOA )

Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions -> A book about Enterprise Application Integration. This book shows lots of design patterns about how to handle software integration using messaging. ( Distributed Programming / EAI / Messaging )

3) If you wanna learn about what UML is and how to use it, then this books will help you :

UML Distilled -> Although this book is about the old UML specification (1.3) I still consider it a good introduction, but feel free to choose any other you want !!!!

4) Learning OOAD :

Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development (3rd Edition) -> As the book’s title said.

5) To Learn Design Patterns and Software Architecture :

Head First Design Patterns -> An introduction about what design patterns are and how to use it properly. I recommend you to read this book first because it was written on a simple, visual and didactic language, and you won’t have to fight with the complex code that the Gamma’s book will show you ;)

Design Patterns: Elements of Reusable Object-Oriented Software -> This is the design patterns book ! At this point things will become very interesting. Here you’ll learn in depth how to apply design patterns to avoid code duplication, bad designs and make you software flexible enough to accommodate changes easily and keep woking. The down side of this book is the C++ syntax, but indeed this is one of the best books you ever read !

Patterns of Enterprise Application Architecture -> This is an awesome book about Enterprise Software Architecture. This one is a must read for all enterprise software developers. It covers a wide range of topics, such as layering your application, concurrency, domain models, remoting, presentation patterns and more.

Pattern-Oriented Software Architecture Volume 1: A System of Patterns -> Another great book about software architecture, here you’ll learn a more general SA.

Software Architecture in Practice (2nd Edition) -> Another sweet SA book. This one has lots of good contents about what is an architecture, how to create it, how to document, evaluate and analyze the costs. Throughout the book you’ll see very beautiful examples about many different systems challenges and their solution.

Domain-Driven Design: Tackling Complexity in the Heart of Software -> Here Eric Evans brings valuable thoughts and teachings in how to design a good and functional software taking care, modeling and preserving the domain model.

Applying Domain-Driven Design and Patterns: With Examples in C# and .NET -> Maybe the concepts of Evans book will be dense to digest, so this book will help us with some other practical examples.

6) Learning about Agile Software Development :

Extreme Programming Explained: Embrace Change (2nd Edition) -> The roots of XP development.

Agile Project Management with Scrum (Microsoft Professional) -> Scrum from manager’s perspective (Scrum Master).

Agile Software Development with SCRUM -> Scrum for software developers.

Lean Software Development: An Agile Toolkit -> Lean principles in software development management and process.

Well, I’m gonna stop by here, what else I will propose you to buy the whole amazon website + the company :D

I will revisit this subject sooner, trying to bring something else to share with you. Another tip I want to share it that you should not feel unmotivated because there are so many books up there !!!

You don’t need, you can’t and you won’t read everything at once ! what else you’ll need a psychiatrist, in order to help you to recover you mind. As I don’t want you to damage your brain, I will ask you to follow my tips :

I tried to put the books on some kind of “natural” way, kind from beginning to expert, but feel free to choose whatever fit in your needs, you can mix basic ones with distributed computing or even architectural with methodologies. I tried to make it easy for novices to have an “easier” path to go, but you can build your own path and feed your knowledge hungry !

I hope I could help you to learn more and better, feel free to post a comment back !

See Ya !

Relearning to Learn

This first post won’t be about any “technical” stuff, instead, I will talk about something I’ve been hearing again, and again, and again these days.

Based on the statement above, I decided to share my experience with everybody, and sometimes learning is trick and hard. I can prove it remembering my childhood times, when I was learning how to hide a bike, indeed I can still remember that pain, every time I felt on the ground, all scratches alongside my legs and so on. :)

Bringing it to our professional world, the learning process is something that demand focus, time investment, money, dedication, effort and a lot of willingness. To show it I can point out the time I was beginning in Java, and I had no clue about where to start, because I was a Delphi programmer who had a lot of experience building client/server database centric applications, but how to program on a black screen ( then my old friend clipper came to my mind :) ). Facing this problem I decided to use the same technique I always used before that : READ BOOKS AND EXERCISE IT’S THEORY !

Books are great learning path, because they are products developed based on author’s experiences, and most part of times the person who wrote it applied some didactics to help the reader. A book has 99.9% of chance to be cheaper resource in comparison to any other learning source, and you can study it on your own pace.

The second part of learning process which I consider very important is experimentation, where we put in practice all theory we read on a book. We can run those examples, we can test it, change it, reconfigure, create our own examples, or we can even start to build that our preferred proof of concept application, such as a Point-of-sale application, CRM and so on. This part must not be skipped, because doing these exercises we’ll be able to “link” all theory ( proving that it works ) to the results.

I am confident that reading 10 pages and executing 10 lines of code won’t make you an expert in anything, but following the road map above will certainly make you progress smoothly.

Another learning characteristic is that it must be continuous, even after years working with Java I still learning, because new features are added, or I need to remember something old. To stress continuous learning process, I’d like to point out that even reading the same book 3 times in a row, it’s impossible to remember every single passage inside it, so, you must practice it, in order to fix this new knowledge.

The underlying point on this post is a push toward learning, because every day we can be a better professional than we were yesterday, we can learn something new today to be used tomorrow. This is my recipe : Read, Study, Experiment and Learn ( Continuous ).