This week's book giveaway is in the Spring forum.
We're giving away four copies of Spring Boot in Practice and have Somnath Musib on-line!
See this thread for details.
Win a copy of Spring Boot in Practice this week in the Spring forum!

Chad Fowler

+ Follow
since May 19, 2009
Cows and Likes
Total received
In last 30 days
Total given
Total received
Received in last 30 days
Total given
Given in last 30 days
Forums and Threads
Scavenger Hunt
expand Ranch Hand Scavenger Hunt
expand Greenhorn Scavenger Hunt

Recent posts by Chad Fowler

Hi. I usually just use test/unit and/or Shoulda for testing in Rails with the builtin Rails test harnesses.

13 years ago
Congrats to the winners and thanks to everyone for participating this week! It's been several years since I did Java programming and it was nice to revisit the Java community.

For anyone that reads the book, it would mean a lot to me if you could tell me how you liked it via a review on Amazon!

13 years ago
I've built all sorts of apps in Ruby. I use TextMate and vim to edit Ruby code (no proper IDE).

I've built web applications of various types including backend business process apps, an ecommerce music site, a student information system, complex user registration process for a medical company, a customer relationship management system, video editing and indexing for a content aggregator, and loads more.

I've also built a lot of backend stuff and non-web applications. I have worked on VOIP in Ruby using Adhearsion (which I contributed to for the 0.8 release). That's a killer framework and very much worth checking out.

It's hard to pick a favorite, but some of my favorite Ruby work happened early in my Ruby career because the language was still so new to me that I was in the "honeymoon" stage with it. Ruby has continued to be good to me since I started using it nearly a decade ago. I'll be sad to leave it when the time comes
13 years ago
I'd love to hear more ideas, James!

13 years ago

I think you'd be surprised. Many great developers love to teach if the "student" has the right attitude. Also, with techniques like pair programming, skill can even itself out in various ways.

I'm reminded of an experience I had attending Object Mentor's XP Immersion training many years ago. I had sold XP into our organization and a large group of us went from my company to attend the training together. It as a world-class course taught by several of the leaders and creators of the XP movement (including Kent Beck). I found myself paired for a day with a person who I felt at the time shouldn't have been invited to the course. She was a business analyst and only very basically skilled in programming from college courses. Not at all a "real" developer.

But she approached the course with an open mind and a great deal of enthusiasm. And though she didn't know the syntax of Java (the language we were using in the course), I was amazed at how effective she was in coming up with appropriate solutions to the problems we were solving and recognizing problems with the designs or implementations I was suggesting. I have not complained about being paired with a "lesser" programmer since. Teaching what I know helps solidify my knowledge, and usually I learn something from everyone I work with regardless of their skill level.
13 years ago

James Clark wrote:

It's a known fault that you will certainly miss qualified candidates who are not certified but sometimes it's the best choice in a list of not very good choices for a hiring team.

This is an unacceptable process in my opinion and presents a significant risk to the organization. And, this type of talent acquistion typically is the root cause of failed IT projects.

We'll just have to agree to disagree on this one. I'm speaking from the perspective of someone who has done a ton of hiring with a very high volume of applications. I'm also someone who understands the value of great developers. I wouldn't use certifications in this way if I were looking for a niche position or, say, a technical leadership position. But there are some positions for which there aren't many choices for weeding through resumes.

Another technique I've used with great effect is to filter on candidates who have significant experience in an unrelated language. For a specific example, we were trying to hire 30 Java developers out of a resume/applicant pool of 20,000 (yes, that's twenty thousand). The process was unwieldy until we started filtering on people who had Smalltalk experience. Smalltalk being significantly different from Java (dynamically typed, extensible at runtime, image-based, etc.) caused our filtering process to yield a significantly higher percentage of applications we actually made offers to.

To say that this type of talent acquisition is typically the root cause of failed IT projects leads me to believe that you misunderstood my description of what we did. We didn't use the certification as selection criteria. Just as a means of filtering the number of people we had to talk to. We then put them through a rigorous set of interviews during which the certification never really came up. I don't see how this could lead to failing projects in any way. We might have missed some otherwise qualified candidates but there was no way our interview team could scale to the kind of influx of applications we were getting so we were going to miss a lot anyway.
13 years ago

Paras Jain wrote:
Another question, do certification make someone certified specialist? At least I think so.. What do you think? Someone having SCWCD proves that he knows underlying fundamentals, right?

I think certifications just prove basic knowledge. So I would say, no, certifications don't prove that someone is a specialist int he sense that I think of a specialist. It would probably be possible to create a certification that did, but I'd never trust a certification to be the sole measurement of someone's ability if hiring.
13 years ago

Robin John wrote:
I havent read the book but got a promotional introduction... and I would like to ask you something....

Did you ever feel your JOB would go to India ?

Hey, my job did go to India! I just went with it

Seriously, though, I have never felt that I was in danger of losing my job to a lower-cost alternative. The book is all about how I have set up my career so I don't have that fear.

Robin John wrote:
Would love to read this book... with a more motivational title : )

Hopefully the current title is to your liking
13 years ago
Hi Paras.

I wrote those two chapters with intentionally conflicting titles on purpose. I wanted to make the point that it's important to go both deep and wide in knowledge. Here's a summary of how I feel about each:

Being a generalist:

I've had the misfortune of working with a great many developers who have learned the trade of programming but don't understand how what they do fits into the whole picture. They don't know, for example, how operating systems work, how to set up a web server, how different configuration settings can change database performance, and so on. They can write code but don't intimately know how code is deployed in production.

The best developers I've known, however, know their way around system administration, understand the fundamentals of TCP/IP networking, really get how databases working, etc. So when something is wrong, they really know how to fix it. Or when something has to be deployed in an emergency, they can handle that. That "jack of all trades" quote leads a lot of people astray, in my opinion. It's definitely possible to be "jack of all trades; master of some". That's what I recommend.

And that brings me to being a specialist:

Being a specialist:

I've found that a lot of people consider themselves to be specialists in technology because they only know one. That is not being a specialist. That's being limited and myopic.

To me, a specialist is someone who knows a technology up and down the stack. A specialist in Java web technology would know at least one framework intimately, as well as the servlet container, servlet and JSP/tags APIs, application server, Java language, virtual machine technology, etc.

A Java specialist should work to fully understand not just that Java supports a certain type of garbage collection but actually how the garbage collector works---how it's implemented. How different JVM settings affect performance, memory utilization, etc. and when to choose different modes of operation or even different alternate JVM implementations.

One example I give in the book is of interviewing candidates and asking them: "how would you write a program in java that would make the JVM crash". Many of the Java "specialist" candidates I was interviewing had absolutely no answer to that question. Not even a guess. Those people were not java specialists.

How do you do both?

You're right that it's hard to find the time to do it all. So the answer to this question is partially that it just takes time. You can't be well rounded and deep over night. But if you set your sights on it, you can work up to it over time. Remember that 20 minutes of learning per day can get you a long way. Don't be afraid to experiment. Use down time between meetings, etc. to fit in learning when you can. You'll find that the typical work day has a lot of wasted time. You can also take time during the work day to improve yourself. Spend 20 minutes learning about a functional programming language so you can see how those paradigms work. Or 20 minutes learning about Erlang or Scala to see how multi-processing-focused languages cause you to think about problems differently. You don't have to dedicate every waking hour to technology to make these changes if you are patient and committed.
13 years ago
As someone who has done a lot of interviewing and hiring, I'd say that as a technology becomes more of a commodity, things like certifications become necessary evils when you're in a job search. The reason is that when it's a buyer's employment market, potential employers are flooded with resumes for every job posting. Many if not most of the candidates are unqualified. For example, you might ask for competency in core Java and get a lot of candidates who barely know Java at all.

So certifications are used as a weeding mechanism to separate completely clueless candidates from those that can at least pass a test. I've never considered a certification to be a valid measure of real worth, but it can at least help me avoid interviewing people who don't know the technology at all. It's a known fault that you will certainly miss qualified candidates who are not certified but sometimes it's the best choice in a list of not very good choices for a hiring team.
13 years ago
I find the tip about sending a paper resume especially interesting. In today's electronic world (especially in our industry), everyone does business via email. I personally like email a lot more than other forms of communication because it doesn't interrupt my flow.

But it's gotten to the point now where it's really unusual to send real letters or make phone calls. So if you're trying to stand out, that might be a way to do it. I was recently reading the really good free ebook for musicians by Derek Sivers called How to Call Attention to Your Music. (It's totally applicable to non-musicians). One of the neat ideas he had was to actually send physical gifts to people you appreciate professionally. Not expensive things but thoughtful things. I keep meaning to try it.
13 years ago

Kata Franciscan wrote:Hi all
In my opinion, the notion of a "career" in Software Development is a bit strange. Isn't a "successful career" normally about earning as much money as possible while having power over the biggest number of employees possible?

Oh, no! That might be what most careers look like (at least they look like attempts at what you describe). But I think this is the path to most software developers' (and professionals in general) unhappiness. There are many givens in our field in terms of career that we take for granted. The idea that we need to move into people management to be successful is an example. Another is that we should move from tester to developer to designer to architect, etc.

Here's one definition of 'career' from

a person's progress or general course of action through life or through a phase of life, as in some profession or undertaking

"General course of action through life". That's what we want to be remarkable. I think the notion of "successful career" that you described is exactly not remarkable. It sounds like drudgery. It's the path I was on before I decided to wake up and realize that I could control the direction my career went and be happier for it.
13 years ago

Bear Bibeault wrote:During an interview, passion is clear and easy to see. Usually you can't get a word in edge-wise.

I'd have to agree with this one! You don't need to work on specific aspects of passion. It's obvious when you have it.

The big question is what to do if you don't.

I'll make another thread about that.
13 years ago
Kengkaj, you're right that "remarkable" varies from person to person. I don't mind that fact for my book, really.

For me, "remarkable" means "something worth remarking on". I think of it the same way Seth Godin defines the Purple Cow. Something that stands out from the crowd in a good way.

For me and my career, that has meant doing work with people who are smarter than me and often times the people from whose books and code I learned some of the most fundamental and important parts of programming. It has meant not only working with cutting edge technology but working on cutting edge technology---making the stuff I use and that thousands of other developers use. It means being up close and personal with the real "rock star" programmers and being constantly humbled by them and informed by their knowledge and talent. It means traveling the world, being location-independent, having a lot of time to do research and learn. It means being able to interact with other developers world-wide on a large scale.

My goal with the book is to teach other developers how to have the same kind of freedom and satisfaction that I've gotten from my career so far.

I can't guarantee that you will experience a remarkable career just because you read it, but I can tell you that the techniques and ideas in the book are responsible for making my career what it is and for many of my colleagues and acquaintances' careers as well.

Hope that helps,
13 years ago

arulk pillai wrote:Did you ever explore the option of self-publishing?

Pragmatic Bookshelf is too good for me to think about that seriously.
13 years ago