Daniel Bickler may not have entered the development field in the traditional fashion, but that hasn’t affected his passion for or his expertise in his career. A crucial member of Prominent’s development team, in his role as a software architect, Daniel’s main goal is to make sure that software architecture is constructed correctly and efficiently, ensuring a better product for the customer. Read on to learn more about Daniel’s daily life at Prominent, his interesting background in development, the Prominent development process, as well as some of his hidden talents.
What led you to a career in IT?
I had a bit of an odd path in. I’ve always been a nerd, however, I was initially very into music, so I went to college pursuing a degree in trombone performance. Halfway through my sophomore year, I bought a beginning C++ coding book (not the way I’d recommend starting now!). I learned the basics from it and then started making simple 2D games with the help of Google. Over the summer, I realized I enjoyed coding more than practicing trombone. I eventually ended up with one degree in trombone performance and one in computer information systems, but my career since then has been in software development.
Can you discuss your current role as a Software Architect at Prominent?
The best way I can describe my role is to compare it to the work of a developer. From my perspective, a software architect works to improve the software development experience for everybody. They work to create frameworks that make developers’ jobs easier and think of how to design the system so it’s easier to maintain. Architects are involved across projects to ensure that best practices and standards are being consistently applied, and if a developer has a great idea to make things better, then it gets shared among the rest of the team so we’re all producing great quality.
I’ve worked on everything from large enterprise projects containing millions of lines of code and hundreds of developers to small, greenfield projects where I’m the sole developer creating something from scratch for a client.
So how much are you coding on a daily basis, and what does your role look like outside of coding?
About 25 to 35 percent of my time is spent coding. The rest is spent performing code reviews and attending meetings to envision solutions, discuss and plan how best to meet customers' requirements, and brainstorm alternative strategies for the software we’re producing to ensure high quality.
What is unique about the software development process at Prominent?
We don’t hesitate to try new things; we work really hard to have an efficient and customer-focused software development life cycle and are constantly looking at new ways to enhance it. Other places I’ve worked have had their “process”, but at Prominent anybody can suggest improvements for the team to discuss, and if everybody’s in agreement, we try it. Our team’s enthusiasm for process improvement and exploration is one of my favorite parts of working here!
What programming languages have you used in the past?
I started as a Java Developer then transitioned to mostly NodeJS/Typescript. Recently, I’ve been doing more and more C# coding and I’ve also used C++ to create a couple small games when I was first learning to code and for Arduino projects. I also recently did a funIoT project that employed serial communication to a Raspberry Pi device as part of an embedded system.
In your opinion what distinguishes a good software developer from a great one?
Computers are currently simple boxes that just do what they’re told. Therefore, a great developer is superb at logic puzzles, because code is just a logical set of instructions for the computer to follow. When it’s not working, that just means we unintentionally told it to do the wrong thing and need to update the commands we’re giving it.
Great developers have a deep understanding of the programming languages that they’re using and the engineering behind that language— understanding what any given command will make the system do at a low-level. Most languages have good documentation, so knowing how it works under the hood makes everything easier and results in better software.
Great developers also have an intimate knowledge of their IDE (the software we use to develop software). IDE’s are constantly improving, and the more we know about its capabilities, the faster we can develop software.
What advice would you give to someone who wants to become a software developer?
Code, Code, Code. The more code you write, the better you’ll get at it. The ability to persevere and find a solution is a skill that needs to be cultivated. Pick a simple project that’s just beyond the realm of what you know how to do and build it. Then figure out how to build it better. Improve the code and make it more maintainable. Add features that push the boundaries of your knowledge. Read voraciously to constantly be expanding your knowledge.
For example, after learning basic C++, I decided to make 2D games as my next level. After a quick Google search, I chose the SFML graphics library and implemented Minesweeper. Then I implemented a “Top 10” high score list as the next feature because I didn’t know how to do it and figured it’d be the logical next thing to learn. In hindsight, the code is bad, but at the time, I was very proud of my ability to figure it out.
After that I did some more reading about how to better organize a game engine, following along with a blog post to learn about animation and make a simple Pong clone. From this stronger foundation, I made a maze game with multiple levels and enemies to avoid. I was storing the level details in a simple text file, so the next feature for that project was a level editor so I had an easy way to create and modify levels for the game.
Each of these was just beyond my knowledge and abilities when I started, but by the end of each project or feature I had grown as a developer and a programmer. It developed my attitude of “I’ve never done this before, but it’s code so I can figure it out,” which has aided me throughout my career.
What’s your favorite thing about working at Prominent?
The people. Everybody is dedicated to helping our clients solve their problems more efficiently. It sounds cliche, but I truly believe the people at Prominent are amazing!
What drives your passion for your career?
Learning. I love reading and expanding my knowledge. I’m trying to always improve, whether it’s trombone, software development, or something else.
Lastly, what are some of your favorite activities outside of work?
I love the outdoors, being away from people and cell reception. This includes hiking, backpacking, and camping (in tents, not RVs). I also like working with my hands, and if I ever quit software development, I am going to go to work for a contractor building things. I also count playing video games as one of my guilty pleasures.