Trail1 -> Software Engineer/Developer and Software Architecture
Tech Trails on Tech Thursdays - A new blog series in 2022, starting with Trail1 where I talk about my first role as a Software Engineer and it's relation to Software Architecture
Firstly, I am grateful for your response to Poll and Blog series in 2021.
Starting today 31st Mar, 2022 I am here with a new series Tech Trails on Tech Thursdays where I will take you through Trails on my 2 decades journey in software industry, about the roles I played, projects that I worked on and its relation to Software Architecture. This is an interactive series.
Every month on the last Thursday I will cover one role, today starting with Software Engineer/Developer and Software Architecture.
I will share the real time project that I worked on, my thought process at that time and how it can be in today’s scenario.
Opinions will be published as anonymous on my website in Dec 2022 with additional analysis. It would be a part of the last post of the year where I will talk about Software Architecture and its relevance and integration with other roles.
To start with let me give some background,
My connection to software industry is since 2001 when I started as a Training Associate, then created 2 static websites, 1 billing system as an Independent Developer. And today after 2 decades I am back to Trainings as an Independent Software Consultant and moving ahead with my Company Incorporation (about which I will announce soon). This makes me share Trails of my journey where I played various other roles in software industry in past 2 decades.
Trail1 -> Software Engineer/Developer and Software Architecture
2004, was my official dive in, full-fledged, full-time role as a Software Engineer, young enthusiastic with lots of dreams to become an excellent software professional.
Develop a customized framework as an Software Development Kit [SDK] which an application developer can extend and build applications on top of it.
Application that used the framework:
A “seed to sale” user-friendly enterprise solution for Agribusiness which can be customized to the need of any crop, currency and location.
The aim was to build a framework that has hooks for customization and is extensible to any level. The framework design involved the implementation of patterns for best results. The framework was developed as an SDK from underlying .NET Framework, allowing the application developer to extend it and build application on it in different domains. SDK was accompanied with automatic code generation tools for fast and easy application development. Project was developed in house in collaboration and technical guidance from Microsoft India.
Tools & Technology used:
Visual Studio 2003 IDE, Visual Source Safe 6.0, FxCop, Bug Tracker, SQL Server Profiler
.NET Framework 1.1, C#.Net (primary development), VB.Net (for sample creations)
At later stages migration to Visual Studio 2005 (Whidbey), .NET 2.0
Team size: 17 members
My role: Team Member, Software Engineer
My thought process as a Software Engineer:
I had hands on Visual Basic 6.0 and HTML when I joined this project. Visual Studio 2003 and .NET 1.1 was new to me. There was a learning curve. Being enthusiastic, goal always use to be learning and writing code to see running results of it. Successful code on one single form also was a sense of achievement.
At that stage, I had no clue about Software Architecture and its importance. During post-graduation we all learn Software Engineering as a subject but that always remains theoretical. Practical to us is always to write more and more code.
What goes in before you start writing code? What happens after you are done writing your piece of code? What if changes come up? How does thing reach the end customer? Who all should be involved? These and many such remains open questions. But I use to feel on top of the world when on button click of the code that I wrote use to function well. My own limited world of coding.
One fine day, some senior software engineer in the team mentioned we use Singleton Pattern and few more patterns. I was like what’s that? Our technical manager was playing a role of software architect which we realized at a later stage.
Coding standards, naming conventions, static analysis, peer reviews all was practiced as advised. Never I asked about design, architecture, planning and so on. Though we learn many things in subject software engineering but when it comes to practical use, we miss to ask for it.
In the same project I was moved to release and build managing team for some time. I realized the use of concepts like obfuscating, strong naming assemblies, build creation, importance of versioning, infrastructure, EULA, installation requirements, configuration management, source code management, document management and all such things at that point. I learned working on it.
Still, I didn’t ask how all this have taken place? How do we decide on what to be used and when? How do we decide about components and which blocks/components communicate with each other and the communication mechanism for it? Who all plays role? What is the importance of architecture, design and planning and so on…?
Today when I sit back and think, I realize how naïve I was? There are many things mentioned which are result of architectural decisions taken. If I would have understood importance of having architecture and design for that project, I could have done many things in a better way.
I am sure that project had architecture and design in place since it was being developed in collaboration with a team from Microsoft India, it’s just that I never asked for or came across.
Today when I think I can better differentiate that Singleton is more a design pattern than an architectural pattern. I can think of how easier it would have been for me to understand the system if I had ever asked for Software Architecture in place.
But that’s how we are when new to industry.
Take home message:
As an engineer/developer one has a lot to learn.
Ask from the initial stage to the established team members, leads, technical manager about what are the standards being used? What is the architecture? What are the best practices followed?
Be a good listener, observer. Try to grab the best from others.
And final takeaway, Architecture of .NET Framework
Tools and languages may come and go but basics like architecture concepts and programming concepts remains the same.
We have vast exposure, many ways to gain information, open sources, tools and techniques available. Such software can be well developed using latest technologies. With this I would like to conclude here and open some questions for your opinion.
In today’s scenario,
What is your opinion if you are the Software Developer of above project? What would be your reaction and thought process?
What is your opinion if you are the Software Architect of above project? Your opinion on architectural pattern, principles that can be used for above project.
Tools and Technologies that you consider suitable.
Along with answers, do share if you have your Trail Talk as a Developer.
Thank you for reading.
Upcoming Next: Trail2 -> Sr. Software Engineer and Software Architecture on 28th April (Last Thursday of the month).