Domain: pragmaticprogrammer.com
Stories and comments across the archive that link to pragmaticprogrammer.com.
Comments · 122
-
Test Driven Development
I've found that test driven development, refactoring, automation, continuous integration and related practices such as those endorsed by Object Mentor http://www.objectmentor.com/ and Pragmatic Programmers http://www.pragmaticprogrammer.com/ have helped reenergize me to some extent. If you've been programming for a long time and don't feel energized, it is possible that you've become entrenched in bad habits that detract from your productivity and the quality of the code you produce.
Knowing Perl is good. It is a good tool for automation, but you might want to move to a language like Ruby which is more modern. Ruby is greatly influenced by Perl so some aspects will seem familiar.
I worry that you say you need a paycheck soon. It generally isn't good to make important decisions about your career under such conditions, you are bound to do something you'll regret.
-
Re:Very uninformative article
I have to agree with you. I've been through a few webprojects in perl, php, rails and struts. Perl is my favorite, but that has largely to do with the jobs I had to do in the past, and it's certainly not the only language to get to a solution.
The only thing that I'd have to agree with is that Rails does take up a bit more resources than the average PHP application (#4), but rails like any other framework does allow you access to your database. It's very well documented in Agile Web Development on Rails (not being paid, just giving an example I know of) where they introduce Active Record, and there's an small section on the subject itself. I'm pretty sure it's somwhere in the API reference as well.
Some languages are more suited than others for a certain project, so it's perhaps more important to do a proper analysis of what you want to achieve and what languages will help you most to achieve those goals. The author offers very little detail into what exactly went wrong with his project, except that it didn't go as smooth as planned (welcome to the 90% of all projects, pull up a chair and have a drink).
Finally, even though the article mentions he hired a programmer, it's often wise when learning a new language/API/tool to start with a small application so you'll get a firmer grasp on it. That way you'll get a better feel for possible trouble ahead. Sure, we don't all have the time to do that, but in that case it's often better to stick to what you know and what works for you instead of blindly charging forth and trying to ride the latest wave of technology buzzwords. Not that I'm saying that RoR is just a buzzword (it's pretty neat actually), but don't use it because it's hip. Use it because it solves a problem more easily than another language/framework.
-
Try it out
The first chapter is avalable online to get a taste of the book (and the language).
-
Re:InterestingI've heard that Meebo.com uses Erlang for some of their server bits.
And the new Pragmatic Programmers book on Erlang will broaden it's exposure. http://www.pragmaticprogrammer.com/titles/jaerlan
g /index.html/It's not a commodity language yet, it seems to be on the upswing. It solves some very interesting multi-core/multi-machine problems with almost not effort on the part of the developer.
-
Re:Show me one site....
I'm assuming, as the previous responder did, that you mean "a site using Rails" when you say "a site that's on Rails", as opposed to a site about Rails. The obvious sites here are the 37signals sites, the ones that were the impetus for the development of RoR by David Heinemeier Hansson the first place. Basecamp, a project management tool, was their first and Highrise is their most recent. There are more of their sites listed on the Wikipedia page as well.
Another Rails site that's been in the headlines recently is Twitter
If you're looking for a good place to start, Agile Web Development with Rails by Dave Thomas and DHH is probably the best book out there.
-
Try reading The Pragmatic Programmer
It's much more language-agnostic and focused on finding the way to do the job right. Take a look, though it does have a bit of that Agile infection.
-
Re:shame on AppleIf anyone else does this, nobody complains. If it's Apple, all hell breaks loose. I don't know of anybody else who sells DRM-free music but embeds personal information; if you do, please let us all know. (The link you give just points to an article about Apple.)
No, it doesn't. Read it again. It notes that Pragmatic Programmers e-Books embed the buyer's name, and everyone thinks it's great because it means they can publish plain, unprotected e-Books.
The place where I buy most of my DRM-free music, eMusic, doesn't embed any plain text information about me in the mp3.They also don't have to figure out a deal with major labels.
Admit it, you just love to hate Apple. I have nothing against Apple per-se; I criticize Apple for the same things I criticize other companies: when they don't respect my privacy,Great. Please point me to your article where you complain about the fact that The Pragmatic Programmers embed personal data when you buy e-Books from them.
and when they misrepresent who actually invented the technology they are shipping. Unfortunately, Apple does both fairly frequently.Okay, now you sould as if you were holding some kind of grudge against them. Where do they claim they invented something they didn't?
-
Re:What's wrong with version control?
You guys are just begging for this book... Pragmatic Version Control, and there is both a CVS and SVN version. It takes a common sense, keep it simple type of attitude towards version control. After many years, I finally "get it" with VC after reading just a few chapters in this book.
-
Re:tripple edged sword
> What will the others think, what will happen to them ?
So true. It's the same sort of thing with folks who write books about open source projects. For example, I recently bought the Ruby Quiz book because a) it seemed like an excellent book and b) I knew that the guy who has been running the Ruby Quiz for the last few years had written the book and would benefit from the purchase. If the book had instead been written by a "professional author" who had swooped in and written the book in a furious three month flurry of work, I wouldn't have felt as motivated to buy the book.
One thing I try to do is Paypal out some money occasionally to folks whose code I use. I need to do that for this excellent Rails plugin; it's been very helpful and the author deserves a few bucks for his efforts... -
Thoughts
I've been following this today, on and off. I feel really sorry for Kathy Sierra. What is scary is the number of bloggers (mostly female) who describe being subjected to similar things, some even worse. Most of the bloggers mentioned by her have apologized for participating in such a site though, even if, as they claim, they did not do any of the objectionable content.
I think Don Parks summed up how I feel about this best. With reality TV the tolerance of bullying has unfortunately been increased. If something good can be said to come of this, it is that a few online bullies are getting their well deserved come-uppance. I think it was Chad Fowler who wrote that the net never forgets, and building a reputation becomes ever more important. The stuff you write may come back to haunt you for a long time, and never forget that there are real people with feelings on the other side. Even if you disagree with them they deserve to be treated as human beings. -
Would you trust these professionals?
The original post asks if Assembly is still relevant today. I'll ask some rhetorical questions (the only kind in a blog) and see how they apply:
* Would you want an astronaut to understand physics and math?
* Would you want a doctor to understand chemistry and biology?
* Should somebody studying to be a Literature teacher take their full set of liberal arts courses, including history?
* Should somebody earning a business degree take music appreciation?
Most of us probably said, "Yes" to most or all of those above. Even if the study seems irrelevant or too "low-level" or too "high-level" at the time, there are areas of coursework that help us understand things better.
I see a lot of dead wood in the IT industry. There are enormous numbers of people who either have no passion or who do not have a deep-enough or broad-enough knowledge of computer science to do their daily data processing job well. They are dependent on others around them for everything, even though they may be very skilled in one area.
By having both a broader and a deeper knowledge, people are necessarily better at troubleshooting and at understanding the areas outside their particular specialty. It makes them be better at all of IT and helps them do their specific role.
You should learn IT two ways -- deeply and broadly. You should deeply learn specific skills (Java/C#/Linux/Windows/scripting in Ruby/whatever) and you should learn broad skills (computing theory/relational databases/networking/troubleshooting/programming/a nalysis/architecture/whatever). The difference is training vs. education.
There is an enormous difference between training and education. Training is learning specific skills for specific tasks (narrow/specific), while education is broader and teaches you how to think, understand, and apply (broad/general).
While taking Assembly may not seem relevant at the time and you may never directly use it again, for every programming task, having a strong background in all of computing theory (including how the CPU handles its low-level instructions) educates you and gives you a deeper understanding. (Don't just be trained, be educated!)
My recommendation is the book My Job Went to India (And All I Got was this Lousy Book). If you can't afford it, read the sample chapters, especially the "Being a Generalist" and "Being a specialist" chapters at http://www.pragmaticprogrammer.com/titles/mjwti/in dex.html.
Personally, unless you need the specific class/training, I'd say that FORTRAN or COBOL ought to be abolished as required material in all colleges and shouldn't be in the degree program. Those should be electives only. Assembly, on the other hand, should remain required, for a deeper and broader education. (Don't settle for a dumbed-down program).
The difference, again, is training (specific/skill-oriented/task-oriented) vs. education (general/broad/understanding-oriented). Education and being a generalist will reap large rewards, long term. So stick with it and take that class. Assembly is a very important foundation class that educates you, long-term....
Another rhetorical question I have is this: "Are you passionate for IT or is it just a high-paying (presumably) job?" If it isn't a passion of yours, find you passion and do it well. If it is, take Assembly and like it -- it'll help you appreciate IT, your computer, your high-level language, and give you a more educated view of the "soul" of your computer.
(They don't make you take Assembly at many/most schools for their health. It would be a crying shame to remove it from the required courses). -
Re:Remember him not for FORTRAN
Why "besides Erlang"? Just curious. It even has a fancy new book! (well, ok, it's still in beta)
Granted, it's my first FP language (I've looked at Scheme, but not in a few years), so I can hardly speak to how amazing it is compared to others. But I was sold after seeing its concurrency / message-passing paradigm. Oh, and list comprehensions! -
Re:Swim or drown
Or maybe I just think darcs, arch, monotone, or -- hell, if you have to have some relationship with svn -- even svk (I don't know anything about BitKeeper since there are lots of adequate free solutions and everywhere I've worked has used CVS or; now, unfortunately, SVN) are a hell of a lot better. SVN is CVS "done right", which is still version control done wrong, and it has its own problems on top of CVS'.
If you must have specifics, the thing that bothers me the most is that you have to run a merge before you can check in changes to a file if you're not up to date with the latest repository revision. Right before a merge is the time I most want version control, because it's the easiest time to really fuck something up, and svn just pretends like the situation doesn't exist and makes you merge the changes into your unsaved working copy. Great idea!
Good version control software gets in the way of development as little as possible. SVN (and CVS) get in the way all the time, except when you really need them, then they can't do shit for you. They're good at forcing you to keep an updated copy of your source somewhere, and they're decent for finding out who's to blame for a problem. They're even nice at helping you generate nifty changelogs. They suck at the things that matter: helping you coordinate changes between multiple team members and allowing those folks to work as independently of each other as possible without duplicating effort or bumping heads.
I did read this book, because maybe I thought I was just giving it a bad rap based on the fact that CVS is crap and SVN is a logical continuation of the ideas in CVS. Nope.
Don't be mistaken, they're both better than nothing. But that's pretty much all they're better than. -
Re:Buying the PDF?
The book is published by The Pragmatic Programmers. You can buy the Rails Recipes book directly from them, as well as the PDF.
-
Re:Buying the PDF?
The book is published by The Pragmatic Programmers. You can buy the Rails Recipes book directly from them, as well as the PDF.
-
Good book
Buy a copy of The Pragmatic Programmer for everyone in your team, and make people read it. It's a treasure.
Then you'll at least know what the goal is; how you can get people to change their ways and habits is a problem I haven't found an easy answer to yet.
-
What to do? read, Read, READ!Go the college route only IF you can afford it, and IF the college has a well developed and staffed CS/IT department. If it hasn't then you are just throwing away your money, which would be much better spent on a decent library of text-books. Assuming you decide to teach yourself then you'll need to learn a language or three. I'd suggest you learn what the OO paradigm is all about. These languages are pretty good implementations of it:-
- Smalltalk - The original OO language and programming environment
- Ruby - OO in a sane file oriented environment
- SQL - You'll need to store your data somehow
- C and C++ - Get these downloadable books FAQ & Tutorial.
-
Re:Expand
Read Knuth's Art of Computer Programming.
The benefits of reading this is twofold: 1) you can say that you've actually read it, and 2) you can refer to it in any programming related argument: "Look it up in Knuth!"Seriously speaking, the books I've found useful (more so than Knuth, anyway) in improving my programming or software engineering skills (in no special order):
You'll notice that programming is not just about programming. Seeing beyond one programmer, one team, one language, one operating system, one tool, one method, one project, etc. gets you to another level.
-
Re:Expand
Read The Pragmatic Programmer and implement as many of the ideas as possible.
-
Re:Another bundle idea.
The Pragmatic Programmers sell most of their books as either dead-tree, e-book, or a combo pack where you get 'em both (not to mention the cool beta-book thingy - you get the beta of the book as it's being worked on, then get the full book once it's done, including a dead-tree copy as well if that's what you wanted).
-
Re:In all seriousness...
I was surprised by the general shittiness of Ruby In a Nutshell. I found it difficult to use to actually learn ruby. On a co-worker's recommendation, I picked up a copy of Programming Ruby: The Pragmatic Programmer's Guide, which I've been much more happy with.
That's the first O'Reilly book I've encountered that's been so thoroughly unsatisfactory. A shame, really. I'd like to believe this is an exception to the rule rather than the harbinger of a general downard trend in the quality of O'Reilly books.
-
Re:Sounds like a formula for spaghetti-ware
It only sounds like that if you skip the important parts.
Agile methods are not about skipping requirements, or modeling, nor about coding in a casual or non-deliberate way.
Agile methods are about recognizing that requirements are a moving target, That the more you implement your solution, the better you will understand the model, and possible problems with your model of the problem domain, and that the best program on earth is worthless if it doesn't work for the end users.
So, there's a large collection of techniques that most programming veterans (OO or otherwise) utilize to help get things up and running without having to send anyone "over the waterfall."
Check out Dave Thomas and Andy Hunt, Martin Fowleror the Portland Pattern Repository for a good starting point.
-
Re:Obl. chunky bacon
The reason people buy the Pick Axe Book is that it's a great technical book
http://www.pragmaticprogrammer.com/titles/ruby/ind ex.html -
why not just read a book about the subject ?
how bout just reading this book ?
http://pragmaticprogrammer.com/titles/mjwti/index. html -
Re:Getting started
The book is Programming Ruby. That's the second edition.
The first edition is available online. You don't need to buy the second edition unless you are really serious about learning Ruby. The first will do for evaluating the language and playing around with Rails. And if you really want to learn Rails (after going through the tutorials), Agile Web Development with Rails is the book I recommend. -
Re:Getting started
The book is Programming Ruby. That's the second edition.
The first edition is available online. You don't need to buy the second edition unless you are really serious about learning Ruby. The first will do for evaluating the language and playing around with Rails. And if you really want to learn Rails (after going through the tutorials), Agile Web Development with Rails is the book I recommend. -
Re:Getting started
This is a good place to start: http://poignantguide.net/ruby/ and then perhaps this: http://www.pragmaticprogrammer.com/titles/ruby/ (Either one is good -- I used the latter)
Or, if you're on the lazy side of things, you can try it right within your browser here: http://tryruby.hobix.com/
I hope this helps. -
The first book a PHP programmer should get is...
-
I'd suggest these:
Design Patterns: Elements of Reusable Object-Oriented Software
Data Structures and Their Algorithms
Operating System Concepts
Joe Celko's Data and Databases: Concepts in Practice
How to Design Programs: An Introduction to Computing and Programming
Programming Ruby (2nd. Ed.)
Agile Web Development with Rails
+ some book on data communications and networking -
I'd suggest these:
Design Patterns: Elements of Reusable Object-Oriented Software
Data Structures and Their Algorithms
Operating System Concepts
Joe Celko's Data and Databases: Concepts in Practice
How to Design Programs: An Introduction to Computing and Programming
Programming Ruby (2nd. Ed.)
Agile Web Development with Rails
+ some book on data communications and networking -
Nothing holds me back
There is nothing holding me back from purchasing ebooks. I have no problem reading on my laptop. How many ebooks do I actually own -- 2. Both of them have come from http://pragmaticprogrammer.com/ [no, I'm not affiliated]. The reason I purchased these books was because of the price, and because I am supplied with any updated versions for free. Now while this doesn't necessarily matter in a literary setting, it matters significantly in a technological one. I'm getting more value for my dollar. So when it comes to ebooks, bring them on, just make sure they have enough value for me to consider the purchase.
-
Agile Web Development with Ruby on Rails
This is the only extant book on Ruby on Rails: Agile Web Development with Ruby on Rails . There are about a half dozen others that will be available later this year, but the Agile book is quite good and sufficent to get you started.
-
Re:Your career is your responsibility
Are you Chad Fowler? The guy who wrote this book?
http://www.pragmaticprogrammer.com/titles/mjwti/in dex.html
You sound like him from your post. :-) -
Re:Beginner, no programing experince!
How about How to Program by Chris Pine. I hear it's excellent for people who have no programming experience.
Another good (and fun) choice is Why's Poignant Guide to Ruby . No other learning to program book has cartoon foxes. -
Re:Totally fresh in programming
I would check out How To Program by Chris Pine. It's very much for people who have no programming experience.
Also, for a very different, novel and fun approach you should check out Why's Poignant Guide to Ruby . Did I mention it was fun? It's also a great intro for someone who has never programmed before. -
where RSS is going, GeoRSS
Some comments here wonder what value RSS provides? RSS offers much more than syndicated news feeds, it helps control your information overload. Two examples follow. First, Dr. Dobbs article shows how to build your own RSS with Ruby to track information when certain events occur. Dave Thomas writes artcles and books about Ruby. He says "You can use RSS to collect and summarize information from your projects and from your life" in the Dr. Dobbs article.
Second, Yahoo maps documentation says, "The XML used by the Yahoo! Maps Simple API is based on geoRSS 2.0." Here is another link about GeoRSS and worldKit, a map built using shockwave flash. You publish your map content, and GeoRSS for every point you want on the map.
IMHO, GeoRSS is becoming a de facto standard, becoming part of many blogs, and content managment systems, like Plone. and, BTW, Good luck with all your adventures this New Year. -
Re:More important than anything else...
That also seems to be the main points in a book I am currently reading called "My Job Went to India: 52 Ways to Save Your Job".
Book: http://www.pragmaticprogrammer.com/titles/mjwti/
Author's Blog: http://www.chadfowler.com/ -
Re:first post
http://www.pragmaticprogrammer.com/titles/ctrubyq
t /
QtRuby programming is the next big thing. Give you friend a HeadStart. -
Three Books to ReadThree pretty good books that have insightful views on how to write readable code and comment it appropriately:
In short, they all suggest writing readable code is more important than commenting spaghetti, but there are also good points on commenting. (Can't be bothered to copy-paste them here, though, see for yourself.)
-
The book
I ordered it recently from Bookpool.com and although they claim that it's out of stock, I still ordered it and recevied it not too long after. Otherwise, if you'd rather get it a little sooner, try out Amazon.
Also, a very interesting resource is available through Pragmatic Programmer, a beta book which means you can get PDF updates as they are written until it is shipped in hard copy in Feb. 2006. Already a book of 160+ pages, they already had a section on creating your own version of Google Maps (and more relating to SAJAX and other PHP implementations). The beta book, while only a little extra, is highly recommended! -
Agile can helpAgile methods, properly used, are the best way I know to improve product quality, keep a handle on what everyone's doing , and improve the developer's skills.
It's not a silver bullet but a very useful tool. Even if you don't adopt them wholesale, you should take a "survey course" to see what it's all about. Pick a few of the practices and try them out. See what works for you.
At the risk of sounding like a shill, check out my book (or one like it) to a quick intro some agile methods.
-
Re:SQLObject rocks!
Tell me - how and where does one start writing SQL when you're using Ruby's Activerecord (which sounds like a building block for making Ruby objects similar to Python's SQLObject but without writing a single line of SQL)?
In pretty much every Ruby tutorial I've seen (including Agile Web Development with Rails ), the sequence goes: write the SQL, write the class, let Rails infer what isn't worth specifying.
More specifically: Rails makes a vast number of assumptions about the manner in which you store your data, but for the most part the assumptions are 1) reasonable, and 2) overrideable. This goes along with their philosphy of "convention over configuration," something any J2EE developer can likely relate to.
For example: Rails expects that if I create a class called "LineItem," that it can find a table in the database called "LineItems" that has an autoincrementing primary key called "id." If I create a "ShoppingCart" class, and in my class definition I put "has_many :LineItems", it expects a field in the "ShoppingCarts" table called "LineItem_id," ostensibly a foreign key (although it will handle the standard key constraints itself, w/o intervention from the RDB.) And so forth. But after you've written your data definitions, you basically don't have to write any SQL again afterwards. And if you find the Rails conventions to onerous, you can always override them.
Active Record has a new feature called "Migrations" coming out RSN which abstracts away even this initial involvement in the SQL, but I haven't so much as touched it yet. -
Re:Is Java falling behind?I agree that Java has not improved in ages. I write Java client apps and have been for a while. The JVM has come along very well and since 1.4 it allows us to write really great end user apps - it's fast as hell. Once they get the memory usage under control it will be perfect.
But the language and the libraries are suffering from the weight of (bad) past decisions. There are usually about 3 million ways to do anything in Java. The language was great when it came out, but it has not been improved at all. The improvements in 5.0 are really a joke - too little, too late, and an unbearably ugly syntax.
Here's what Sun would have to do to improve Java:- Sit down and decide on what to keep and what to deprecate with an eye on deprecating as much as possible and leave a clean orthagonal set of libraries
- rewrite all the tutorials so they make sense, then provide a patterns library for good solutions for common problems (non-existent)
- quit wasting resources on second-best IDEs and embrace Eclipse and the rich client platform. Get over it.
- educate people about threading (other than the "use it when your program is slow, hurrh" kind of crap in the current tutorials).
- Then make the language nicer.
Newsflash to Sun: Being miles ahead of c doesn't cut it anymore!
[1] free old version or the second edition -
Re:Big deal?
What is the big deal about desktop searching, anyway? Are people REALLY having so much trouble finding files on their own computer?
The short answer: yes.
The longer answer: the issue isn't limited to "finding files on their own computer," although it's easy to misinterpret it that way. Usually, finding an individual file isn't that hard, assuming you already know what the file is. What if...
- ...you're looking for something which is in one of hundreds of similarly named files, all in the same directory?
- ...you're looking something out of a file that someone sent you as an e-mail attachment which didn't have an immediately obvious name?
- ...you want to round up everything on your hard drive which is related to a given keyword: images, e-mails, word documents, spreadsheets, mp3s, ad nauseum?
The fact is that the standard "directory/filename" method of organizing data requires a lot of consistent upkeep to work well over time, and is just terrible at storing information that other apps want to keep organized for you (eg, any mail application). Want to see this in action? Go to any medium-or-larger sized organization, browse to their file server, and drill down into a couple of random folders. Point at the screen and ask someone to tell you what's stored there. I'll bet money that the majority of people will have no idea what they're looking at, and it only gets worse once the people who put the files there leave, or the projects get stale - tons of files noone needs, sitting there because noone thinks they have the authority to say "I can go ahead and delete this now."
One more brief example: I recently bought the PDF version of Agile Web Devlopment with Rails online, and saved it - along with every "beta book" they sent me - in my "~/Documents/Documentation/" folder. Not hard to remember that at all, but it's still faster for me to hit command-space, type "agile rails", and click on the first result, than it is for me to double click the finder, drill down to that directory, and double-click the file.
-
real code
If you really cared about OO design and good code you would not be coding in PHP but Java,
.Net or C++. PHP is just not suited for real-world web applications. Rather read The Pragmatic Programmer than a book about a specific language. -
Ruby resources
Heh, well, no offense but, people that use to reply like you haven't tried Ruby, or don't understand it. Otherwise you would be in love with it already.
We cannot compare PHP and Ruby. It's like comparing BASIC and Perl, you get the idea. Remember when you discovered Perl and all its magic? Well, that's what happens when you get into Ruby. It's a true object oriented and dynamic language ready for real applications.
This might or not make sense to you. It depends on the use you are giving to your language of choice. If you write one-liners in Perl, you might not feel motivated to move to Ruby. If you are writing templates in PHP for your web applications and you're doing fine, you might not need Ruby either.
You see the light
:) when you want to write OO applications/scripts. PHP used to have an awful hack (I haven't seen PHP 5), so does Perl 5. Python would be your choice, but for some reasons I cannot explain (yes, this is subjective) Ruby feels more natural.Ok, I have fallen again in the "I love Ruby so much" that gets you so bored. So, here is some homework for you (some very nice presentations and small articles):
Ruby: A transparent, object-oriented programming language
10 Things Every Java Programmer Should Know About Ruby
The Ruby Programming Language (by Matz, Ruby's author)
Thirty-seven reasons I love Ruby
Blocks and closures in Ruby -
Re:Ruby on Rails?
I dig it. I rolled myself a CRM application in a week from zero knowledge of Ruby or Rails, and I'm currently developing an application I'm hoping to launch to the public by the end of next month.
It's a nice, speedy way to get to whatever ends you want to achieve. Agile Web Development with Ruby on Rails is very helpful so far as getting started goes. Wish it had been around when I was getting started.
Scalability's a component I haven't dealt with yet, but there are a bunch of high-traffic Rails-based sites out there and servers are cheap. -
Re:Build Systems Are Often OverlookedThe non-.Net version of CC was covered by Pragmatic Build Automation, a nice short read.
Found here: http://www.pragmaticprogrammer.com/starter_kit/au
t o/index.html -
Re:Apache Ant: no full time employees, no corporat
That's a pretty pessimistic view. You expect to change the world with one book? I see an opportunity. I share your discomfort with the poor grade of software development and the love of unit tests (you need only look at one of my projects and see the healthy set of code). You're going to have to work harder than just writing a book. You're going to have to evangelize and preach the good word! The good news is that it can be quite lucrative if you can build a reputation around it.
However, I think there is a basic problem that spans both IT management and development. On one hand management is still being trained in the economics of a manufacture economy. (Labor vs Capital and the false idea that each worker is an equivilent unit). They make decisions that way. They make priorities that way. Then due to the risky proposition partially due to the high cost and high failure rate, large bureaucracies form around software development organizations.
On the other side, you have software developers who are not trained in the basic skills such as revision control. Developers who don't understand threading, concurrency, collection performance, etc. So what is the management solution (labor vs capital)? Offshore and hire MORE cheaper developers. Guess what? Doesn't work.
Hire a team of some of the best developers you can afford and form a mentorship culture with some of the more junior. Understand the skill profile of the individual developer. Hire as FEW developers as you can get away with, looking always for ways to work more efficiently and create higher quality software (load tests are key too) because the maintenance of existing software (statistically 80% of any developer's day) will always be your highest and yet most invisible cost. However, we hide these costs under the rug instead and mire in "project based" management and other nonsense.
I'm not saying its all management's fault. the boom produced a new breed of developer who don't love technology and just went there because the money was there. They don't live and brethe this stuff like we do. They cost less than us (and this isn't a India thing at all, there are GREAT developers in india -- they just don't work for traditional "offshoring" firms with a very bizzare SD mentality) and they don't work as hard to be lazy (meaning stone knives and bearskins vs automation, unit testing and automated load testing).
Anyhow its going to take more than a book and ant to pull that off Steve. For a good model, look at my friend Andy Hunt (http://pragmaticprogrammer.com./ He has made a living off of teaching better software ethos and has learned to brand himself appropriately. To pull this stuff off we geeks have to learn some business stuff and learn to communicate it better. Then don't work at the places who refuse to listen, "change your team or change your team" as they'll sink the unsinkable anyhow. ;-)
-Andy -
Re:Here's why...
half baked trendy geek masturbation language
Ruby? Half-baked? Ruby hasn't been around as long as Python, but it's not exactly the flavor of the month. And have you seen the people backing Ruby? The authors of those books are not amateurs.And since when is a language wich such an excellent spread of features a "masturbation language"? Closures, a powerful standard library, continuations, open classes, everything-is-an-object... I could go on. These aren't "bleeding edge" features. These are features found in languages like Lisp, Scheme and Smalltalk that big players like Java ignored because it was "too complex" for the "average coder."
In other words, languages like Ruby and Python are state of the art. It's Java and PHP that are behind.