Discussion
· Aug 16, 2022

[Off-Topic] Deep questions

Hello community,

First of all thanks for reading this post:

Because of you are more experienced, pragmatic, and have a lot of knowledge and good know-how; please consider to read and answer some question, if you would like:

Why did you choose to become a software engineer / developer?

How and when did you start to generate a "flow state of mind" during your career?

What are recommend habits inside and outside, during you own time and during your work time, to be focused during you coding session and daily tasks?

 

📍🙏📌Thanks for reading and answering

Discussion (11)2
Log in or sign up to continue

It's funny you raise that subject now, as I just finished writing my "technologic bio" for my sons.
I won't translate the whole booklet but just pick out some highlights, 

#1) Why did you choose to become a software engineer / developer?

To become Engineer was an almost a genetic determination. I could roll back my ancestors down
to 1600 to find a repeating pattern of technical construction in wood, stone, metal, ...
and started with studying electronics. Software just happened by consequence and found its
summit by a complete operating system, with a distributed  M-database, interpreter, ... on VAX.

#2) How and when did you start to generate a "flow state of mind" during your career?

As a boy I was reading Walt Disney's comics. "Gyro Gearloose" was the most impressive
character to me and his statement "An engineer can invent everything" just caught me.
I was reading the German translation that added some extra fun:  "Dem Intschinör ist nix zu schwör!".
It became my personal mission statement:  "For a real engineer ‘IMPOSSIBLE’ doesn’t exist !"
It became a red trace throughout my whole life. And the epigenetic 'fighter gen' inherited from my
first ancestor surviving the 30years war with honors formed me to never give up.  

#3)What are recommended habits inside and outside, during you own time and during
your work time, to be focused during your coding session and daily tasks?

  • For software development, you should understand the language you use down to its darkest corner. You have to be as fluent as in a foreign language you speak. You know that you are there if you use it also in your dreams.
  • Let your creativity roll on and seek to have fun with it to find the 'impossible' solution, and forget about thinking: "this can never happen!" This is just an illusion.
  • Don't accept stops by rules that are not yours. I've seen so many nonsense measurements like the number of lines by month. In the first years even the number of punched cards (!) length of code, length of lines, number of comment lines by method, sick naming conventions, .. 
  • find your solution first and make it fast and stable and leave the polishing to please Code Quality and similar tools that will never follow your mind to the  "coding clerks"  (minor qualified engineers) to please controllers and administrators and managers who are not able to follow your great ideas. 
  • Finally, share your oeuvre with a qualified software engineer that you trust, to add the minimum required comments and explanations triggered by his questions. 
  • If your employer dislikes your style., leave it. Working against your own fire of creativity and your own fun at working can never be compensated by money. I did it for some short years and was not happy at work at all. I fought for my success and had my achievements. But fun at work came back only until returned to software engineering.  

#1) Why did you choose to become a software engineer / developer?

I was at University when introduced to COBOL. Found it really easy and natural while my friends appeared to struggle. Some of them offered to pay me to write their coursework. The first program I sold was to the nephew of the manager of a Scottish pop group (The Bay City Rollers). He gave me a 3 month supply of potatoes for one program! When I found I could make an easy living writing code there was no looking back. (And I haven't been paid in potatoes since I was a student)

#2) How and when did you start to generate a "flow state of mind" during your career?

We were taught Jackson Structured Programming at Uni. A short time drawing on a large sheet of paper how a program should flow works wonders for getting it right first time. (Right first time saves money). If you start off as you mean to go on it very quickly becomes the natural way to do things. I don't use JSP now but its basic principles are the basis for how my programming mind thinks. I'd say you should pick a programming methodology and stick to it until you are competent. As @Robert Cemper said, learn your language fluently.
 

#3)What are recommended habits inside and outside, during you own time and during
your work time, to be focused during your coding session and daily tasks?

Write re-useable code that can be called to do small or big repetitive tasks.

Don't try to write anything that is all things to all people. If you write code well then it should be easy to add new functionality.

When you are happy that your code is doing the job, don't seek the approval of someone with a big ego - they will try to make you re-write it. And related to this, if someone else writes code that works yet you don't understand it realise that it's your time to learn, don't try to make them change it.

Comment your code then go back and re-read it the next day. If it doesn't make sense to you then it won't make sense to anyone else. Write the gist of a program at the top of the code.

Your code is going to have your name on it for years. Make it a good advert for your skills.

If you find something repetitive and/or annoying, automate it. It might cost you a couple of hours in the short term but in the long term it will save you years.

Don't allow yourself to be distracted by valueless tripe while at work (eg social media)

Find a way to make things fun and enjoy yourself.

Hi. Interesting topic.

Why did you choose to become a software engineer / developer?

Always had an interest in science and tech growing up. Introduced to programming at school and enjoyed it. When looking for a job, there was a programming one, so I chose it. And never looked back.

How and when did you start to generate a "flow state of mind" during your career?

- Again, always had it, I think. Give me a good programming problem and I can lose hours without noticing.

What are recommend habits inside and outside, during you own time and during your work time, to be focused during you coding session and daily tasks?

- As I'm lucky and it "just happens" I'm not sure I'm a good source of ideas on this. But at work I find it helps to try to stop other things breaking my concentration. So I will "clear the decks": very little in my email in tray (it all goes into "later" or is set up as a task, or done, or deleted) and all big things to do are recorded as tasks, and scheduled, so that I don't have that "I must remember to do x" popping into my head.

The hard part is avoiding interruptions like new emails and chats from colleagues. Sometimes I just don't notice them, though, as I'm in "flow". So the problem is the other way around: missing important, urgent stuff! Best to find/allocate time when I'm not expected to respond quickly. Often I split my day into two: first I'll do all the other stuff like emails, admin, training, meetings, etc. and as a reward, play with code later. :-)

What are recommend habits inside and outside, during you own time and during your work time, to be focused during you coding session and daily tasks?

 

My habit/advice/etc. and something that really helped me is a sincere acceptance of the fact long uninterrupted stretches of time do not exist. 

Stop trying to carve out an entire week for a new product feature or a day to prepare a perfect demo. The best you can get is half an hour between meetings.

After I accepted that, planning and accomplishing work (and anything else really) became much more manageable. And much less frustrating as I don't expect to complete any task uninterrupted by something else. 

To do that, first, I split any task into 15-minute-to-half-hour chunks. For example, if I'm writing code, first I just create stubs for all the parts (usually methods and classes), beginning to end, even if I don't know how they should be implemented. Each method is one or several chunks. After that, I start on a chunk: implementing one method I know for sure. If I have no idea how anything works at all, I'll implement invocation arguments/objects and so on. If still no idea: split one chunk into several and try again.

It works out for almost everything. Writing articles, I first write a title and a list of sections. Usually, I have ten or more of these stubs lying around, and then inspiration strikes me - why not fill one section? Or several if there's time. 

 

Another trick is leaving the day's last item unfinished. When I'm close to eob and actually see how to complete something, I often leave it as a task to start the next day. This way, I know where to start and what to do in the morning. And I can score a win pretty much immediately.