Google Differences between Software Engineer and Web Developer, you will get plenty of search results highlighting the differences. This post is specifically for experienced Engineers trying to understand the Web Development Paradigm.
In Engineering, we start with 0 knowledge in the subject matter. We do some study. We practice. We learn the general concepts and while we practice, we gain our specialty. We focus to become an expert. We pivot and expand our knowledge domain, typical adjacent to our experience and expertise. Web Developer is fairly similar. However, there are some minor differences that I think cause significant differences:
General concept and knowledge are vast to grasp
Technology and Methodology are work in progress
Knowledge sharing differences: StackOverflow
Information Overload
For anyone new to web development, it’s amazing how much there is to learn. It’s a Client/Server architecture with multiple competing stacks and supporting technologies, tools, methodologies. Add the complexity of Conway’s law and aggressive history. How much does one need to learn? Where to start? It’s overwhelming!
Server side depends on the stack and supporting platform/technologies/services.
LAMP (Linux, Apache, MySQL, PHP)
Node.js
Django/Python
Windows, IIS, MSSQL, ASP.NET CORE/C#
…
Then, there are frameworks/libraries to build help build client side web application:
React
Angular
Bootstrap
JQuery
AJAX
And, endless of web services, and cloud services… So… one does not expect to know all and becomes expert in all. But we should recognize they are all trying to achieve the same thing, which is a website.
Everything is Work In Progress
Best practices today could be the worst way practice tomorrow. That’s the state of web development. There are always new trendy code, framework that some company is adopting. But the downside is that it might not get anywhere or something better came along and the mess just kept building up. That’s why I recommend people to chose a stack that is going to be supported by one of the top tier company such as Google, Microsoft, Facebook. But keep an open mind that things might change and be hungry to learn new things.
KNOWLEDGE SHARING
Web Development knowledge sharing is very active. Quality tutorials are everywhere.
If you have an issue, you can most likely find some answer online. Mind the quality of the answer might not be great. Stackoverflow is your friend.
Also, take consideration of versioning. In typical engineering, we have usually slower churn rate, usually by phases. Web development can happen as fast as 0 day with the adoption of continuous integration and deployment.
Why, What, Who, When, Where and How. The choices and Trade-offs that we must make. While I prefer certain way, I understand there are values on the other side. I believe we shouldn’t be ignorant of staying in the same silo and our comfort zone. We should always explore new/different things. Try to understand from different perspective. Those are the basic premises of how I pick my development environment. While there are many redundancies, but getting used to these platforms helps when it’s most unexpected.
In Part I, I’ll highlight my choices, and in subsequent posts, I’ll have more targeted environment for different kind of developers. I’ll have separate article on hardware.
OS:
Windows 10
MacOS X
Others: Chromebuntu
Mac OS X is primary for iOS development and some Android development. Chromebuntu is for Android platform development.
VS is obvious choice for ASP.NET CORE development. I use VSCode for react/client side because it’s lightweight. Xcode for iOS. Android Studio for Android. Unity for games. Eclipse for Java/Android (before Android Studios). UltraEdit is a great text editor on PC. TextEdit, Notepad, Pico are just simple editors that I can use without affecting other’s dev environment.
Source Control/CICD:
Git
Visual Studios Team Service
Older: Subversion, Perforce
Git is the way to go. VS, VSCode, Xcode, Android Studios all have integration. I host on Azure Devops. (Maybe github in the future)
Debugging:
Fiddler
Lauterbach Trace32 (JTAG)
SQLite Manager (FireFox extension), MySQL Workbench, Azure Storage Explorer, Azure Data Studio
Chrome, FireFox, Edge
Beyond Compare (amazing source compare tool)
Diagnostic Logs, Trace logs, Kernel logs,… serial port dump, led light
cmd, console, Kudu, (new) Windows Terminal
Content:
Office Suites (Excel, PowerPoint, OneNote, Word, Outlook, Sway, Visio, SharePoint)