
SoftwareEngineer++
During my years of experience, I've learned how to learn to code, worked professionally on small, medium-sized projects, and nowadays some enterprise projects. I've learned how to write technically and did some writing for business, and how to assess a subject . I've realized over time that being just a coder is not enough to be a software engineer. You'll need to be Software Engineer plus something. Could be plus another skills for the day today business. Software Engineer plus knowledge in a couple of more business domains or industries as this gives an edge while working in business problems.
I code for food and how it started
Back in 2010 when I started coding professionally it wasn't my first rodeo, I did code before as a hobby, however, you might know that it's not the same. Working as a professional software engineer, or web-developer in my case, means rarely working alone, yet as part of team even a small one.
Over the past 6 years or more the web has seen great deal of changes:
- The rise of a customer-centricity.
- Complex and feature rich SPA web applications.
- Frameworks boosting client-side web-development (e.g., AngularJS, React, BackboneJS, Aurelia ...etc)
- Web and browser technology and surrounding eco-system (e.g., rich-media, web components ...etc)
- Javascript itself took a roller coaster.
- Javascript working outside the browser freely (e.g., cordova, electron ...)
I used to work as a Freelancer web-developer; With every project started, its technology selection mostly all over again, yet I don't worry that much about that. However, the business or industry of the project is something to consider every time. Perhaps some engineers prefer working in Automotive, other prefer telecom, or even working on a specific product as part of a startup a SaaS company or hundreds of choices.
Practice makes perfect
Learning how to code is not enough. I needed to practice for the programming judo to take over my mind. It's all about muscle memory when you're working on a task. This reveals how if how much I'm a master of my craft.
Practicing in long focused coding sessions, wires the brain, synapsis start knowing that a specific task is important by recalling what was learned and practicing it many times.
Something to know, something to forget
Although practice is important and working or practicing the technology gives intuition of to assess other technologies before working with them, and better, it increases the depth of one's knowledge. However, technology tends to be something one forgets about while time passes out. I don't recall the ins and outs of technologies I've used 3 years ago for example, on the other hand, I recall the browser environment, and it's quirks 😉. Although, technology changes, the browser environment stayed almost the same.
Same as the browser environment, the pillars of a well established industry or business domain rarely changes! Yes, It almost doesn't. The kind of modules to implement if we started working on a Retail industry project now or 30 years ago is almost the same. Even with the rise of E-commerce it retained the same ins-and-outs of the retail with some modifications to suit every business case. Yet, in abstraction; It's Warehouse, CRM, checkout and backoffice almost in every project gets modeled. Other industries as far as I know almost the same when you take look at it with an eagle view.
Domain specific and Domain agnostic
The beauty of working on Software projects as a Freelancer; is that I got to experience multiple domains in so short time. I had the chance to absorb key building stones of industries like: Automotive, Manufacturing, Retail, Training, Agriculture, and E-commerce.
At first, it was very exhausting, and time-consuming. After a while and getting used to reading essentials business requirements quickly and then taking a deep dive on edge cases, hidden requirements and non-functional requirements. That's something you practice by time as well because you'll find repeated building blocks that can work between industries. Features like: user IAM (Identity & access management), system notifications and messaging, and "Entity X" management (storage management, warehouse management, fleet management ...etc).
These patterns help us apply what we learned across domains and industries while working on the architecture.
Conclusion
In summary, Being a Software engineer plus another skill or experience in multiple business domains or industries gives additional perspective. It provides an abstract view skill that could help solve business problems in another way. Thinking about it one more time; intelligence is the power to infer from the capacity of one's experience, the more you learn and relate the more you grow!
Thanks for reading, I appreciate your opinions. Let me know what you think and how you define