Navy SEALs jump from the ramp of a C-17 Globemaster III over Fort Picket Maneuver Training Center, Va. (Air Force photo by Staff Sgt. Brian Ferguson)
In the Navy SEALs they have a saying: Everyday you have to earn your trident. The trident is the symbol that sailors earn as they complete the training that makes them part of the elite SEALs. It is possible to lose one’s trident however. To prevent a behavior that might cause this, the SEALs remind themselves that everyday they have to “earn (the right to wear) their trident”.
As I spend more time in the programming world I have come to realize there is great wisdom in this approach. A good friend of mine once told me that “Experience and skills are expiring assets.” In other words, if you don’t use them, you loose them. Just because your job title has the word “Senior” in it, you don’t automatically get a pass. You need to earn that title every day.
So as a programmer, how can you earn your place? How can you improve who you were yesterday? What does it take to make sure you are becoming a better programmer? Here’s what I’ve been doing. Continue reading
I’ve become the Johnny Appleseed of Continuous Integration servers.
After I was bit by the testing bug, I quickly developed an interest in CI and began setting up servers at the places I worked. The benefits of letting a computer run the test automatically are so appealing. It cuts down the number of “dumb” bugs that are generated. It also helps ensure that the code is still working the way it used to.
What is a “dumb” bug? It is one of those bugs that is very simple (like a missing parens) and is found as soon as another person takes a look at your code. The discovery usually leads to a facepalm by the developer who did it.
Over the years as I’ve traveled to different companies I’ve been able to help introduce various Continuous Integration servers to other developers. If you would like to learn more about why CI is important, I will to point you to THE resource that I learned from, Continuous Delivery by Jez Humble. Its a big read, but it really covers the topic well and offers a lot of useful strategies.
Here’s a run down of my experiences with 4 different Continuous Integration servers. Continue reading
Before coming to Python, I did a lot of work in Java. Java is pretty good language and environment, but it is different than Python. Beyond the language syntax there’s a ton little differences to be aware of. Sometimes when we move from Java into Python it shows by some of the things that we do.
Here’s some things I’ve learned over the years, (or things that I’ve stubbed my toes on recently). Continue reading
Debugging with real bugs
Recently at work I discovered that everyone on my team had different approaches and tools they used for python debugging. Here’s a quick run down of some of the favorite tips and techniques that we came up with. This list is ordered from simplest to more advanced. Continue reading
One day you look up and you realize you don’t feel like doing anything. Tasks are piling up, everyone seems to be on your case, and you can’t get it in gear to get even the smallest thing done.
It happens to everyone, and affects each person a little bit differently. In my experience there’s a few common warning signs. Continue reading
Mindset is everything
To software developers, the word “agile” usually conjures up thoughts of project tracking, story points, and team velocity. To truly be the most effective developer that you can be, the word agile should also remind you that change is constant and that you must adapt. An agile mindset is the greatest tool a software developer can possess.
Too many software developers fall into the routine of their process. We work our stories, finish our sprints, and move on to the next iteration. While this does allow software to be produced in a predictable manner, it also can shackle developers. When facing a new challenge that challenges their existing mindset, these shackles can hold a developer back. Continue reading
Every time I think I’m doing pretty good with my projects, I take look over and see what Elon Musk is doing. Then I instantly feel like I’m wasting my life. That guy does such huge things and he does them so quickly it is mind boggling. What is his secret? Can I be like that?
The answers is yes, if you use “First Principles” reasoning. I have found that when you apply first principles to debugging software that you will get to better solutions. So what is first principles? Here’s Elon explaining the how and what of it:
So here’s the take away:
In most workplaces, software developers have someone who tells them what to do and when to do it. Managing projects usually is the responsibility of a Project Manager, Scrum master, team lead, or even just “the boss”. But what happens when you don’t have that guidance? Or of you are working on side project by yourself? Here’s how I manage my projects.
If you are going to succeed on a project you’ve got to have a plan. A plan has a start, an objective, and the series of steps that have to be taken to get to the objective. Continue reading
In the world of software development there’s always something new popping up. New languages, frameworks, operating systems, databases, you name it. The challenge for a developer is to stay on top and ahead of these new technologies. It can be very tempting to give up and not learn anything new, but I want to propose that learning new things like a new language or framework can be very helpful!
Learning begets learning
The more you practice the art of learning something new, the easier it is to learn new things. This sounds like tautology, but it is true. Continue reading
Have you seen the Gitlab Continuous Integration feature? It is pretty sweet. All you have to do is include a special yaml file and then when you check in new code it will build/test it for you. As awesome as that is, can it also deploy your code? The answer is YES!
The first step is to create a .gitlab-ci.yml file in the root of your repo. This file is seen by gitlab and is used to configure a Continuous Integration (CI) server that will build and test your code. Continue reading