Small Talk Episode 6: What We’d Tell Our Younger Developer Self
What is the first thing you know now that you’d love to tell your younger developer self about software development?
You will never know everything. The people you work with have had vastly different schooling, work, and life experiences than you which caused them to learn things that you probably don’t know, and that’s ok. It doesn’t make you any less knowledgeable in what you do know. Most people in technology love to learn and share what they do know. Talk to people, ask questions, and you will learn so much.
I need to tell my younger self two things: 1) Design patterns are used frequently and it is worth your while to study them but the SOLID design principles and good old OOAD are something you should apply every single day and it is therefore worth your while to master those. 2) Unit tests are an important, valuable and required deliverable for building an enterprise application. And a bonus note to self: If a chunk of code is dificult to test, look at your design, you likely have a tight coupling that should be modified.
I’d like to tell my younger self that “you’ll never be completely satisfied with any code you ever write and that’s okay.” If you reach a point where you look at something and think it’s perfect it likely means that you’ve stopped growing. Examine past work and critique decisions that you made in the same way that you do a code review for a peer. Take advantage of hindsight to see what worked and what didn’t. Use that information in the next project. Understand that making mistakes is a natural part of learning. When you make one, you should take away some knowledge.
Always try to learn a new programming language. Your favorite coding language is not the final solution to all of your future problems. As long as there are new ways to describe and solve problems, people will invent new languages to do deliver solutions.
Is there an impactful development technology you’ve continued to use throughout your career?
The most impactful development technology I’ve used throughout my career is Java. I’ve been using it since I was a Freshman in college and it always seems like the perfect mid-layer to any project I am working on. Java tries to stay modern and provide the tools and functionality that the developers are asking for. With the addition of lambdas in Java 8, it has provided the opportunity for developers to code in a different, more readable, more efficient way while still using the language they are familiar and comfortable with.
I have done a lot of integration work over the years. I was using a message queue then and I am still using them today. There might be some new bells and whistles but the asynchronous messaging patterns have largly remained the same.
One of the most impactful development technologies that I’ve used in my career is .NET. Compared with previous methods of writing code on Windows the .NET Framework was a revelation. The ease of writing high qualify code quickly brought about a huge change in the industry.
For the last 19 years, it’s been Visual Studio. It’s overladen with features, but it is still the gold standard of development environments. I’m interested to see where Microsoft takes Intellicode and AI in the future.
Is there a development methodology or technology you’re using now that you can see your future self questioning?
I see myself questioning agile development in the future. In some of the larger companies I have worked for, agile had become much more bloated and almost a combination of agile and waterfall development that had been shoehorned into place because waterfall development is “bad”. I see bloated agile development becoming questioned and a new development methodology coming into light that embraces more modern technologies like cloud computing.
I think my future self would question anything that ends up running on-premesis.
Not as a developer but as a consumer, I’ve been questioning Biometric Identification (facial & fingerprint recognition, etc). It is quickly becoming the tool of oppressive governments around the world. It is questionable whether we can control it’s abuse. I would hesitate to require it in an application.
Founded in 1991, Intertech delivers software development consulting and IT training to Fortune 500, Government and Leading Technology institutions. Learn more about us. Whether you are a developer interested in working for a company that invests in its employees or a company looking to partner with a team of technology leaders who provide solutions, mentor staff and add true business value, we’d like to meet you.