If you don't want to learn something new every day and improve your work skills, IT is probably not for you. While working in IT, I was fascinated by new technologies and tired of the repetition of "new technologies".
Learning
Literally eternal learning, whether you like it or not. If you don't find time to study on your own, your employer will demand it from you. Regardless of whether you program (dev), test software (test) or manage servers (admin), you have to learn new things. Programming consists of many elements, not only the programming language, there are also algorithms, databases, cloud, there is a lot to learn.
Improvement
Since you have already learned new things, after some time, there will definitely be a newer version of the "Y" tool that you have been using and it will be necessary to improve in this area. Are you sure you know the tool you are using well? When was the last time you read its technical documentation? You can always learn something new and practice with an existing tool, but in a different configuration. You can optimize existing solutions.
New technologies
So, what does it mean to be fascinated with new technologies and tired of the repetition of "new technologies"?
Fascination
The fascination with new technologies was related to their potentially new possibilities. Technology Y was supposed to solve problem Z, but that wasn't always the case. I have always been interested in learning new things and I still am. For me, it is natural that when I need to learn a new technology, I engage 100% in learning it.
I remember when we moved from desktop applications written in Java Swing to web applications available through a browser. The desktop application only required running a ready-made JAR file and maybe knowledge of the MVC pattern. For the web application, it was necessary to learn how servers work, the HTTP protocol, HTML, and new frameworks. In the meantime, low-code and no-code solutions have appeared somewhere, which I wrote about in another article Low-code and No-code – will source code generators replace programmers?
Boredom
Tiredness with new technologies did not result from a lack of willingness to learn new things, but after some time it turned out that everything was similar to each other and worked on similar principles - everything was the same. It is worth noticing recurring patterns and building a solid base for further development based on them.
Changing the database from Oracle to PostgreSQL, I've seen it before, just SQL and something to manage the database. JBoss application server, change to Glassfish, I've already seen it, domains, clusters, data sources, administration panel. Desktop applications in JavaFX instead of Java Swing, I've seen that before, the MVC pattern, actions as callbacks on buttons, okay, it was better here, but I found out about it after some time. I will describe more about frameworks below in the "all the same" section.
All the same
Why do I use the statement that it's all the same? The knowledge base and technological solutions in IT are relatively unchanged. The elements that change are the names and versions of tools and frameworks that use these basic solutions. I will deliberately omit AI, which has caused quite a stir in IT, but probably over time AI will become the basis for other IT solutions.
Basic technologies and solutions
Below, I have described, in a very simplified way, some basic technologies/solutions:
- The basis for most web applications when it comes to client-server communication is the HTTP protocol.
- In terms of the visual side, the basis is HTML, Javascript and CSS styles.
- Data storage and access are, in most cases, databases regardless of the type (SQL, NoSQL).
- Here we distinguish tables, queries and CRUD operations.
- Both web applications and databases must run on some server, and here you need to know the basics of server administration.
- Network communication e.g. IP address and port.
The basis for Java-based solutions
What is the foundation for Java technologies/solutions?
- JDBC (Java Database Connectivity) API – communication with any relational database.
JDBC (Java Database Connectivity) API – Official Documentation
The JDBC™ API provides programmatic access to relational data from the Java™ programming language. Źródło: https://docs.oracle.com/javase/tutorial/jdbc/overview/index.html
Hibernate ORM uses JDBC
Hibernate is concerned with data persistence as it applies to relational databases (via JDBC) Źródło: https://hibernate.org/orm/
- Java/Jakarta Servlet API – client-server communication.
Java/Jakarta Servlet API – Official Documentation
A servlet is a Java programming language class that is used to extend the capabilities of servers that host applications accessed by means of a request-response programming model. Źródło: https://docs.oracle.com/javaee/5/tutorial/doc/bnafe.html
SpringMVC uses Java/Jakarta Servlet
This part of the documentation covers support for Servlet-stack web applications built on the Servlet API and deployed to Servlet containers. Individual chapters include Spring MVC […] Źródło: https://docs.spring.io/spring-framework/reference/web.html
- HTML and ExpressionLanguage (EL) – "backend-frontend data exchange and vice versa."
Expression language (EL) is commonly used in web development using frameworks. Where expressions in curly braces {} are processed and their results are rendered in the UI. Expression language (EL) is also used in front-end frameworks and libraries as a way to embed dynamic data or expressions in HTML-like syntax – <h1>Hello, ${name}</h1>
Ad. 1. Most tools for communicating with a Java database use the JDBC API, e.g.: Hibernate, MyBatis, Jdbi, Spring JDBC Template.
Ad. 2. Regardless of the selected Java web framework, the basis will be Java/Jakarta Servlet API, e.g.: Thymeleaf, Tapestry, Play Framework and many others.
Ad. 3. Many frameworks and libraries use Expression Language (EL), e.g. Thymeleaf or have their own separate EL e.g. Spring Expression Language (SpEL).
Something different
There have been two revolutions during my work as a Java programmer.
- Switching from Java EE to Spring Framework. I wrote why it's so important in the article We use "old" frameworks - Java EE vs. Spring Framework – David vs. Goliath.
- Changing IDE from Eclipse IDE to IntelliJ IDEA.
Summary
I hope that in today's rapidly changing technological times, no one needs to be convinced that adaptation through learning is the key to success. So I'm not just complaining, I'm grateful for the process I went through with new technologies in the IT world, specifically related to programming. I know what technical base I need to be able to switch relatively smoothly from solution Y to the new solution Z - "because everything is the same" 😉
Thumbnail background photo by Tom Fisk from www.paxels.com edited in GIMP.