April 2004 - Posts
I'm the kind of guy that likes building the database and data modeling as early as possible in a project. Last night, I started building a database for my DevCampus project, and as I started naming the fields I realized that I've never really developed my own naming conventions for tables, columns, views, stored procs, indexes, or relationships. Not that this is bad, per se, I mean it's never really been an issue for the projects I've done. That said, I'd like to establish some kind of consistent nomenclature for my database objects.
I've seen and used many different naming conventions over the years. I've gone overboard before, giving a primary key column a name like “COL_PK_INT_DOCUMENT_ID“, until I found out the Oracle doesn't like it when you give things a name with more than 32 characters. Knowing that scared me into naming that same field “ID“ the next time around. I guess the best way to go is to find some middle ground on the names. I want names that are descriptive enough so that I won't be wondering what type of data it is or what kind of object it is, but at the same time I don't want names that turn my typical SQL queries into long paragraphs.
What naming conventions would you reccomend for database objects?
After reading Scott Reynolds thought-provoking post on the growth developers go through during their careers, I got an intriguing idea. Before I just blurt out my idea though, let me explain how his post led me to think of it. Scott's tenet is that there are 4 underlying elements that contribute to - and affect - the growth of a developer's career. That is to say, without a good amount of these 4 things, your skills as a developer, and thus your career, are going to be short-lived.
Now, what I find interesting about these 4 things Scott has chosen is that no matter how much desire and talent you have, it's not going to benefit you greatly unless you're able to get some hands-on experience with the technology. But wait just a minute now. Without opportunity there are limited prospects for experience. (I'm talking about the opportunities developers get through daily work, and not “play time”.) I know this truth all too well. I had a job for about a year where I did nothing but code the same COM objects over and over. Had my boss been smarter, he probably could've written a clever script to replace me and do my job. During what seemed like an eternity at this job, I would often read or otherwise hear about other really interesting jobs and think to myself, “I wish I had that kind of job for the opportunity it would be” whether it would be a chance to learn a new skill or something else.
So every evening as I left work and headed for home, I would dream up projects I could do, during my free nights and weekends. I wanted to give myself the opportunities that I knew the work at my job would never provide. As motivated (desire) as I was during this time, it wasn't working out. I noticed myself feeling burned out from spending every waking moment trying to improve my skills and create opportunities for myself. So in this case, my opportunities were limiting my experience. So, because I knew this was a dead-end job I ended up quitting and finding a job that harbored many more opportunities. The decision I made to quit the job with little opportunity was one that I think I will always stand by. It just isn't in my nature to want to stay working somewhere that provides little opportunity. To this day, I don't know how it became known to me how important opportunities are. I'll just chalk it up to intuition I guess.
Which leads me to my idea.
For those developers out there that might be, for one reason or another, stuck at a job with little opportunity, this idea is dedicated to you. I want to provide you with a way to get the opportunities you need in order to obtain the experience you want. Not only for your career growth, but for you personally. So, as part of the plans for my new site, I'm going to run an initial poll to find out what kind of projects the community would like to get experience with the most, then we'll do them together. It depends on what kind of project it is but, I imagine it can include requirement specs, maybe some UML diagrams, design documents, object models, all the way through implementation and coding, unit-testing, and deployment. If there is enough interest upon project completion, we can keep it around and track how maintenance of the project is carried out and how improvements or changes are implemented for the project. Every project artifact will be available for download so everyone can see exactly how things were done. Some kind of post-mortem analysis would probably be beneficial to the projects as well.
Let me know what you think. I think developers should have other outlets in which to obtain opportunities and experience besides their jobs.
Before I say anything else, I'd like to thank Adam Kinney for finally giving me the shove I needed to go check out Orkut. I'd been meaning to give it a look for weeks now...but somehow I kept forgetting. Thanks Adam.
So, as the title of the post says, I've set up an Orkut community for DevCampus. I'm going to post a few messages to the forum tonight so anyone that wants to find out what the site is going to be about can stop by and check it out. You need an invite from a current Orkut member to join so if you're not already a member and need an invitation to check it out let me know!
Oh yeah, I'd also like to thank Kent Tegels for his little piece of evangelism work in pointing Adam to my announcement. Thanks Kent.
I'm sitting here in bed tonight watching a new episode of Law & Order SVU and the phrase “BLOG” has been used a few times in reference to a website kept by a suspect. Guess the term is really catching on if Hollywood is using it.
Now that construction for the new site has begun, I'm trying to come up with a list of departments. Departments are the highest level of organization for all of the information to appear on the site.
So far, here is the list of departments I've been able to come up with:
- Programming Languages
- Internet Development
- Database Technologies
- Scripting Languages / Technologies
- Computer Graphics Technologies
If you're reading this and are thinking about making a suggestion, please do. I'm trying to solicit feedback as much as possible since I want this site to be driven by what the community wants and what makes the most sense to people trying to learn from the content. There are some things that I want to provide courses for but, I'm having a hard time coming up with which departments they should go under. For example, which department should the .NET or Java platforms go under? My first inclination is to create a new “Development Platforms” department, but I haven't mentally approved that idea yet. I also would like a department for things like Test Driven Development, Agile Development, eXtreme Programming, Aspect Oriented Development, etc. What should I name a department that has courses on those topics? Development Methodologies ? And should I include OO topics in with those? Where does SOA belong? Lots of questions to answer here.
Just categorizing and applying a hierarchy to all of these topics has been more challenging than I thought it would be. I'm not going to get bogged down in the details yet though. I like working iteratively so I envision myself revisiting the departments classifications as things progress.
UPDATE: Based on feedback I've got so far, I've come up with the following departments:
- Programming Languages
- Internet Development
- Database Technologies
- Development Methodologies (AOP, XP, Unified Process, TDD, MSF)
- Scripting Languages / Technologies
- Computer Graphics Technologies
- Software System Architectures (SOA, OOP, Client/Server, Distributed, Server-based)
- Source Code Management Systems (VSS, Vault, CVS)
- Software Project Management (less technical and more PM focused courses)
- Systems Engineering (Less about software, more about hardware/networking/protocols)
Where should I put stuff like the .NET Framework, J2EE, UML...?
After reading Ted's Post about Robert's Post - which was about Marcie's post (gotta love following the links/trackbacks/comments/pingbacks stuff) - I thought I'd throw my hat in the ring on the subject of women (or dare I say girls) in IT.
I agree somewhat with Ted in saying that I think Robert missed the point of Marcie's post. I think Robert lacks (as all men, including myself do) the women's perspective on the issue. I think the better question to ask ourselves though, is “why are there are so few women in tech jobs?“, rather than “who cares what gender the MVPs are?“
It's not because they can't do the jobs as well. I still remember many years ago when I was a fresh young n00b and attending my first MOC course at a CTEC and the woman that instructed the class did an excellent job. She even had a pretty good sense of humor if I remember correctly. I've had a couple female bosses before too. So what's the deal? To quote Julie in Ted's comments, "So why is it that I can count the number of bright female programmers ...that I am aware of ... on one hand?”.
I'm interested to hear what either Marcie, Julie, or maybe someone like Michele has to say on the subject. What's sad (I think) is that that last sentence linked to every female techie I'm aware of. Ok, maybe minus Lissa.
I think I'm going to do some thinking and research on this and post my results / thoughts.
UPDATE: Something I found interesting; I asked my wife (who's far from computer illiterate but not exactly a techie) why she thought there weren't more women in tech jobs. Her response? The lack of emotion. She said she thinks women thrive on jobs that involve emotion (Teachers, Nurses, etc.) whereas she thinks men enjoy the lack of emotion found in tech positions. I think she might have a good point.
How do you know you're a geek?
When it takes you longer to choose a domain name than it did for you to choose the names of your kids.
What's worse is I didn't even have to clear the name with my wife. Oh well, at least nobody already owned the names we chose for our kids.
Anyway, I'm happy to announce the birth of my newest project. Her name is DevCampus and she weighed in at appx. 7 lbs*. Actually, I got twins!**
Disclaimer: For those of you worrying about my mental state because of the parallels I'm drawing between having a baby and registering a domain name; don't worry, I'm not nearly as excited as when any of my 3 kids were born.
* the weight of the laptop I registered the names with
** I registered both the .com and .net names
My last post did just about what I wanted it to. I got some questions from people and it gave me some more to think about. A sincere thank you to those that took the time to leave me feedback.
To answer some questions:
Q: Wim said, “Interesting idea. I think you do need to scope it more. How realistic is it to want to cover everything?”
A: After pondering this for a while, I thought yeah, it might be a little unrealistic to want to cover everything. So, here's what I decided; I'm not setting out to cover everything..BUT, I'm not going to leave related technologies hanging. What I mean is, I'm not going to create an XHTML course without having XML and HTML courses. No ASP courses without COM Object and VBScript courses. That sort of thing.
Q: Marcie, the Datagrid Girl and now CodeProjectie asked, “Wow, are you going to develop all of the content yourself?”
A: Oh, heavens no. This is actually a really good question though. I get the feeling that I'm going to be very picky about who I let submit/edit content for the site. I'm not exactly a perfectionist but I know what makes for good learning developer learning material. We'll see but I get the feeling I will be screening all the material and only taking submissions/content from people that I know and trust.
Chris Garrett mentioned getting a host on board and rewards in the way of ad revenue and praise. This is really a difficult decision for me. I know ads help bring in some money but, I'd rather have ads or images that point to resources and other good communities. I'll just have to wait and see on that one. I'm going to go with no ads to start with, but I will build the site in a way that will facilitate easily putting them in later on. Perhaps I'll just start off with Amazon associate links and stuff like that.
I've also pointed a few of my peers to the idea and what I've heard so far is “ how about something geared towards actual developers in actual situations?” to which I say, “Exactly!” I want to post some stuff that's just turn-key solutions also. Need to encrypt some sensitive data? Here's a class to do that and here's a couple sample projects showing how to use it. That kind of thing.
Lastly, I want to mention the importance I think opinions hold. I am definitely going to leave room for opinion/editorial pieces on the site. If nothing else, they'll provide an outlet for when visitors have had enough techno-babble. I've benefited greatly from others perspectives, and I hope to be able to do the same for others visiting the site. Forums won't be there at first, but they will eventually. I have a couple of ideas having to do with comic relief too. Don't want people taking the site too seriously! ;-)
Now, my questions to you:
1. Do you like sites better that have no ads on them or are you so used to ads now that they don't bother you?
2. What kind of information do you consider “must see” on the home page of a site?
3. Do you prefer sites that allow you to leave anonymous feedback/posts or is registering no big deal to you?
4. How often do you find yourself using turn-key solutions from web sites? Once a week/month/year? Never?
That's all for now. More to come later. Stay tuned.
I feel that my weblog is probably the best place to make an announcement like this (more people probably read this than anything else I write) so, with that, I'd like to announce that I have decided to make the leap into building a developer community learning website. I haven't even settled on a name yet, but I have a few ideas.
Why am I announcing this right now? Why so early? (I haven't even registered the domain yet.)
Because I believe in word of mouth marketing and promotion. But, that's not all. I also believe that in order for this venture to be successful (according to me) I will need to gather input from the people I'm going to be building it for. Developers.
You might be thinking I'm just trying to build YADCW (Yet-Another-Developer-Community-Website) like CodeProject, DeveloperFusion, VBCity, or ASPAlliance, et al. Well, not exactly. It's going to be different. In fact, I don't think anyone has done a site for developers like this before. That's one of the main reasons why I'm even going ahead with making something of the idea. I think it's original. Unique. And, I think it's going to be a lot of fun.
I am also going to try and develop the content such that it will cater to different styles of learning. If you're not someone that learns well from reading an article or book, we'll have animated flash tutorials for you to watch also. Probably some video content mixed in as well. I hope to be able to explain things in a way that makes the complex topics as easy to understand as possible. I think I have talent in this area.
I know there are a lot of great developer learning websites out there. There are a lot of great books on the shelves too. There are a lot of great trainers, college professors, and speakers too. One thing that I have always felt is lacking though, is effective organization and delivery of all this great information in a way that's really easy to understand. For anyone. That's where I hope to be able to change things.
So what kind of topics do I plan to cover? As crazy is this is going to sound,.... everything. Anything less and I don't think I would be living up to the idea of it. As far as the format goes, I am thinking of organizing things much like a university does - into the following structure (so far..this might change):
- Departments: (highest level) - Programming Languages, Internet Development, Database Technologies, XML Development, etc.
- Courses: (under Departments - Programming Languages for example) - C, C++, C#, Visual Basic, Perl, Java, Python, etc.
- Levels (under Courses - Visual Basic for example) Visual Basic Level 1 through Level (n)...
- Lessons (under Levels) - the number of lessons per Level will vary greatly I presume depending on the breadth of information there is to cover.
There's lot of enthusiasm in me at this point and I hope to be able to maintain it and see the site through to completion and growth. If you have any comments or ideas, no matter what they may be, please send them along. I know I won't be able to please everyone, but I'd like to try. Hey, I'm only 23. I've got a lot of years ahead of me.
I was listening to the latest .NET Rocks! episode; the part where they were discussing Service-Oriented systems. I don't remember exactly who-said-what but I do remember what was said. There was mention of something like, “You only want to pass XML messages back and forth, not objects.” The reasoning behind this (IIRC) had to do with interoperability. Let's say you have a .NET caller and a J2EE caller. Since they both define objects differently (and perhaps create and expect different serialized representations of objects) it's not gonna work. This got me thinking, why not have someone (like say, the W3C w/ the help of people at Sun, IBM, MS, etc.) develop a standard “object” schema for Web Services (and SO systems) to pass back and forth?
Now, yes, I realize this doesn't mean passing objects back and forth as opposed to XML messages would become a good thing. I know just because you can (or could) doesn't mean you should. Having said that, wouldn't a standardized object schema be of some benefit? There's no denying OOP is wide-spread. A .NET caller or J2EE caller could take the XML representation of an object and create it dynamically. For example (this is just off the top of my head and not thought through well):
<object type=““ basetype=““>
<property name=““ value=““ />
<method name=““ accesstype=”” address="">
<parameter name="" type="" required="" />
I realize this is a huge simplification of what the schema might actually look like, but perhaps someone could provide me with some insight as to why this would or wouldn't be a good idea. I'm pretty sure I'm nowhere close to being the only one to think about something like this, but I haven't seen or heard it discussed anywhere. Anyone care to comment?
UPDATE: One thing I forgot to mention, was what I thought the purpose behind an object schema might be. Maybe in order to participate in certain types of XML Web Services you would have to adhere to this object schema standard. So .NET, J2EE, Python, whatever...the implementation would have to be able to construct objects from this standard XML object schema.
More Posts Next page »