We talk. We talk a lot. And then we talk some more. We talk much more than other software shops I’ve been in. The reason is that we want/need to know all the details before we start coding. What are the requirements? What does the data look like? How will this affect the application? One of the worst things a developer can do is just to assume they know the answers and slap some code together. To ensure we are producing the best code possible we stop and talk about what we are doing. This may mean reviewing the requirements with an analyst, digging deeper into the data with a water specialist or having another developer evaluate your ideas. No matter what it is we try to stop and get the correct and complete answer before moving on. If I had a nickel for every time I was told to “stop typing and let’s talk about the code,” I’d be rich.
We are also given the freedom to try new technologies. If you don’t know, for a developer this is the equivalent of a kid at Christmas. It is a shiny big colorful box that we just can’t wait to open. Obviously this can’t happen all the time and the new tech isn’t always something the company can use, but it happens enough to make the job exciting. We get to explore new technologies and that expands our skillset and has had several direct benefits to our primary product.
Here is a brief example of how we recently improved a feature in Water Sage. It started with two of us, a white board, and probably over an hour conversation but it felt like less. We talked about every possible issue we could think of, everything from bad data to what algorithms we needed to use. Then we split up and both of us coded what we had designed but with each of us using a different language. Once one of us had the solution done we took that and moved on to the next step. Guess what … the next step was to talk about it some more. We learned more so we talked about it some more. We got other developers to look at the code and talk about it some more. After another white board session and code review we actually started typing again. The result was good clean code and an improved feature.
We have ongoing book clubs and lunch and learn sessions to continually sharpen our skills and stay on top of our game. These are my favorite meetings because they are a group of professionals learning and getting better. There is always a mix of analysts and developers and rarely does the conversation simply follow the chapter or topic. This mixed set of views and open conversation is great for expanding our skills. We regularly swing between specific examples of recent work and abstract computer theory. Possibly the most amazing thing is that these aren’t just academic discussions. We bring these computer theories and water knowledge directly into our work. We’ve identified and improved code performance bottlenecks based on these sessions as well as designed features based on the water knowledge we’ve gained.
Combine this development environment with our experts’ knowledge of water and we are able to create a unique tool for finding and analyzing water rights, wells, land and more. We have high performance searches based on technologies and algorithms we’ve learned using the processes described above. We have analytics pages custom built for each set of data that allow user to go deep into the data and let us developers use even more tools. Our stream searches and priority stacks are unique to us and come from a combination of our analysts’ and developers’ skills. All these features and more are built in a powerful cross platform website that continues to grow and improve.
The bottom line is that being a Water Sage developer is a fabulous job for several reasons, the two biggest being the personalities we get to work with and the way we get to practice our craft. Most companies say they take their culture and people seriously but I’ve not found one that does it as well as Ponderosa Advisors does. We’ve gathered a broad set of very skilled professionals and set them loose in an environment where they can create, produce, and continue to grow.