Tag: software development

  • The Agile Cult

    This editorial was originally published on Sept 23, 2008. It is being re-run as Steve is on vacation.

    Can developers change the way they build things? Can corporations?

    I’d like to think so. After all there are companies and developers that get more efficient as they evolve their development practices. I know that I’ve gotten better at building software over time, getting more efficient as I learn better ways to actually write code, keep track of changes, quickly build and test, etc. Or maybe it’s that I’m more disciplined about working carefully and actually doing things like checking in and out of version control, writing better test cases, and actually following the plan I’ve setup.

    The Capability Maturity Model (CMM) from Carnegie Mellon University that measures the ability of a software development group to better build software. Most software teams rank very low on their scale, requiring much effort to move up the model to a more mature style of development. I’m not sure of those groups at a CMM level or 4 or 5 produce better software than those at level 1, but I’d like to think that they do.

    There was a blog post about Agile development, which is a method of software development that I think can help one build software in a quicker and more flexible manner. In the post, which is a look back at an attempt to build a project using this methodology. It didn’t work out, though they did complete the project on time.

    It’s an interesting read to see a nice self examination of how their culture actually failed them. They couldn’t really build Agile software, mostly because of the culture at the company. Despite the desire to change and the buy-in of the technology team, many other factors ended up preventing them from really sticking to their Agile plan.

    Well they completed their second project successfully, albeit with some overtime involved. They recognized that they hadn’t used the Agile methods and they’d fallen into an Agile Cult instead. It seems the author was a little disappointed in the result, and perhaps in their inability to deliver with Agile methods.

    Personally I think that even partially adopting Agile methods results in benefits. Just because you can’t deliver incremental releases or change your focus quickly doesn’t mean there aren’t benefits. Having a different mindset and trying new techniques can have a lot of benefits for your team. Just thinking about building software differently can let you re-think the way you do things, allowing you to be more self-critical and look for ways to be more efficient.

    Constantly trying new methodologies might not sustain you for the long term, but trying different development methodologies can help you find the things that work best in your environment. Once you know what works well, you can then set about changing the culture to become a more efficient software development team.

    Steve Jones

    Video and Audio versions

    Today’s podcast features music by Everyday Jones. No relation, but I stumbled on to them and really like the music. Support this great duo at www.everydayjones.com.

    Follow Steve Jones on Twitter to find links and database related items and announcements.
    Steve Jones Windows Media Video ( 20MB) feed

    MP4 iPod Video ( 18MB) feed

    MP3 Audio ( 4MB) feed

    Feeds are available at iTunes and Mevio

    To submit an article, rant or editorial,
    log in to the Contribution Center

  • Programming

    programmingTechnology is here to stay, and those of us working in this business probably realize more than most people how dependent and integrated our lives are with technology. Even in countries that don’t have the infrastructure or economies of first world nations are using more and more technology in their lives. Mobile technology seems to be at the forefront of much of what we do, but I’d argue that data is fast becoming more important than the software itself.

    The one thing I’m becoming more convinced of is that this article is right: programming is a core skill. It doesn’t matter if you’re a developer building mobile apps, or a contractor scheduling workers, or a homemaker that wants to balance a budget. While there is software that might help, it seems many people are quick to open a spreadsheet, add some data, and start building formulas. These days the jokes about people not understanding how to program a timer on a DVR are fading quickly as more and more non technical people are using technology to make their lives easier, or perhaps, more complex, as they manipulate data and software.

    I suspect the fundamental skill of logically analyzing a problem and coming up with a set of steps to solve it is becoming more important all the time. In many businesses the ability of workers to think for themselves and handle a variety of situations is more desirable than the ability to follow orders. Even in industries where workers need to follow instructions, those instructions might be coming from computers more and more often. There will be a huge gap between workers that can think for themselves, perform data manipulation and make business decisions and those who cannot. That gap might take the form of compensation differences, opportunities, or something else, but in many industries, those that can build their own programs, whether in code or processes they follow, will advance faster and further.

    Not everyone will want to be a computer developer, but most everyone can benefit from understanding how calculations and instructions can be chained together to build a process or workflow. With newer generations becoming familiar and comfortable with technology from early ages, my vote would be that we should add programming to the three Rs for future generations.

    Steve Jones

    The Voice of the DBA Podcasts

    We publish three versions of the podcast each day for you to enjoy.

  • Your Frame of Reference

    sql_cat_logo_smIs a database snapshot in SQL Server update-able? Most of us would say no, but I ran across a blog from the Microsoft SQLCAT team that proposes a method of issuing an insert, update, or delete statement in a database snapshot context. You can read the article for the details, and we could argue if this is really allowing a snapshot to be read/write, but that’s not what I noticed as I read this.

    This is a very creative way of approaching a problem. It changes the frame of reference slightly so that we rethink what the customer is trying to accomplish instead of what the technology limitations are. There might be more elegant, or more easily maintained solutions, but I found this to be creative, and perhaps useful, approach for solving a certain domain of problems.

    I think quite often we get caught in viewing problems in terms of our frame of reference, or in terms of common technology implentations without thinking through the problem from the customer’s frame of reference and working on an effective solution. That’s our job most of the time: being effective as we solve problems. If we view all problems within the narrow range of our past solutions, we are relying on our experience, but that may prevent us from building applications that work better than our past work, go beyond what our customers want and get them excited about using the end result.

    However it’s a balance. I’ve seen hacked solutions that didn’t perform well, or didn’t scale and ended up causing problems for years. Looking at the problem from the customer’s viewpoint needs to be tempered with the requirement of building a solution that performs well and fits within the framework of the environment. Ultimately I think the way to get better at building applications (and databases) is to increase your knowledge and experience. Learn more about other people’s solutions, and engage with the rest of the community to sanity check your approach.  Learning new techniques that have worked for others, and experimenting in your environment to build better software over time.

    The Voice of the DBA Podcasts

    We publish three versions of the podcast each day for you to enjoy.

  • The Best Programmers

    Keeping the best programmers is always a challenge.
    Keeping the best programmers is always a challenge.

    Are you one of the best people at your job? If you are, then do you experience some of these feelings and look to move on?

    • Frustration
    • Boredom
    • Lack of a challenge

    Or have you settled into a routine that you like and can live with? If it’s the latter, you might not really be one of the really talented people. Read this piece on How to Keep Your Best Programmers. I found it interesting that it looks at the motivations and reasons why very talented people might not like a job and move on. I think it’s mostly correct, though it’s not necessarily talent that determines whether people stay or go.

    I think most people find these same frustrations or issues with their jobs. Whether you’re a guru level programmer, or a basic beginner, if you perceive an inversion of meritocracy (or you are bored, or you don’t enjoy the job), you’ll look to leave. Whether you can is another thing completely.

    Many of us have various levels of responsibility, to our families, creditors, or even ourselves. Those responsibilities may cause us to rethink the problems with our current job, and appreciate the security of just having a job. This is especially true in today’s world where loyalty is in short supply from employers, and many of us know that the next position may not be more stable in terms of employment for the foreseeable future. As the saying goes, the devil you know is better than the devil you don’t.

    That’s the crux of the issue. A job is a job. I’ve found that to be true across many positions over the years. Some I enjoy more, but ultimately there are always tasks or duties in every position that are drudgery. They are just work. As long as you understand that, and appreciate the challenging and interesting things about your job, you’ll be fine. It’s also why I place more importance on the other staff than I do on the job responsibilities. It’s much easier to put up with a boring or annoying job if the people are interesting than it is to put up with a great job when the people suck.

    Steve Jones


    The Voice of the DBA Podcasts

    We publish three versions of the podcast each day for you to enjoy.