Jeff Makes Software
The software musings of Jeff Putz
-
Do you use SharePoint for requirements management?
The company I'm contracting for is trying to formalize its requirements process to something beyond a folder full of Word documents. They're exploring a lot of options. There are some who are already saying we must use Rational RequisitePro, but that feeling seems to come from people that have never used anything else.
I'll be honest, I've only encountered ReqPro myself. It's not horrible, but I wouldn't consider myself a fan. I've seen articles here and there showing how to use SharePoint in this capacity, and I have to say that I like that idea because of the familiarity factor.
Does anyone have any stories or advice to share?
-
Lame amateur site-o-the-weak: PlayersARC
Any site that blocks you from using it based on the browser you use deserves public humiliation. Today's example: Players ARC, a college recruiting site. Go ahead, check it out in Firefox or on your Mac.
http://www.playersarc.com/
In fact, I might as well slam them for their ridiculous business too, which preys on the hopes and dreams of kids that don't have a snowball's chance in hell of being recruited for a college sport. I coach junior Olympic 17's in volleyball, arguably the most competitive level below college, and I can tell you that all of these services are crap, setting up false expectations. If you're curious to know what your chances are to play in college, I wrote an article that pretty much sums it up here.
-
My dead trees have arrived!
Here it is... my first book. Now it feels for real.
-
How do you make your datastore as versatile as your code?
I'm not an expert on design patterns at all, even though I use them even when I don't realize it. It just happens in OOP. (This is a good time to mention that the Head First book is surprisingly awesome for a topic that's otherwise a snoozefest. The examples are Java, but easy enough to get if you know C#.) I certainly have no problem coding stuff that applies different business rules and logic depending on what you throw at it.
Where I struggle a little is the persistence of data. For example, I'm on a project now where it's clear that different data will be required in certain cases for certain customers, but I can't anticipate what those new data items will be. Modifying the structure of the database constantly is not a very good option.
How do you deal with that? If I suddenly have a new group of customers that need to track a user's hair color, what do I do in terms of my database to accommodate that?
-
R.I.P. TechTV
Comcast obviously has given up trying to save any of the TechTV audience. They've officially switched the name to G4, "Video Game Television."
Bastards.
-
Dogfooding is good for the soul
John Lawrence posted some stats about the use of Visual Studio Team System internally at Microsoft, referring to the practice of "dogfooding," or using your own products internally before you ship. I totally believe in doing that to make better software, whenever it's practical.
For me, virtually everything I've been involved with personally was developed for something I was doing. POP Forums has been that way from the start, as is my forthcoming ad server, CliqueSite.Ads. The only real negative is that sometimes I'm not as open to the feedback of other users, because it generally works just how I want it to work. :)
I think that building something that will be used by developers, like an IDE or an open-source Web package or whatever, opens you to more scrutiny than you might otherwise get from consumer shrink-wrapped stuff. It's a tough audience. All the more reason to spend time with the product you want others to use.
I'm starting to get excited about VS 2005 again. It's exciting to see beta 2 just weeks away, and I have to say that Team System offers a lot to be excited about. I might have to get an MSDN subscription again (unless someone knows who to talk to get authors hooked up).
-
ComponentArt's Menu control sure is cool
I'm not sure if you've seen it before, but ComponentArt's Menu control for ASP.NET sure is cool. I first encountered it in SmarterMail's Web interface, and I have to say I'm seriously impressed. It works in all of the normal browsers and it renders pretty fast.
For about $700, you can get a license to redistribute all of their controls, royalty free, and I think that's a bargain. Sure, the pages in which you use these controls get a little fat, but for the beautiful, rich UI they generate, I think it's well worth it. The hassle of getting this junk to work when you try it yourself is a pain.
Anyone else have an opinion about these controls?
-
U.S. education sucks, and other observations
When the top folks at Intel and Microsoft think our education system is, to understate things, inadequate, I think that's a good reason to sit up and listen.
All the bullshit accountability that the Bush administration, and to a certain degree the Clinton administration, has forced on the public school system has done is force schools to teach kids how to beat standardized tests. I know it's a common complaint for young teachers that they feel like they've become a slave to this nonsense.
On my current contract gig, I work with an Indian guy that also spent a lot of time in Singapore. Culturally, he found it odd that I have no formal education in computer science, but accepts that I've made up for that in terms of real experience. Still, he makes a strong case for off-shoring not in terms of cost, but in terms of available brains.
One thing he said that struck me as not-so-obvious is that India and Singapore spent so much time under British rule that one of the biggest influences that came out of that was one of European education. He feels that India's constantly expanding middle class exists because there's so much emphasis on learning technology trades, in the way that the U.S. once emphasized industrial trades. The problem is that we never switched our focus. There just aren't as many well paying blue collar jobs around anymore.
Personally, I see the failure of our educational system every day on the message boards I run. I don't want to call the kids stupid, because I don't think that's it. They're just so incapable of forming complete, written thoughts (with actual grammar and spelling) that what they say is not readable. Heck, my wife sees this failure all of the time as a graduate assistant grading undergrad papers.
What's the solution? I don't actually know. I'm not suggesting that we should be a nation of rocket scientists, but if we don't get our shit together, we will fall desperately behind the rest of the world. Trade issues can't be solved by legislation... we're living in a global marketplace now. -
Jeff: The architect? Another twist in my career
Yet another unexpected event in my ever-evolving career...
It was an interesting day at the contract job. It became obvious to me, and anyone else that saw it, that the ASP.NET project we were given to do a face lift on is in dire need of being scrapped entirely, along with the backend system and Windows app that go with it. It's the most poorly designed application ever. I hesitate to even call it an application.
After an "I saved your ass" security fix that unintentionally made me look like a hero, we explained the state of things to the client over lunch. While certainly not happy about it, I think they started to grasp that if they want to continue growing the way they have, they're going to have let someone rebuild their system, and do it correctly.
So what does this have to do with me? Well, the project manager asked if I felt comfortable in facilitating the requirements gathering and design of a new system. That's somewhat tricky because this is the client's busiest time of year, and frankly they have no requirements. The possible plan he laid out was perfect, as it would likely not be a full-time thing (given the limited availability of the client's experts), it would be a chance to be the point man on the architecture of an enterprise-class system, and I would continue working on an hourly W-2 basis (something I insisted on because it's a lot harder to take advantage of you).
While I've been exposed to plenty of giant and grand application plans (the mother of which is easily the one I was involved with at Progressive), it has always been a following role, not a leadership role. I've had leadership and management roles many times before, but generally at a lower level in the grand scheme of things. This would be the first time that I get to actually decide on how to build the beast. The scale is much bigger than what I've had to do for previous gigs (and personal projects) where I was the architect. This could be a remarkable learning experience.
Earlier this week, I felt as if I had somehow failed as an entrepreneur because I went back to a job that required me to put pants on in the morning. Now I'm starting to realize that perhaps I've been a little too critical of myself, and when I take inventory of the last two years, I've come a long, long way.
First off, I went from negative revenue in 2003 to a point where I made enough to at least survive (if not live the J-Pizzie lifestyle). During the last year I wrote a book and didn't do much else. Even without a bona fide business plan going forward, there's still plenty of opportunity for growth. Generating a coulpe grand in profit a month for doing a few hours of work a week is a good start.
Second, about five years ago, I wasn't a code monkey at all. See previous points. That's a hell of a shift to make in terms of career.
Third, going back to a day job hardly makes you a failure when you've built your qualifications to the point that recruiters are calling you or sending you e-mail every day. Boy did I feel stupid when I realized that. I have friends that wish they had that problem.
In any case, I made a lot of realizations today about myself, my career, and most importantly, what kind of experience and work would better qualify me to do certain jobs or even allow me to be better prepared to work for myself. Recognizing your deficiencies is such a ridiculously obvious way to better yourself, even though it's not always obvious! -
How do you persist enumerations in SQL Server?
This is one of those developer pulse questions. How do you prefer to persist values from an enumeration in your database? I've seen people suggest using its corresponding numeric value as well as a string.
And for those of you really looking to the future, how do you do it for SQL Server 2005? If I understand it right, since you can use your own types in the database, it sounds like a good idea to do just that. What I'm not sure of is how you deploy the enumeration from your humble dozen lines of code to something that lives in the database.